光线追踪(Ray Tracing)是一种通过模拟光线在场景中的物理传播路径来计算光照和阴影的渲染技术。其核心原理是从摄像机视角出发,对每个像素发射一条或多条光线,追踪这些光线与场景中物体的相交情况,并根据材质属性计算反射、折射和散射。与传统的“光栅化”渲染(将3D物体投影到2D屏幕)不同,光追能更真实地模拟全局光照、软阴影、镜面反射、折射等效果。
性能开销巨大的原因主要有三点:
1. 光线数量爆炸:即使开启DLSS等降采样技术,每个像素也需要成百上千条光线来消除噪点,而传统光栅化只需一次像素填充。
2. 相交计算复杂:光线与场景中所有三角形进行相交测试,现代游戏场景动辄数百万个三角形,计算量呈指数级增长。
3. BVH树遍历:为了加速,GPU使用BVH(包围体层次结构)来组织场景,但每次光线追踪仍需遍历树结构,导致大量随机内存访问和计算单元占用。
NVIDIA RTX系列采用专用RT Core硬件单元来加速BVH遍历和相交测试,而AMD RX 6000系列则依赖通用计算单元(CU)通过软件模拟,因此效率较低。例如RTX 3080的RT Core性能约为RX 6800 XT的2-3倍。
目前光追主要用于反射、阴影和全局光照等特定效果,并非所有反射都靠光追——许多游戏混合使用光栅化生成的屏幕空间反射(SSR)和光追反射。未来随着硬件进步(如更快的RT Core、更高效的降噪算法),完全实时光追有望实现,但短期内仍需光栅化辅助。