光线追踪以及它的原理是什么?

让眼睛看到虚拟光线的复杂技术

在现代游戏中,光效是非常重要的一环,而光线追踪堪称迄今为止最神奇的技术了。光线追踪这个东西其实由来已久,不过现在许多人都能用它来渲染出逼真的光线与阴影。

 

直到不久以前,我们的显卡或主机如果要生成一副输出到显示器上的图像,使用的都是光栅化技术。这个技术能够将 3D 图像转换成我们屏幕上所见的 2D 像素,然后再通过着色器来加上光效。而光线追踪则是另一种不同的方法,虽然目前对硬件的要求较高,但通过追踪虚拟的光线,光追能够生成一些非常好看的图像效果。英伟达的一个视频提供了很好的对比

首先我们要明确一点:光线追踪实际上能够代表多种不同的技术。不过为了本文的介绍目的,我们将基于游戏中肉眼可见的应用来定义光线追踪,也就是对我们来说最重要的地方。

光线追踪的原理是什么?

在电子游戏中,光线追踪本质上是一个模拟光线运动,与环境中其他物体互动,最终到达我们眼中的一套系统。光线会在物体上反射,会穿透一些东西,有时候甚至还会被吸收。所有这些互动需要大量的算力来模拟,但光线追踪正是通过这样的方法来创造出更真实的图像。

Epic Games 在虚幻引擎的光线追踪教程中展示了许多不同的效果对比。在我们的《我的世界》对比视频中,大家也能看到这个技术能为最不真实的画面带来什么样的影响。

 

我们通常所想的是模拟光线从光源发出,在各个物品上反射之后到达我们眼睛的过程。但实际上绝大多数光线都不会被我们看见,所以在游戏的场景中去追踪这些多余的光线就不重要了,玩家是看不见它们的。所以,光线追踪技术在游戏中应用是逆向的。

华特迪士尼动画工作室在创造 3D 动画时有一个非常棒的步骤来展示这道工序。从你的视角发出一道光线去场景中,这道光线可能会照到游戏中的角色、物体,或者飞向天空,不与任何东西交互。

取决于这道光线照射到的东西,如果是反射性的物体或是表面,那么它就会反射到其他地方去。如果表面粗糙的话,这道光线可能就会反射向不同的角度,甚至可能分离成多道新的光线。经过几次反射后,这道光线会照向光源,它在这个过程中收集到的所有信息就会变成玩家屏幕上的像素。打个比方,如果光线照到灰色岩石后反射到绿色墙壁上再指向光源,那么最后的光线就会是灰色带一抹绿色。

 

通过为游戏世界中的物体赋予属性,游戏能够模拟出这种真实的光效反应,打造出接近现实中光线反射的视觉效果。

不过要在所有游戏中运用光线追踪受许多因素的影响。要渲染出完整的场景需要大量光线反射许多次。意味着需要模拟出上百万,乃至上亿道光线才能知道最终需要展示什么。这样的工序只会减慢渲染的过程,让光线追踪在游戏中无法实现实时应用。而且有时候也意味着没法模拟出光线最终反射到光源的全过程。

游戏能采取一些折中的解决方案,例如用光栅化来渲染出大部分图像,再加入一些光线追踪来打造出真实的反射或阴影。另一种补足图像信息的方法是图像去噪。原生光线追踪的图像看起来就像是一张独立颜色点组成的像素图,图像去噪技术则能智能平滑处理这些像素,把它们的颜色混合起来,并且加以区分明暗。英伟达展示了图像去噪技术,展示了图像在使用了部分光线追踪后,再加入一些优化前后的对比。

 

对我们来说意味着什么?

越来越多的游戏支持光线追踪。虽然对硬件的要求更高了,需要高端显卡和最新的主机才能驾驭,但其为图像质量的提升是巨大的,并且还避免了目前许多图像效果的弊端。

如果你不介意牺牲一点帧数,现在就能在不少游戏中享受光线追踪了,但绝大多数游戏还没有支持。随着科技的发展,光追硬件也越来越大众化,未来的游戏很可能会越来越普及光线追踪。

本文编译自 IGN US 相关内容,原作者 Mark Knapp,翻译 IbaHs,编辑豚骨拉面,未经授权禁止转载。

文章提及

Nvidia GeForce RTX 3080 Ti

NVIDIA | 2021年6月3日