2018年,还不是AI之光的英伟达已经在“挖矿”与“游戏”之间反复横跳许久。那年老黄带着Geforce RTX20系显卡来了。当时消费者关注的焦点除了能不能买到原价显卡外,还有一项技术引人注目,那就是光线追踪。
光线追踪技术的问世,直接让玩家的游戏体验跃升了一个层级。逼真,逼真,还是逼真!这是游戏应用光追技术之后玩家发出的最多感叹。
光线追踪原理 图源:英伟达
彼时光追之惊叹,更多的还是在于其对硬件要求的苛刻。
初代光线追可谓是“硬件杀手”。只要开启这项功能,从2090到2060所有显卡的游戏帧数均暴降半数以上,众生平等。直到一年之后,英伟达推出RTX30系列显卡,让光线追踪技术更新到下一时代,同时搭配了DLSS2.0技术,才让光追真正成为人人用得上的功能。
这个“杀手”其实是一种算法,一般的GPU就可以运行它来渲染图像。不过正如同ASIC性能对比普通CPU一样,将算法刻录成硬件能够极大的提升程序运行速度,“专人办专事”才能提升效率。20系显卡搭载的光线追踪专用核心RT-Core,让显卡渲染光追图像不再局限于“单张图片”领域,更快的处理速度让显卡拥有了渲染高帧率游戏的能力。AMD则“摸着英伟达过河”,在RX6000系列中推出AMD自己的光线追踪技术,其效果与初代英伟达光追持平(不怎么好用)。
如今的英伟达RTX40系显卡,虽然性能较上代有了大幅度提升,但“光线追踪”这项功能仍旧像是显卡中居住的怪兽,疯狂吞噬着有限的显卡算力。在满足算力提升的同时,RTX4090显卡的功耗也达到了恐怖的450W,网友戏称“花2万买电暖气”。
如果基于电脑的光追情况,有人提出:“我要实现在移动端的硬件光追!”,怕不是所有人都以为他疯了!在手上抱一台“电暖气”可不是什么有趣的事情。但事实上,在手机上用光线追踪,已经成为现实。
光线追踪很难吗?
什么是光线追踪?光线追踪(Ray-tracing)是一项在视频或游戏中绘制逼真图形的复杂技术。它利用算法对光线进行建模,模拟它从射出到多次反射后的全部路径,来实现对真实世界的模仿。
看到对光线模拟,你大概就能明白了,只有模拟数量庞大的光线路径,才能达到与现实世界类似的效果,也意味着对GPU算力需求的爆炸增长。也正是由于完整运算所有路径十分消耗运算资源,因此现有光线追踪技术仅运算“目所能及”的光线路径。
其实光线追踪的概念出现的很早。1968年光线追踪的概念就被提出,起初它是为了帮助美国国防部研究伽马射线辐射。1979 年,计算机学家、电气工程师Turner Whitted在贝尔实验室担任工程师时制作了一部名为The Compleat Angler的递归光线追踪电影,让他成为了第一个展示递归光线追踪的镜面反射和半透明物体折射的人。后来,他的论文引导了更多人从事光线追踪研究,让计算机图像更加真实。
时间到了2000年前后,光线追踪开始被用于电影特效的制作,就是那个时候,英伟达与AMD的显卡开始被用来硬件加速光线追踪的渲染。为什么电影行业能这样做,原因不外乎有两个:一是时间,特效公司会采用离线光线追踪,可以一帧一帧渲染图像;二是钱,特效工作室会使用到渲染农场,相当于一个个渲染集群服务器在协同工作。彼时的渲染,需要花费上百台服务器专用GPU同时工作半小时以上才能渲染好1帧画面。如果将光线追踪应用到游戏上,就需要至少每秒执行这个渲染30-60次,这对硬件算力的需求量简直不可想象。
在应用光线追踪之前,GPU中的图形算法都依靠“光栅化”实现。光栅化将图形和基元从三个维度转换为显示器像素的二维网格。它依赖于着色器来描绘真实世界的光照,游戏开发者不得不使用光照计算算法来加强场景中的视觉效果。
CPU将图形生成数据交付GPU后,流处理器会将所需要的模型依次进行光栅化,图像生成之前GPU只会调用一次模型数据。这种方法能以最低的计算成本将3D图像构建出来,但在局部效果中,例如反射、阴影的生成上效果不佳。关键的一点,它没法和其他物体交互,不会在镜子或者地板上反射,也不会在玻璃上穿透。该方法几乎无法模拟不同物体之间的光效折射,这也是此前游戏画面无法媲美真实场景的关键原因。
光线追踪的方法则是通过对光线进行并行化处理,除光线外的任何物体都需要在光线追踪算法中递归运算。这种算法,让光线从相机射出而不是进入相机,它似乎是违反直觉的,但采用这种方法可以让计算效率提升很多数量级,因为只有进入眼镜的光线才能被观测到。
光栅化与光线追踪对比 图源:英伟达
应用光线追踪之后,画面效果好了,但这也意味着算法复杂度呈现指数级增长。这是因为GPU模拟折射、散射等场景时需要重新计算各个场景每一个部分的效果。
英伟达在RTX20系列显卡中,加入了一组特定的向量流水线单元,也就是RT-Core。它可以以固定流程计算光线路径,在输入光线的起始位置后,模块直接获得该条光线路径上的所有碰撞信息,不需要再对模型进行光栅化处理,实现了快速计算光追。
如今,RT-Core已经更新到了第三代,还加入了Opacity Micromap (OMM) 引擎和 Displaced Micro-Mesh (DMM) 引擎,英伟达称这将提升光线与三角形求交性能以及RT-TFLOP 峰值性能,解决了此前在树叶、颗粒、围栏界面上显示性能较弱的问题。
英伟达Ampere架构 图源:英伟达
当然,高级光线追踪技术需要计算同一场景中数百万条光线照射在诸多不同类型材质上的效果,这就使得着色器只能低效地处理一系列截然不同的工作负载。如今的GPU中还有着色器执行重排序(SER)技术,能够动态调整这些工作负载的顺序,让原本低效的流程变得异常高效。
据业内专家解释,目前英伟达在光线追踪领域已经远远领先竞争对手AMD。AMD是在并行计算单元中集成了光追单元,但由于不是专用电路,因此在性能上要差英伟达的RT-Core一大截。从另一个角度看,英伟达是光线技术的引领者,在推出自己的光追模块之前早已进行了很长时间的技术积淀,AMD的光追则是在英伟达发布该技术后才开始投入的,短时间做到“能用”已经实属不易,但仍与行业龙头有所差距。
手机怎么光线追踪?
上文中极大篇幅都是在讲英伟达光线追踪技术的先进性与复杂性,以及光线追踪对硬件的极高要求。最近一年,联发科、高通发布的新SoC,均声称已将光线追踪搬到了移动场景上。将PC端的光线追踪模块移植过来,怎么优化与适配?功耗与算力能撑得住吗?
Imagination曾将光线追踪技术分为了6个层级:
Level 0:传统解决方案
Level 1:传统GPU上的软件
Level 2:硬件中的光线/方框和光线/三角形测试器
Level 3:硬件中的边界体积层次结构(Bounding Volume Hierarchy,BVH)处理功能
Level 4:硬件中的BVH处理和一致性排序功能
Level 5:硬件中带有场景层次生成器(Scene Hierarchy Generation,SHG)的一致性BVH处理功能
可以看到,光线追踪的效果,关键在于GPU中集成的诸多光线追踪模块。早在2021年,Arm的Mali-G710已经支持基于软件的光线追踪,并应用在了联发科的天玑9000移动SoC中,但没有硬件支持,光线追踪还只是个“概念”。目前市面上已经推出的具有硬件光线追踪功能的SoC仅有联发科9200、9200+与高通骁龙8gen2。据官网资料显示,联发科9200与谷歌芯片搭载的GPU来自ARM Immortalis-G715,骁龙8gen2搭载的GPU是AMD Adreno。最近,ARM又推出了Immortalis-G720,再次“大秀肌肉”。ARM还表示要推动光线追踪在移动平台的普及。
然而如前文所说,光线追踪对硬件性能的要求极为苛刻,所需要的功耗对于手机来说也是难以承受的。因此,手机光线追踪需要采用与PC端不同的策略。这个不同点首先就在于,手机在功耗墙的限制下仅会展现部分光线追踪效果。且对于移动端而言,光线追踪算法的优化水平是制约特效落地的最大瓶颈。
在2019年,网易利用自己开发的《遇见逆水寒》手游进行了光线追踪演示,要知道,这时英伟达才推出光线追踪技术一年多。彼时的演示画面还比较“粗糙”,在开启光追后,游戏在软阴影、镜面反射、粗糙反射等情景中的视觉效果都有了提升,但与PC端开启光追后呈现出的震撼效果还有差距。此外在特殊场景下,开启光线追踪的手机耗电量要比没有开启高了3倍有余。展示中并没有给出芯片发热表现,不过估计那时候手机已经能达到“烫手”的状态了。
如今在拥有更高画质的手游,例如《原神》上(大概?),开启光线追踪后手机GPU怕不是会原地融化。因此,要想让手机能用光线追踪,第一步就是给移动GPU减少任务量,但不同厂商给出的光线追踪解决办法也不尽相同。
联发科:
联发科针对游戏开发者需要的特效,以及玩家沉浸式游戏体验的关键视觉需求,开发出移动端光线追踪的“三要素”,即软阴影、镜面反射与折射,让移动设备上的虚拟世界看起来不再那么“假”。
1、光线追踪软阴影:真实世界的阴影会因为与光源距离的远近或者光线的强弱而形成不同的软硬度,联发科依托移动端光线追踪技术相对真实地计算出场景物体所对应的反射角度和位置,从而形成更真实的软阴影,反映出光线强弱和不同的距离。2、光线追踪镜面反射:9200可以根据不同光源强度反射出强弱不同的倒影,地面的材质和纹路也会影响反射效果,因此能更真实地计算出场景中不同物体相对应镜面反射的角度和位置。玻璃物体的光线追踪折射:不同材质的物体折射呈现的画面不同。3、折射渲染技术可为画面增加不同角度的折射细节,更真实地还原物理现象。
此外,联发科与ARM携手,共同推出了自适应调控技术(MediaTek Adaptive Game Technology, 简称MAGT),可降低高帧率游戏的功耗和终端设备的温度;变速率渲染技术(VRS),可动态调整不同视觉区域渲染倍率;最后是HyperEngine 6.0游戏引擎,可根据温度预测决定系统模块的调度等;延迟顶点着色 (DVS),减少了内存带宽的使用,节省了最重要的 DRAM 功耗,也降低了整体功耗。
高通:
高通为Adreno GPU 的光线追踪单元加入了骁龙阴影降噪器,以此解决噪点问题。高通表示该技术专门面向 Adreno GPU 开发和优化的,与目前其他端游级解决方案相比,速度快4倍。
阴影降噪 图源:高通
此外,高通还研发了专门用于提升移动端游戏体验的 Snapdragon Elite Gaming 解决方案。它可以基于物理的渲染技术,通过优化模型表面的光反射机制,实现更接近现实的光照效果和纹理质感;引入正向渲染模式,多重景深、多动态光源、运动模糊、平面反射等方面对游戏画质进行深度优化处理,从而带来更真实更有沉浸感的画面品质等。
有了硬件支持,软件优化或方案优化也很重要。
首先就是模型优化。光线追踪影响性能的关键一点就是光线的反射次数与模型的面数量,也就是场景的复杂性和模型的复杂性。
游戏研发人员表示,在建模时,首先要保持更低的多边形数量,管理拓扑结构使其干净平衡;更多使用平滑模型,让低多边形的边缘有正确的法线投影;合理分割纹理资源,防止颜色渗出。在需要的情形下,可以通过多纹理叠加来降低纹理尺寸。有了以上要点,再适当使用精细模型,就可以制作出高质量的资源,渲染出完美的画质。
其次是继续深入研究功能技术实现,例如加强光线追踪在过场动画中的应用。因为光线追踪阴影渲染和反射的去噪器需要与模型进行拟合,动画往往意味着摄像机移动缓慢,画面中的模型位移小,因此光线追踪环境在这种情况下效果更好。
手机真的需要光追吗?
作为一名PC游戏玩家,记者认为手机游戏应该加速应用光线追踪技术。
2018年英伟达刚刚推出光线追踪技术的时候,很多人只是被宣传画面呈现出的效果震撼,然而当自己购买显卡体验后,发现开启光线追踪往往意味着游戏帧数的大幅下降。但是随着30系、40系显卡推出,以及DLSS技术等AI插帧技术成熟后,光线追踪逐渐成为默认开启的选项。
在手机游戏上,光线追踪的大规模普后,手机功耗增加、卡顿等问题不可避免。随着PC市场下行趋势持续增大,越来越多的新生代玩家开始转战移动平台。即使移动端在功耗上有天然劣势,但玩家对游戏的要求始终没有上限,所有人都期待未来移动端能够完美复刻PC游戏,这其中就包括画面表现。
好在目前摩尔定律仍然在艰难前行,手机芯片性能还在持续增长,这也代表未来移动端游戏对画面的支持力度还有上升空间。记者认为,未来手机芯片在光线追踪功能上的竞赛,也许会复刻英伟达和AMD的竞争故事。
更重要的是,光线追踪能够实现的特性并不仅限于游戏,更高阶的应用是VR、AR,甚至是元宇宙。
2021年元宇宙盛行之时,英伟达创始人黄仁勋认为,未来随着科技不断发展,虚拟世界与现实世界将产生交叉融合,现在正是元宇宙世界的风口浪尖,英伟达也将在其中扮演重要角色。
如今元宇宙的热度已过,龙头企业Meta也在大规模裁员。但在总结元宇宙没有成功的原因时,很多专家都归结为VR设备很不方便,而移动版VR设备画面质量差,会导致容易晕眩等问题。
当手机光线追踪技术成熟后,便可更快衔接到移动AR、VR技术设备上。这将极大的提升此类设备的画面质量,提升佩戴观感,也能让VR设备普及度更高。或许元宇宙并没有消亡,当有更多与手机光线追踪一样的技术成熟并应用后,元宇宙的时代才会真正开启。
写在最后
光线追踪技术的发展历程和其在手机领域的应用,为广大玩家带来了令人惊叹的视觉体验。通过光线追踪技术,手机用户也能够享受到更加逼真和沉浸式的游戏、影音甚至增强现实体验。目前高通和联发科作为行业领先的半导体公司,都提供了各自的解决方案,以满足市场对于光线追踪技术的需求,更有消息称三星、谷歌等大厂也纷纷入局,未来手机光追或许将成为标配。
然而,手机光线追踪技术的应用仅仅只是一个开始。随着技术的不断演进和市场的发展,我们可以想象,光线追踪将在更广泛的领域得到应用。一个令人激动的前景是,光线追踪技术有望在元宇宙的建设中扮演重要角色。
未来,一定是光与影交织,虚拟与现实融合的世界。手机光线追踪,或许只是起点。