概述
V-Ray 6.1 的新功能加入了 Intel 的 Open Path Guiding 函式库,并做出初步实验成果。在这篇博文中,我们阐述了关于路径引导的技术细节,以及 Intel 和 Chaos 在这次整合的合作。这篇文章的部分内容是由 Intel 的光线追踪软件工程师 Sebastian Herholz 所贡献的,他是这方面的专家。
路径引导(Path Guiding)是什么?
在当代渲染器中,用于制作逼真影像的最广泛的技术是单向路径追踪。简单来说就是,渲染器从摄影机位置通过影像的像素追踪射线到场景中。
光线对场景中的光传输的解决方案进行计算,以定义像素的值/颜色。在光线与场景几何体的每个交点上,渲染器都会计算来自场景光源的直接照明,并将光线反弹到表面,以计算全局照明、反射和折射。
在具有复杂照明情况和统一路径追踪的场景中,只有一些路径能够到达照明区域并对影像做出实质贡献。因此会产生、非常多噪点的结果。
尽管所得到的影像非常有说服力,但可能含有噪点。要将噪点降低到所需的水平,需要足够的每像素采样数。噪点通常取决于渲染器对场景中光线传输的探索能力,即能否将光线射入或直接光线引导到对像素值有显著贡献的区域(例如:光源或反射直接光或间接光的物体)。光照情况的"难度/复杂性"起着重要作用,均匀照明的场景需要更少的样本才能达到所需的噪点水平,而具有复杂间接照明的场景(例如被阳光照亮的小明亮区域)则需要更多样本才能清除噪点。虽然路径追踪器善于处理来自场景光源的直接光照,但来自明亮表面的间接光照需要更多的样本来清理噪点。这是因为渲染器没有关于间接光照的信息,通常必须依靠局部材质的反射特性来探索间接照明。
通过路径引导,更多的路径可以到达场景中的光照区域并对最终结果产生贡献,从而得到更少噪点的图像。
路径引导是一种提高渲染质量的方法,帮助渲染器克服缺乏场景间接照明信息的限制。路径引导在渲染预处理或在渲染反复修改过程中学习场景间接光照的近似值。在渲染过程中,当渲染器需要决定下一个射线的方向时,使用场景间接光照的近似值来引导光线进入重要的方向(例如,向场景中较亮的区域)。这种对光线的“引导”,可以显著降低噪点,并更快地处理图像,特别是在复杂光照情况的场景中,那些无法以其他渲染优化所处理的状况,如 V-Ray 和 Corona 中的自适应穹顶光(adaptive dome light)采样或一键式焦散(one-click caustics)。
V-Ray 为什么会采用
路径引导是几十年来的研究成果。然而,最近才投入生产级别渲染(参考文献:Path guiding in production | ACM SIGGRAPH 2019 course)[0]。
很遗憾的是,并不存在既强大又稳定高效的一种 "通用"的路径引导方法,可在整个行业中得到广泛采用。这就是为什么 Intel 创建了开源的 Intel Open PGL 项目,与渲染社群一起开发一个足够强大和稳定高效的路径引导框架,以便在日常生产中使用。Intel 的目标是使 Intel Open PGL 项目成为渲染界首屈一指的路径引导解决方案,如同Intel® Embree(embree.org/)是光线追踪/相交内核一样。
Chaos 决定引入 Open PGL 是因为这项技术展示了令人期待的结果,相当有前景,并提供了 API,使其可相对容易地整合到Corona 和 V-Ray 等生产级渲染器中。此外,之前与 Embree 项目的经验表明,社群驱动的解决方案具有明显的优势--强大的、高性能的函式库,而且各行各业都能提供贡献。
Intel Open PGL 是如何开发的
Sebastian Herholz 和另一位 Intel 光线追踪工程师 Addis Dittebrandt 领导主要开发工作。其他贡献还有来自 Blender 社群,以及 Chaos 社群。
技术细节与运作模式
Intel 的 Open PGL 对场景的光线分布进行近似处理,以指导光线交叉处对重要方向(即具有较强间接照明的方向)的采样决策。场景光分布的近似可以通过在渲染过程中当场学习,或者像 V-Ray 整合的情况一样,在渲染预处理中学习。
为了表示整个场景的高维光分布(即光场)的近似值,场景的空间域首先被细分为较小的区域,每个区域都存储着局部入射光分布的近似值。这个近似值类似于光探针(light probe),对其对应的相应区域内的位置有效。
在渲染过程中,每当对新的方向进行采样时,就会查询当前交叉点的光线分布,并使用它来引导路径朝着对渲染图像有高贡献的重要方向前进。(参考文献[3],[4])。通过引导与表面和体积相互作用的路径,Intel Open PGL 提高了在复杂的间接照明场景中的采样质量,如多次反射的漫反射照明、多次散射的体积照明,甚至更简单的直接和间接焦散效果。
在 V-Ray 6.1 中实现 Intel Open PGL 技术
V-Ray 6.1 在 V-Ray 的 CPU 版本中实现了 Open PGL 的初始试验版。目前,训练样本是在 V-Ray 的灯光缓存(Light cache)构建过程中生成的,因此您可在灯光缓存设置中找到路径引导选项:
这使得路径引导在计算出灯光缓存后,可同时用于渐进式与小块儿(Bucket)式渲染模式。漫反射(GI)和光泽反射都可通过路径引导变得更加逼真,也可以对体积中的间接光照进行采样。这样做的目的是为了减少这类效果中的噪点,以实现更快的渲染时间。VRayMtl 材质、VRayEnvironmentFog 大气效果和 VRayVolumeGrid 都支持路径引导。
由于路径引导库是在灯光缓存计算阶段进行训练的,增加灯光缓存细分通常会导致更快的最终渲染时间,因为引导引擎有更多的数据可使用。
结果
路径引导功能的实现仍处于实验阶段并正在开发中。因此,其结果与场景有很大的关系--在某些场景中,路径引导可显着地改善渲染时间,而在某些场景中,则不会有太大帮助。我们在大部分场景中看到通过间接光照下照亮整个场景时,可以得到最佳效果。以下是一些场景示例,其中路径引导显著提高了渲染时间。
示例 1
通过 OpenPGL 技术,使用 V-Ray 自适应穹顶灯和路径引导进行渲染
(本场景购自 Turbosquid: http://www.turbosquid.com/3d-models/scenes-loft-3d-model/685003)
与非自适应渲染相比,路径引导和 V-Ray 自适应穹顶灯都有助于大幅减少渲染时间。它们各自提供了显著的速度提升,而且它们的组合效果也非常好,能够产生最快的结果。在下表中,显示了 VRaySampleRate 渲染元素以及不同设置下的渲染时间。场景设置为每像素最多 40 个 AA 细分(即每像素 1600 个样本)来渲染。灯光缓存设置为 3000 个细分点(即 900万个 Image sampler)。在左上角的非自适应结果中,即使这么多的样本也不足以在影像的某些区域(即用红色标示的部分)完全达到所需的(基于变异性)的噪点阈值。
下面的渲染图显示了灯光缓存的细分对路径引导效率的影响。更多的灯光缓存细分给路径引导函式库提供了更多的训练样本,所以在最终渲染过程中灯光缓存能够更好地引导光线。
示例 2
通过 Open PGL 使用自适应顶灯和路径引导进行渲染
(Sibenik 大教堂场景来自 Radiosity Competition: (http://hdri.cgtechniques.com/~sibenik2/)
在这个示例中,路径引导和自适应穹顶灯都有助于减少渲染时间,尽管在这种照明情境下,路径引导的影响要大得多--这是因为很大一部分环境被室内外的几何体挡住了。场景设置用 30 个 AA 细分(每个像素最大 900 个样本)和 0.03 的噪点阈值来渲染。路径引导有助于大幅减少所需的样本数量,以达到相同的噪点水平。灯光缓存设置为使用 3000 个细分(即 900万个 Image sampler)。
对于本场景,使用预设的灯光缓存细分值 1000 并不能真正让路径引导改善渲染效果。但是,使用更多的细分值会使路径引导效果更好,因为有更多关于场景的信息可使用。
未来的开发
尽管这个初步的实现已经在某些情况下证明是有帮助的,但在不久的将来还会完成更多的工作:
- 提高路径引导的性能,让更多的场景受益。目前,使用路径引导是要耗费额外成本的,所以在 GI/反射不是噪点的主要来源的场景中,这个选项不是很有用。
- 扩展对更多材质类型的支持—我们已经在做了,比如 VRayScannedMtl 材质,光滑折射…等等。
- 在渐进式渲染过程中持续学习,以显著提高结果。
- 启用 brute-force GI 的路径引导,作为 "自适应预处理 "选项。
其他先进的光线追踪技术
您是否想更了解更多有关 Intel® oneAPI 渲染工具包中其他进阶光线追踪软件的信息,包括获得奥斯卡奖的 Intel Embree、Intel® Open Image Denoise(应用于电影《The Addams Family 2》)、Intel® Open Volume 核心函式库等。所有的函式库都可从 Intel 获得,而且是开放原始码(Github)。
- 了解更多关于 Intel® Open PGL 的信息,请访问openpgl.org
更多关于 V-Ray 6.1 与其功能的信息
更多信息,您可聆听「光线追踪、路径追踪和路径引导 - 用 Chaos 和 Open PGL 更有效率地找寻光源」的新一集播客。该播客是英特尔「Code Together」播客系列的一部分。您可以在任何播客平台上找到这集播客,例如 Spotify 或 Apple Podcasts,或者您也可以直接在以下链接中收听:
V-Ray 6.1 还有其他改进功能。了解更多信息请访问www.chaos.com/vray/3ds-max/whats-new ,完整的更新日志可访问 docs.chaos.com/display/VMAX/V-Ray+6
参考文献
[0] Path Guiding in Production (https://dl.acm.org/doi/10.1145/3305366.3328091)
[1] Robust fitting of parallax-aware mixtures for path guiding (https://dl.acm.org/doi/10.1145/3386569.3392421)
[2] Practical Path Guiding for Efficient Light-Transport Simulation (https://dl.acm.org/doi/10.1111/cgf.13227)
[3] Volume Path Guiding Based on Zero-Variance Random Walk Theory (https://dl.acm.org/doi/abs/10.1145/3230635)
https://cgg.mff.cuni.cz/~jaroslav/papers/2019-volume-path-guiding/index.html
[4] Product Importance Sampling for Light Transport Path Guiding (https://dl.acm.org/doi/10.5555/3071773.3071781)
https://cgg.mff.cuni.cz/~jaroslav/papers/2016-productis/