过去十年,游戏画质最大的质变来自实时光线追踪(RT)。在阴影、反射、全局光照等场景中,它让游戏世界更接近真实。
但RT本质仍是对可见线路的近似,以局部采样实现“足够好”的效果。许多游戏开发者在灯光设计中牺牲了物理真实性,换来性能与效率。
路径追踪(Path Tracing),则是彻底不同的路线。从场景出发,探测出在任意波段传播的所有光线路径。
即便是烟雾、毛发、次表面散射,它也能一并涵盖。其通过精确采样得到无噪点结果,解决了几何锯齿、高频纹理振铃、摩尔纹等走样问题。
尽管计算成本高,但输出效果的细腻度和动态范围表现,使其向真正物理精确的渲染迈出了重要一步。
对于视觉精度有极端要求的人来说,路径追踪是真正的“无妥协画质”。但它的计算量极其庞大:传统方式下实时路径追踪所需算力,是普通GPU的十数倍甚至百倍。
光柵化与光线追踪之间有什么区别?
首先要了解一些术语的定义,以及现在如何使用它们创建交互式图形,这些图形能够对用户输入做出实时反应,比如在视频游戏中。
第一个术语是光栅化(rasterization),这项技术可以从单视点生成图像,从一开始就是 GPU 的核心。现代 NVIDIA GPU 每秒可以生成超过 1000 亿个光栅化像素,这使光栅化成为实时图形(如游戏)的理想选择。
光线追踪技术比光栅化更强大。它不再局限于从一个点上看到的图像,而是可以确定从许多不同的点和方向看到的图像。从 NVIDIA Turing 架构开始,NVIDIA GPU 就一直在提供能够加速这种困难计算的专用 RTX 硬件。如今,单个 GPU 每秒可以追踪数十亿条光线。
追踪所有这些光线能够比光栅化更精确地模拟光线在现实世界中的散射情况。但我们还必须回答以下问题:如何模拟光线以及如何把这项技术应用于 GPU?
什么是光线追踪?故事要从细绳开始讲起
更好地回答这个问题需要先来了解这项技术的发展过程。
NVIDIA 图形学研究副总裁 David Luebke 喜欢从 16 世纪北欧文艺复兴时期最重要的人物之一阿尔布雷希特·丢勒(Albrecht Dürer)开始讲起,丢勒使用绳子和砝码在二维表面上复制出三维图像。
丢勒一生致力于将古典和现代数学与艺术相结合,在表现力和现实主义方面取得了突破性的成就。
跟着绳子:阿尔布雷希特·丢勒在《测量论》(纽伦堡,1525年,f15)中首次描述了现在被称为“光线追踪”的技术。这项技术可以在二维表面上准确表示三维物体。
在 1525 年的《测量论》中,丢勒成为了第一个描述光线追踪概念的人。了解丢勒如何描述这个概念是理解它的简单方法。
想一想光如何照亮周围的世界。
现在想象一下,用一根丢勒所使用的细绳从眼睛往后追踪这些光线,一直到与光线互动的物体。这就是光线追踪。
将光线追踪引入计算机图形学
Turner Whitted 在 1979 年发表的论文《用于阴影显示的改进型光照模型》点燃了光线追踪的复兴。
1969 年,在丢勒去世 400 多年后,IBM 的 Arthur Appel 展示了如何将光线追踪概念引入计算机图形学,并应用于计算可见度和阴影。
十年后,Turner Whitted 率先展示了这一概念如何捕捉反射、阴影和折射,解释了这一看似简单的概念如何使更复杂的计算机图形成为可能。这项技术在接下来的几年里迅速发展。
1984 年,卢卡斯影业的 Robert Cook、Thomas Porter 和 Loren Carpenter 详细介绍了光线追踪如何将运动模糊、景深、半影、半透明和模糊反射等许多常见的电影制作技术结合到一起。在此之前,这些技术在计算机图形中都无法实现。
Jim Kajiya 在 1986 年发表的论文《渲染方程》中不仅提出了描述光线如何在场景中移动的简练物理学方程,还概述了如何高效地应用该方程。
两年后,加州理工学院教授 Jim Kajiya 在一篇简短的七页论文《渲染方程》中通过光线追踪将计算机图形与物理学相联系,并介绍了路径追踪算法,这使得准确描绘光线在场景中的散射方式成为可能。
什么是路径追踪?
在开发路径追踪的过程中,Kajiya 从不相关的领域获得了启发——对辐射☢️换热的研究,或者说热如何在整个环境中传播。该领域的一些概念启发他发布了描述光线如何穿过空气和从表面散射的渲染方程。
渲染方程只有寥寥几行,但却不容易解出。计算机图形场景很复杂,数十亿三角形在今天并不罕见。但由于没有办法直接解出渲染方程,Kajiya 提出了第二个关键创新。
Kajiya 证明了统计技术可以用来解出渲染方程。即使没有直接解出该方程,也有能够沿着单个光线的路径求解。如果能够沿着足够多的光线路径解出该方程,就能准确模拟场景中的照明,生成逼真的图像。
那么如何沿着射线的路径解出渲染方程?答案是光线追踪。
Kajiya 使用的统计技术被称为蒙特卡洛积分,可以追溯到计算机诞生之初的 1940 年代。
开发用于路径追踪的改进型蒙特卡洛算法至今仍是未被解决的研究问题;NVIDIA 的研究人员处于该领域的前沿,他们定期发布提高路径追踪效率的新技术。
通过结合这两个概念(使用以物理学为基础的方程描述光线在场景中的移动方式,并使用蒙特卡洛模拟帮助选择可控数量的光源返回路径),Kajiya 提出了日后成为生成逼真计算机生成图像标准的基本技术。
他的方法反映了光线在现实世界中移动时的物理规律,将由各种不同渲染技术主导的领域,转变为可以使用简单、强大的算法重现大量高度真实视觉效果的领域。
路径追踪在游戏中的应用
多年前,路径追踪一直无法应用于游戏。虽然许多游戏开发者表示,会想要在路径追踪的性能可以满足实时图形需求时使用这项技术。但由于当时的性能与实时图形的要求相距甚远,路径追踪似乎无法实现。
随着 GPU 变得越来越快以及如今 RTX 硬件的普及,实时路径追踪就在眼前。就像电影在转向路径追踪之前开始融入一些光线追踪技术一样,游戏也已经开始用有限的方式使用光线追踪。
现在,越来越多的游戏都在某些方面使用了光线追踪。它们将传统的光栅化渲染技术与部分光线追踪效果相结合。
那么这里的路径追踪指的是什么?它可能指各种技术的混合。游戏开发者可以光栅化主光线,然后对场景照明进行路径追踪。
光柵化相当于从单个点投射一组光线,这组光线会在集中的的第一个事物上停止。光线追踪更进一步,可以将来自多个点的光线投射至任何方向。路径追踪模拟光的真实物理特性,将光线追踪作为更大照明模拟系统的组成部分。
这意味着场景中的所有照明均使用蒙特卡洛或其他技术随机采样,包括对物体或角色的直接照明,以及照亮房间或间接照明环境的全局照明。
仅通过一次反弹追踪光线做不到这一点,它需要通过多次反弹追踪光线,甚至可能要像 Kajiya 所描述的那样追溯光源。
一些游戏已经在这样做了,而且效果非常好。
微软已经发布了将路径追踪应用于《我的世界》中的插件。
《Quake II》这部经典的射击游戏也凭借新的插件实现了完整的路径追踪,这种类型的游戏往往是应用了高级图形技术的沙盒游戏。
显然,这个领域还有很长的路要走,游戏开发者需要知道客户拥有路径追踪游戏体验所需的算力。
游戏需要有高质量的视觉效果以及与反应迅速的游戏玩家进行互动的速度,因此是具挑战性的视觉计算项目。
也期待着这个领域的开创性技术能够延伸到数字生活的方方面面。