解读手机光线追踪
作者 刘浩然
发表于 2023年7月

2018 年,还不是“AI 之光”的英伟达已经在“挖矿”与“游戏” 之间“反复横跳” 许久。那年,英伟达CEO 黄仁勋带着Geforce RTX20 系显卡来了。当时消费者关注的焦点除了能不能买到原价显卡外,还有一项技术引人注目,那就是光线追踪。

光线追踪技术的问世,直接让玩家的游戏体验跃升了一个层级。逼真,逼真,还是逼真! 这是游戏应用光线追踪技术之后玩家发出的最多感叹。

彼时光线追踪之惊叹,更多的还是在于其对硬件要求的苛刻。

初代光线追踪可谓是“硬件杀手”。只要开启这项功能,从RTX2090~RTX2060 所有显卡的游戏帧数均暴降半数以上。直到一年之后,英偉达推出RTX30系列显卡,让光线追踪技术更新到下一时代,同时搭配了DLSS2.0 技术,才让光线追踪真正成为人人用得上的功能。

这个“杀手”其实是一种算法,一般的GPU 就可以通过运行它来渲染图像。不过正如同ASIC 性能对比普通CPU 一样,将算法刻录成硬件能够极大地提升程序运行速度, “ 专人办专事” 才能提升效率。

RTX20 系显卡搭载的光线追踪专用核心RT⁃Core,让显卡渲染光线追踪图像不再局限于“单张图片”领域,更快的处理速度让显卡拥有了渲染高帧率游戏的能力。AMD 则“摸着英伟达过河”,在RX6000 系列中推出AMD 自己的光线追踪技术,其效果与初代英伟达光线追踪持平。

至于如今的英伟达RTX40 系显卡,虽然在性能较上代有了大幅度提升,但“光线追踪”这项功能仍旧像是显卡中居住的怪兽,疯狂吞噬着有限的显卡算力。

在满足算力提升的同时,RTX4090 显卡的功耗也达到了恐怖的450 W,网友戏称“花2 万元买电暖器”。

如果基于计算机的光线追踪情况,有人提出:“我要实现在移动端的硬件光线追踪!”,怕不是所有人都以为他疯了! 在手上抱一台“电暖气”可不是什么有趣的事情。但事实上,在手机上用光线追踪,已经成为现实。

光线追踪很难吗?

什么是光线追踪? 光线追踪(Ray⁃tracing)是一项在视频或游戏中绘制逼真图形的复杂技术。它利用算法对光线进行建模,模拟它从射出到多次反射后的全部路径,来实现对真实世界的模仿。

看到对光线模拟,你大概就能明白了,只有模拟数量庞大的光线路径,才能达到与现实世界类似的效果,也意味着对GPU 算力需求的爆炸增长。也正是由于完整运算所有路径十分消耗运算资源,因此现有光线追踪技术仅运算“目所能及”的光线路径。

其实光线追踪的概念出现得很早。

1968 年,光线追踪的概念就被提出,起初它是为了帮助美国国防部研究伽马射线辐射。1979 年,计算机学家、电气工程师Turner Whitted 在贝尔实验室担任工程师时制作了一部名为The Compleat Angler 的递归光线追踪电影,让他成为第一个展示递归光线追踪的镜面反射和半透明物体折射的人。后来,他的论文引导了更多人从事光线追踪研究,让计算机图像更加真实。

2000 年前后,光线追踪开始被用于电影特效的制作,就是那时,英伟达与AMD 的显卡开始被用来硬件加速光线追踪的渲染。为什么电影行业能这样做,原因不外乎有2 个:一是时间,特效公司会采用离线光线追踪,可以一帧一帧渲染图像;二是钱,特效工作室会使用到渲染农场,相当于一个个渲染集群服务器在协同工作。彼时的渲染,需要利用上百台服务器专用GPU 同时工作半小时以上才能渲染好一帧画面。如果将光线追踪应用到游戏上,就需要至少每秒执行这个渲染30~60 次,这对硬件算力的需求量简直不可想象。

在应用光线追踪之前,GPU 中的图形算法都依靠“光栅化”实现。光栅化将图形和基元从3 个维度转换为显示器像素的二维网格。它依赖于着色器来描绘真实世界的光照,游戏开发者不得不使用光照计算算法来加强场景中的视觉效果。

CPU 将图形生成数据交付GPU 后,流处理器会将所需要的模型依次进行光栅化,图像生成之前GPU只会调用一次模型数据。这种方法能以最低的计算成本将3D 图像构建出来,但在局部效果中(如反射、阴影的生成)效果不佳。关键的一点,它没法和其他物体交互,不会在镜子或者地板上反射,也不会在玻璃上穿透。该方法几乎无法模拟不同物体之间的光效折射,这也是此前游戏画面无法媲美真实场景的关键原因。

光线追踪的方法则是通过对光线进行并行化处理,除光线外的任何物体都需要在光线追踪算法中递归运算。

本文刊登于《计算机应用文摘》2023年13期
龙源期刊网正版版权
更多文章来自
订阅