关于元宇宙链游系统开发游戏技术语言方案(成熟理念)

简介: 关于元宇宙链游系统开发游戏技术语言方案(成熟理念)

  元宇宙主要有以下几项核心技术:一是扩展现实技术,包括VR和AR。扩展现实技术可以提供沉浸式的体验,可以解决手机解决不了的问题;二是数字孪生,能够把现实世界镜像到虚拟世界里面去。这也意味着在元宇宙里面,我们可以看到很多自己的虚拟分身;三是用区块链来搭建经济体系。

  而forward light是以这种方式绘制的:

  对每一个场景中的Mesh,对每一个灯光,将其绘制到屏幕上

  最直接的差别是,对于数量为M的Mesh,数量为L的光源而言,deferred light的draw call次数为O(M+L),而forward light为O(ML)。

  在2d光照中也可以用同样的概念去理解,可以用deferred及forward两种不同的方式去实现。

  我最终选择了deferred的方式去实现,像这样:

  对每一个光源,如果没有被剔除(在摄像机外),则将其光照绘制到一个等同屏幕比例的光照贴图上。

  在绘制场景完中每一个精灵(Sprite)/粒子/骨骼动画以后,将光照贴图以一个quad mesh的方式绘制到屏幕上,使用相乘的blend方式。

  这样可以保证我可以方便地在任意一个已开发到一定复杂度的游戏中加入这个光照系统,而无需改动场景中原来任意Renderer的绘制Shader。

  同时为了光照能够让场景中的物体呈现不同的细节,我们可以很方便地加入法线贴图,具体可以参考这篇文章。

  因为光源的强度会随距离衰减,我们为光照Mesh中不同的顶点赋值不同的颜色值使之中心最亮,边缘最暗(2d中的光源,线性衰减效果已经足够好)。

  其中获取周围遮挡点的实现可以参考:

  public class CircleHitPoint{

  public float radius;

  public LayerMask colliderLayer;

  public float binaryMaxDegree=5;

  public int rayCount;

  public Vector2 center;

  public struct HitInfo{

  public RaycastHit2D hit2D;

  public float angle;

  public HitInfo(RaycastHit2D hit2D,float angle)

  {

  this.hit2D=hit2D;

  this.angle=angle;

  }

  public Vector2 Position(Vector2 center,float radius){

  if(hit2D){

  return hit2D.point;

  }

  else{

  return center+CircleHitPoint.Degree2Dir(angle)*radius;

  }

  }

  }

  private static Vector2 Degree2Dir(float degree){

  float rayRad=Mathf.Deg2Rad*degree;

  Vector2 dir=new Vector2(Mathf.Cos(rayRad),Mathf.Sin(rayRad));

  return dir;

  }

  private RaycastHit2D AngleRayCast(float angle){

  var rayDir=Degree2Dir(angle);

  var hit=Physics2D.Raycast(center,rayDir,radius,colliderLayer);

  return hit;

  }

相关文章
|
人工智能 机器人 Shell
【shell】shell字符串操作(声明、长度、拼接、切片、转换、替换等操作)
【shell】shell字符串操作(声明、长度、拼接、切片、转换、替换等操作)
|
安全 Java PHP
PHP/JAVA交易所系统开发(成熟案例)丨需求步骤丨指南详细丨方案逻辑丨逻辑教程丨源码功能
An exchange refers to an institution or platform that provides a centralized market for buying and selling transactions, where participants can trade various assets, such as securities, commodities, cryptocurrencies, etc. Exchanges provide market infrastructure and rules to facilitate compliant, saf
|
人工智能 自动驾驶 vr&ar
探索GPU算力平台的创新应用:从游戏到自动驾驶的跨越
【8月更文第5天】本文探讨了GPU(图形处理器)在现代计算中的角色转变,从最初的图形渲染到如今成为人工智能和高性能计算的重要组成部分。我们将通过几个具体的案例研究,包括游戏渲染、虚拟现实(VR)以及自动驾驶系统,来展示GPU是如何推动这些领域的进步和发展。
297 1
|
缓存 监控 大数据
构建高可用AnalyticDB集群:最佳实践
【10月更文挑战第25天】在大数据时代,数据仓库和分析平台的高可用性变得尤为重要。作为阿里巴巴推出的一款完全托管的PB级实时数据仓库服务,AnalyticDB(ADB)凭借其高性能、易扩展和高可用的特点,成为众多企业的首选。本文将从我个人的角度出发,分享如何构建和维护高可用性的AnalyticDB集群,确保系统在各种情况下都能稳定运行。
169 0
|
Prometheus 监控 Cloud Native
基于prometheus的微服务指标监控
基于prometheus的微服务指标监控
|
SQL 缓存 Java
MyBatis系列
MyBatis系列
158 4
|
供应链 安全 物联网
未来交织:新兴技术趋势与跨领域应用展望
【4月更文挑战第27天】 随着科技的不断进步,新兴技术如区块链、物联网(IoT)、和虚拟现实(VR)正迅速融入我们的生活和工作中。这些技术不仅各自发展迅猛,而且相互之间的融合预示着一场技术革命的到来。本文将探讨这些技术的发展趋势,分析它们在不同领域的应用前景,并讨论它们如何联合作用,推动社会向智能化、去中心化和沉浸式体验的方向演进。
|
设计模式 C#
36.c#:如何设置MDL窗口
36.c#:如何设置MDL窗口
130 1
|
存储 算法
回溯算法:排列与组合详解
回溯算法,本质上是一种穷举算法,属于暴力搜索算法的一种。它虽然可以使用剪枝进行优化,仍不高效,但却实用。它往往能够解决可以抽象成树形结构的问题,亦可以认为是使用 K 层 for循环实现搜索的问题。
383 0
回溯算法:排列与组合详解
|
小程序 应用服务中间件 网络安全
老板深夜打电话给我,“赶紧看下,网站SSL证书要过期了”
老板深夜打电话给我,“赶紧看下,网站SSL证书要过期了”
582 0
老板深夜打电话给我,“赶紧看下,网站SSL证书要过期了”