引言
细节级别 (LOD) 技术在栅格化领域已不是什么新鲜事物。许多游戏都在使用它并享受其带来的好处。但是,对于光线追踪而言,细节级别技术的好处并非微不足道。例如:
- 深度较高的次级光线可能不需要非常详细的几何体。在这种情况下,使用粗糙 LOD 的几何体表示进行光线相交/BVH 遍历可能就足够了。拥有粗糙 LOD 的 BVH 会减少次级光线遍历的节点数量和执行的相交测试次数,从而极大地提高性能。
- 阴影光线和 AO 光线可能不需要非常详细的几何体来进行追踪。许多近似方法,如锥体追踪,已被尝试用于解决此问题。LOD 在此非常有用。
因此,LOD 可以通过减少光线-三角形相交次数和 BVH 中的节点遍历次数来使我们受益,因为几何体的粗糙 LOD 表示自然会拥有更少的三角形,从而更少的 BVH 节点。然而,这并不是一个非常直接的解决方案,因为实现传统的 LOD 方法会引入更多问题。例如:
- 通常,同一几何体会有多个 LOD 实例。所有这些实例可能无法全部放入 GPU 内存。因此,不在内存中的特定 LOD 实例将在需要时按需加载。这不利于性能,并可能导致加载卡顿等问题。相反,如果我们选择将所有 LOD 实例都保留在内存中,那肯定会增加内存预算。
- 一旦我们加载了所需的 LOD 实例,我们就需要更新/重建 BVH,这无疑是一项操作量很大的任务。
- 基于某些参数(例如与原点/摄像机的距离),将选择主光线的 LOD 实例。次级光线应看到完全相同的 LOD 级别。如果我们为次级光线选择不同的级别,则可能看到孔洞伪影。
将 LOD 技术应用于光线追踪的过往尝试
已经有许多尝试将 LOD 技术应用于光线追踪的用例。让我们在此探讨其中的一些。
RLOD 方法
该方法试图通过主成分分析来简化现有的三角形/网格集。根据某些 LOD 误差度量,我们可以在 BVH 的内部节点停止,然后将该节点下的所有图元通过 PCA 近似为平面。然后使用该平面进行相交以获取着色信息。
参考: RLOD: Fast LOD based ray tracing for massive models
局限性
- 对于具有高度变化 BRDF 的表面,可能无法提供高质量的简化。
- LOD 度量无法保证次级光线追踪路径以及每像素计算出的光照中的误差。
- 基于投影的 LOD 误差度量目前可以处理平面反射和阴影光线,但不能处理折射或非平面反射。因此,不适用于通用路径追踪。
遍历着色器方法
当前的光线追踪管道将遍历和相交视为固定功能操作。对于自定义图元,相交可能是可编程的,但 BVH 的遍历是完全固定的功能操作。此方法试图引入一个可编程的 BVH 节点,该节点将充当 TLAS 中的叶节点。在光线相交时,会调用一个用于与可编程节点相交的遍历着色器。此遍历着色器将包含转换光线、计算 LOD 并选择合适的 BLAS 实例以进行进一步遍历的逻辑。
参考: Flexible Ray Traversal with an Extended Programming Model
局限性
- 需要更新光线追踪管道,这并不容易。
- 假定所有 LOD 实例都存在于 BLAS 中。
随机 LOD
这是一个多通道技术。在第一遍中,我们计算实例 LOD,在第二遍中,我们使用该 LOD 进行追踪。LOD 计算作为预处理步骤完成。
参考: Implementing Stochastic LOD with Microsoft DXR
局限性
- 次级光线应看到与主光线相同的 LOD 级别,否则会显示孔洞伪影。
一种新的 LOD 技术的基本要求
如上所述,现有解决此问题的有趣方法存在一些局限性,尽管在光线追踪方面使用 LOD 确实具有某些优势。
因此,在开发一种新的 LOD 技术时,我们有一些基本要求:
- 能够为每条光线选择不同的 LOD 级别。
- GPU 内存预算较低。
- 无需更新现有的硬件管道——可以轻松地为现有 API 添加扩展。
- 使其能够用于通用路径追踪。因此,它应适用于复杂的材质网络和几何体。
- 获得性能提升。该技术本身不会引入额外的开销。
考虑到以上所有目标,我们提出了“多分辨率几何表示利用包围盒层级结构进行光线追踪”技术。
我们尝试使用现有的 BVH 来模拟 LOD。我们定义了一个新的 LOD 阈值启发式方法,在遍历到叶节点之前停止 BVH 遍历。为了通过近似几何体获取着色信息,我们定义了随机材质采样。
从下图可以看出,使用近似方法后,遍历的节点数量显著下降。尽管我们的技术确实引入了一个小的变暗偏差,但它与其他我们获得的益处非常平衡。

Bistro A,使用我们的方法渲染的 AO 光线投射所遍历的节点数量的图像和可视化。精确。

近似:T = 10 度

近似:T = 20 度
热图表示每个 AO 光线用于查找相交的节点数量。蓝色(最小值)为 0,红色(最大值)为 400。每个 AO 光线在近似像素中遍历的平均节点数量分别下降到 317、240 和 218。
希望您喜欢这项技术背后的“原理”。有关性能和技术的详细信息,我强烈建议您阅读该论文。
多分辨率几何表示利用包围盒层级结构进行光线追踪 [14MB]想了解更多?
我们在这里的 GPUOpen 上有大量技术文档,包括我们“出版物”页面上的数十篇已发表论文。离开之前务必查看一下!