什么是光线追踪,什么又是实时光线追踪?
自上世纪90年代以来,传统的3D渲染一直使用一种叫做光栅化的过程。整个过程简单地描述就是光栅引擎根据顶点渲染生成的三角形以人眼所接收到的二维画面来创建需要渲染的图像,接着将纹理数据按坐标铺入该图像中的三角形,得到完整的画面数据,再由ROPs将完整的画面数据填充到屏幕所看到的像素。
光栅化技术多年来一直是实时渲染的常规技术,尤其是在游戏中。虽然今天许多光栅化场景看起来已经足够好了,可是基于光栅化的渲染局限性依然无法避免。例如,仅使用光栅化呈现反射和阴影需要对需多不同视角进行假设和分析。常见的情况是静态光图可能看起来是正确的,若某些东西移动,光栅化的阴影经常出现混淆和光泄漏,亦或者画面上任何物体的反射只能反射出屏幕上可见的物体。这些现象都有损于游戏体验的真实性,而且开发人员在光栅化的基础上重新编程修复这些BUG的代价很高。
光线追踪技术长期以来被用于非实时绘制,它通过模拟光的物理行为来提供逼真的光照。光线追踪通过跟踪光从观看者的眼睛穿过虚拟3D场景时将采取的路径来计算像素的颜色。当它穿越场景时,光可以从一个物体反射到另一个物体(引起反射),被物体阻挡(引起阴影),或者穿过透明或半透明物体(引起折射)。所有这些相互作用被组合以产生然后在屏幕上显示的像素的最终颜色。
这一种计算工作十分繁重的渲染技术,它真实地模拟场景及其对象的光照。能够实时地渲染物理上正确的反射、折射、阴影和间接照明。相比传统的光栅化渲染,光线追踪技术创造的景象更符合人眼和大脑接受的视觉逻辑,视神经原本就是靠自然界的可见光反射来识别图像的。因为效果出众,这项技术早就被应用在了图像渲染中,但非实时渲染,而是制作CG、电影。
所以光线追踪与实时光线追踪是两个概念,制作CG时我们有一整天的时间去渲染一帧画面,但是在游戏中一帧画面只能耗时几十分之一秒,否则就会影响流畅度。在过去,GPU的算力远不足以使用单个核心对游戏进行实时光线追踪,使这项耳熟能详的技术一直无法应用在游戏中。需要30~90fps才能畅爽体验的游戏多年来一直依赖于快速的光栅化渲染,只能放弃电影般的逼真画面。
星球大战光线追踪渲染演示,完全分不出哪个是电影哪个是DEMO
直到NVIDIA Turing架构问世,使通向游戏渲染技术殿堂的那条路头一次变得清晰起来。下
面让大家再欣赏几幅加入实时光线追踪的游戏视觉体验。