华为手机居然也能玩光追游戏?

      最后更新:2020-03-08 12:13:59 手机定位技术交流文章

      在去年底的软件绿色联盟开发者大会上,华为EMUI和网易宣布在游戏《遇见冷水》中实现光线追踪渲染,即在手机游戏中实现实时光线追踪计算这听起来是件大事。虽然光线跟踪的硬件实现可以追溯到20世纪90年代,并且在今天的3D动画作品和电脑游戏中很常见,但是实时光线跟踪在台式电脑平台上才刚刚开始,现在手机已经可以使用了?“遭遇冷水”游戏中光线追踪开启前后

      的比较。

      我们在去年的想象力新产品发布报告中提到了

      。资料来源:英伟达。游戏“古墓丽影:古墓丽影”截图

      在Avida的上面例子中,关闭和打开光线跟踪的区别(Avida称其自己的光线跟踪技术为RTX)。这两幅图像的主要区别在于阴影的呈现只有当光影关系被认为是角色的脚和身体的所有部分时,这个场景才显得自然。如果阴影计算不完整,那么字符就像在图片中浮动。

      来源:英伟达,游戏“战场V”的截图

      是如上图的一个倒影。差别很明显,所以没必要多谈。然而,事实上,传统的光栅化方案仍然可以产生反射效果,但是其开发复杂度将会明显更高,并且经常会有缺陷,包括屏幕之外的反射将不会被添加。在上面的场景中,一旦火焰在屏幕显示以外的区域,光栅化通常不会在车外的反射效果中显示出来。

      在这个问题上,一个更有趣的想法是,当玩诸如从主视角射击之类的竞争性游戏时,如果一个敌人在窗户下偷东西,玩家躲在角落里,仍然可以从某个角度从窗户玻璃上看到隐形的敌人——这也是游戏的技术插件

      来源:想象

      在上面的图像中,通过左边的传统光栅化方法计算的阴影似乎是相当合适的-事实上,由于光栅化方案的过程问题,在所产生的阴影中经常出现各种失真(例如锯齿)。再加上计算阴影边缘模糊的效果——这种所谓的半影效果对于光栅化来说已经非常困难了。阴影的半透明性就像右边的一样,很难光栅化,但是光线跟踪要简单得多。

      简单来说,光线跟踪是在生成3D场景的特定阶段使用的技术。这种技术可以模拟现实世界中的光的行为。使用光线跟踪,有必要为开发人员提供开发工具,并产生更真实的视觉效果。

      光线跟踪已广泛应用于电影行业,电影所需的光线跟踪将使用专业的图形计算工作站,这可能需要几个月的时间来渲染最终图像。这对于实时视频游戏来说是不现实的。一方面,游戏需要实时产生至少30帧每秒。另一方面,光线追踪对于图形计算的性能要求也是疯狂的。在过去,不可能使用图形卡来处理3D游戏的实时光线跟踪。

      如果我们只从字面上理解“光线跟踪”,处理器需要跟踪所有光源发出的光,场景中不同的物体表面也会反射、吸收和折射来自光源的光,实现这些效果的不同材料表面的特性是不同的,需要计算数千条光线。因此,光线追踪器的性能指标必须达到每秒百万到数千万条光线的计算能力,这相当于每秒像素级的图形处理器像素填充率,以及每秒像素级的计算能力。例如,和上面的图片一样,最初的场景实际上是用相机拍摄的,并且增强现实在场景中添加了一辆汽车。为了使汽车更真实,我们必须让汽车在光影方面融入场景。当然,该应用的要求更高,因为摄像机需要分析场景的光分布,并将各种光因素添加到虚拟汽车的渲染中。可以想象,除了

      之外,光线跟踪的应用还与汽车电子有关——通过摄像头采集的数据,观察周围的图像,并考虑光线和阴影,这样中央控制面板显示的图像不仅更加真实,而且易于估计和判断障碍物的距离。

      主流光线追踪实现了

      相对硬核3A的杰作,玩家应该清楚上面提到的反射、阴影、折射等效果。不是光线追踪独有的。上述光栅化有时可以实现这样的效果。那么我们不妨简单地谈谈什么是光栅化,什么是光线跟踪

      光栅化光栅渲染过程本质上是一种在2D屏幕上显示3D对象的技术3D对象是一堆不同形状和大小的三角形或多边形三角形的角度或顶点包含很多信息,包括它在空间、颜色、地图、法线等方面的位置。3D模型的这些三角形需要转换成像素显示在屏幕上。这是光栅化的过程每个像素被赋予一个初始颜色值——这个值来自存储在三角形顶点中的数据然后像素将被进一步处理或着色,例如基于场景中的光源改变它们的颜色,并应用一个或多个地图来最终生成像素颜色。

      GPU渲染流水线

      这是一种相对简单的描述方式光栅化仅位于图形处理器渲染阶段的相对后向位置。这个大步骤也可以分为许多详细的处理阶段,包括三角形设置、三角形遍历、像素着色和输出合并。

      实现最终输出合并的功能单元称为ROP(光栅操作单元)在这一阶段,根据存储在z-buffer中的深度信息(深度缓冲区,z坐标的深度值),判断颜色缓冲区中的颜色值是否需要更新——换句话说,判断场景中对象的可见性,例如一个对象是否被另一个对象阻挡(在像素级),从而判断当前像素的缓冲区是否需要更新,计算相应图元的颜色,并更新用于像素着色的缓冲区。

      来源:Nvidia

      左上角图像是应用传统阴影贴图后的光栅化效果。它看起来不错,但是它对阴影边缘的模糊处理过于一致,并且它的接触硬化实际上是有问题的。然而,在后面几页中通过光线跟踪获得的阴影不需要应用阴影贴图,并且可以模拟更自然的阴影接触硬化。例如,这些页面应用不同的锥角

      来处理阴影。就光栅化而言,需要从每个光源的角度进行渲染,然后存储在纹理中,然后在照明阶段投影到场景本身(这应该是几何处理的顶点着色阶段)大多数光栅化过程还需要支持某些类型的阴影贴图,例如用于全向光的立方体贴图阴影和用于大型户外场景

      的级联阴影。光线追踪是什么样的?一般来说,它是模拟场景和对象的照明,并按照自然法则正确渲染反射、折射、阴影和间接照明。然而,当前的主流光线跟踪算法并没有从光源的角度“跟踪”每一条光线,而是从我们的观察角度出发,完全相反

      假设相机正在拍摄3D场景并发出光线(线)。该光线从该摄像机开始,通过2D视觉平面(即,对应于屏幕的像素平面)进入3D场景。这种光线将击中场景中物体的表面,并最终追踪光源。

      在这个过程中,光线可能从一个物体反射到另一个物体,形成反射;或者被物体阻挡,形成阴影;也有可能通过透明或半透明的物体形成折射。物体表面和光线的交点具有相应的颜色和照明信息,因此光线穿过的像素也具有颜色和亮度级信息。

      “反向跟踪”方案比从多个光源角度的正向跟踪更有效尽管如此,它对计算能力的需求非常贪婪,这与进入场景的光线数量有很大关系,并且通过考虑反射和折射产生更多的光线(所谓的导数光线)。至于有多少光线将“发射”到场景中,需要考虑光线跟踪对象的类型、GPU处理能力、屏幕分辨率以及通过每个像素发射的光线数量。


      当然,在具体的实现中有不同的技术和优化方案,用于加速射线与图元相交的检测并尽可能减少射线的数量因为如果我们真的查看场景中每个光线和每个图元的交点,现有技术的硬件资源是不允许的。因此,一个加速结构,如包围体层次(BVH)诞生了

      在此简要介绍一下BVH技术BVH是一个树形结构,包括许多层次包围盒。这些框围绕它们自己或不同数量的场景几何体边界框越向外,它包含的元素就越原始。较小的边界框包含较少的几何图形上图显示了BVH结构。较大的边界框是树结构中较高层的节点,然后向下遍历较小的框。每个节点都被一个包围盒包围,包围盒又包围了许多子节点及其包围盒。

      的每条射线都应用BVH结构——整个过程首先检测该射线的根节点包围盒,它是上图中的兔子头,被一个相对较大的包围盒根节点包围;然后根据树结构检测子节点,即哪些包围盒与被测光线有相交关系

      采用这种方案来检测光线与图元的相交,可以大大减少工作量。没有必要检测光线和场景中每个图元的相交,而只需在树结构中的每一层检测数量少得多的边界框,直到相应的光线最终到达末端节点(包括三角形图元)

      还需要在第一次渲染场景之前构建一个BVH建筑。在许多情况下,图片的一帧和下一帧之间的变化不是特别大,因此基于这些变化修改现有的BVH结构(BVH改装)可以节省计算资源,而无需构建全新的BVH结构。

      那么,专门关注光线跟踪技术的图灵体系结构的硬件水平有什么特别之处?根据Avida和Imagine的实际实施计划,实时光线跟踪的现有硬件实现非常相似。

      当实现某项技术时,需要很高的计算和访问能力,并且经常使用,为了实现计算能力和效率的双重快速提高,通常需要考虑专有的加速硬件或单元。为了响应图灵的光线追踪加速,Avida引入了一种特殊的硬件单元——RT内核。每个流式多处理器都包括实时内核其功能是加快上述BVH遍历、射线和三角形的相交检测、去噪和滤波等。

      RT内核将自动遍历BVH盒;BVH大楼、改装等功能都是由司机操作的。光线由着色器单元生成和着色。


      NVIDIA早期的Pacal(左)和Turing(右)架构在没有专用加速硬件(如GTX显卡)的情况下实现光线跟踪差异

      ,BVH遍历过程主要由着色器操作执行。对于每条光线,携带数千个指令槽,并且检测边界框的相交,直到最终获得像素颜色值因此,如果是一个完整的场景,光是这样的光线跟踪工作就已经淹没了一般的GPU计算资源。

      图灵架构的实时内核致力于这项任务。这个专用核心由两个单元组成,其中一个执行包围盒检测,另一个执行光线和三角形相交检测。然后SM的其他硬件可以用于其他图形计算任务。

      Nvidia提到,在比较两种方案的计算能力时,旧的Pascal“软件模拟”方案实现的性能水平约为1.1千兆射线/秒(每秒10亿射线)或10万亿次/千兆射线(每秒10亿射线的浮点运算)。使用RT核心的图灵可以达到每秒10+千兆射线,这在射线追踪中是10倍的速度。这两个值之间的具体比较是GTX 1080Ti和RTX 2080Ti显卡。

      专用于光线跟踪的想象力RTU单元

      专用于光线跟踪的想象力的硬件实现似乎更早。它可以追溯到PowerVR系列6时代,当时图形处理器体系结构被称为向导想象力似乎在2014年或更早开始关注光线追踪。在


      部分的末尾,值得一提的是,在当前的计算水平上,光栅化和光线跟踪不能相互替代。至少Avida和Imagination的策略是让两者在GPU计算中共存,称为“混合渲染管道”。毕竟,光线追踪仍然需要太多的计算能力。光栅化在使用z缓冲区判断对象的可见性方面仍然很快,并且还可以在光线跟踪过程中进行一些初级光线投射阶段。光线跟踪用于发射二次光线,以校正反射、折射和阴影。

      似乎光栅化仍然是场景的主要组成部分,因此不能说光栅渲染已经被消除。

      ,那么“迎冷水”的光线跟踪是什么?

      根据我们查阅的数据,其他主要市场参与者没有或没有完全在硬件层面为实时光线跟踪提供特别支持,包括AMD、Arm等。除了Avida和想象力,高通公司的肾上腺素似乎正在PBR支持的最新产品中出现。这可能与不同GPU供应商的开发策略及其GPU渲染架构本身的特征有关。

      至少在麒麟SoC的马里图形处理器和现代Arm的双面架构中,没有用于光线跟踪的专用硬件加速单元。对于英伟达和想象力提出的“软件模拟”的光线追踪方案,使用着色器进行计算,推测华为在《遭遇冷水》中实现光线追踪特效的方案它可以部分使用光线跟踪来模拟特殊效果,如阴影、反射、折射等。然而,考虑到移动平台的功耗和计算能力限制,并且由GPU的通用计算单元执行,效果应该相对简单

      ,所以实际的联合发行商是华为EMUI,它可能与海斯、麒麟芯片和马里图形处理器无关。然而,即使在软件层面,即特定应用的推广,对光线跟踪技术的发展也有相当大的影响。

      想象力已经提供了与光线跟踪相关的知识产权授权。在去年的GTC中国大会上,黄仁勋还展示了光线追踪版的《我的世界》,它确实提供了比原版[更为美丽的游戏画面实时光线追踪在民用图形计算领域变得流行只是时间问题。

      参考资料来源:

      [1]畅想A系列图形处理器新架构分析:高通肾上腺素和爱马仕中国

      [2]金属光线跟踪-苹果开发人员

      [3]光线跟踪照明-畅想

      [4] SGRT:用于实时光线跟踪的移动图形处理器架构

      [5]光线跟踪-NVIDIA-evolife.cn

      [7] gpu渲染管道-GPU渲染管道简介-Computer Arch

      [8]实时照明的混合渲染:光线跟踪与光栅化-想象

      [9]NVIDIA TULING GPU架构-NVIDIA

      [10]NVIDIA Annouces RTX技术:实时光线跟踪加速用于Volta GPUs和更高版本-AnandTech

      [199...而未来是现在——想象

      13]英伟达的五个黄金岁月,这是“没有一家芯片公司”——EE时报中国56+

      作者:黄

      编辑:ruffy刘

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/528.html

          热门文章

          文章分类