生产中的 Path Guiding
Jiří Vorba(组织者,Weta Digital)、Thomas Müller(NVIDIA)、Johannes Hanika(组织者,Weta Digital)、Jaroslav Křivánek(查尔斯大学,布拉格 / Render Legion)、Sebastian Herholz(蒂宾根大学)、Alexander Keller(NVIDIA)
SIGGRAPH 2019 课程
允许个人或课堂使用本作品的部分或全部内容制作数字或硬拷贝,无需付费,前提是这些拷贝不得用于盈利或商业目的,并且拷贝必须附有本声明和首页的完整引用。必须尊重本作品中第三方组件的版权。对于所有其他用途,请联系所有者/作者。版权归所有者/作者所有。SIGGRAPH ‘19 Courses,2019 年 7 月 28 日至 8 月 1 日,美国加利福尼亚州洛杉矶。ACM 978-1-4503-6307-5/19/07。DOI: 10.1145/3305366.3328091
摘要
Path guiding 是物理渲染中一系列自适应方差缩减技术,包括对直接和间接光照、表面和体积进行采样的方法,也包括对最优路径长度进行采样和做出分裂决策的方法。自从几年前路径追踪成为 VFX 行业事实上的标准以来,人们对以每像素少量 Monte Carlo 样本生成高质量图像的兴趣日益增加。Path guiding 在过去几年中受到研究界的关注,已被证明对此任务有用,因此已被 Weta Digital 采用;最近,它也在 Walt Disney Animation Studios 的 Hyperion 和 Pixar 的 RenderMan 中实现。
本课程的目标是分享我们在生产中使用 path guiding 的实践经验,提供对最近发表技术的自包含概述,并讨论它们的优缺点。我们还将带领听众了解各种 path guiding 方法的理论背景——这些方法大多基于机器学习(用于根据观察到的样本调整采样分布),以及零方差随机游走理论(用作以最优方式组合不同采样决策的框架)。在课程结束时,我们将讨论未解决的问题,并邀请研究人员在未来的工作中进一步发展 path guiding。
注意:本文对应课程讲义的手稿版本。你可以在 http://cgg.mff.cuni.cz/~jirka/path-guiding-in-production/2019/index.html 找到最终版本。
1 目标
在本课程中,我们分享在使用引导方法方面的实践经验,这些经验来自在 Weta Digital 的生产渲染器 Manuka 中使用引导方法,以及在华特迪士尼动画工作室使用的渲染器 Hyperion 中实现引导。本课程的另一个目标是对最近发表的关于各种引导方法的著作进行梳理。有些方法是相互竞争的,有些是正交的,有些可以部分结合以形成更好的采样方案。我们识别这些关系,并为未来研究的重要方向提供建议。我们还为不熟悉引导方法的人提供介绍,涵盖理论以及来自机器学习或中子输运等各个领域的一些概念——这些是引导方法背后的基础。
总之,我们的主要目标是:
- 分享在生产中使用引导方法的实践经验;
- 概述当前的引导方法并讨论它们的优缺点;
- 涵盖理论背景,使听众对 path guiding 有扎实的理解;
- 与社区分享该领域的开放问题和可能的研究课题。
2 课程大纲
2.1 14:00 — 开场陈述与介绍,Jiri Vorba(15 分钟)
我们将 path guiding 介绍为一类用于减少基于 Monte Carlo 的路径追踪器中方差的方法,并阐述本课程的目标(见上文)。我们提供在生产中采用 path guiding 的动机,概述一些典型场景——其中 path guiding 方法可以大幅减少需要追踪的路径数量(例如间接照明、焦散、在多光源之间选择)——并根据这些方法试图改进的随机决策对它们进行分类。
2.2 14:15 — 理论背景,Jaroslav Křivánek(15 分钟)
我们简要回顾基本的 Monte Carlo 渲染算法,如路径追踪、光源追踪、光子映射和双向路径追踪。我们将「path guiding」的含义定义为:在路径构建中尝试执行全局最优决策。我们讨论各种数据驱动的学习重要性的方法,并将其与统计学习中的基本问题(如密度估计和回归)联系起来。我们简要讨论与零方差随机游走理论的关系,并列出良好引导方法的理论和实践要求,如计算效率、低内存开销、在简单场景中的最小开销、鲁棒性等。
2.3 14:30 — 多光源采样中的贝叶斯推断,Jaroslav Křivánek(15 分钟)
制作场景通常包含数十、数百甚至数千个光源,而整个场景中只有不同的子集可见。这使得直接照明的采样变得具有挑战性且不可预测。如果 path guiding 仅为间接照明学习最优采样决策,那么来自选择光源连接的方差仍然可能很大。Jaroslav 将讨论 Vévoda 等人(2018)最近提出的一种基于贝叶斯推断进行多光源采样的方法。贝叶斯学习基于先验假设,这些假设由后续观察(即采样路径)修正,而这些观察提供了关于给定场景真实统计特性(包括遮挡)的证据。
2.4 14:45 — 引导与阴影光线,Alexander Keller(30 分钟)
Alex 将介绍另一种数据驱动的多光源采样方法:它首先计算并存储光源可见性,并在下一事件估计期间充分利用这些信息。这产生了一种针对阴影光线的引导技术,有潜力大幅减少路径追踪中的噪声。
2.5 15:15 — 生产中的引导方法,Thomas Müller(30 分钟)
我们在迪士尼的 Hyperion 渲染器(Burley et al., 2018)中实现了「Practical Path Guiding」算法(Müller et al., 2017),用于电影制作。Thomas 将从高层面上介绍该算法,并描述我们基于最近发表的材料(Müller et al., 2018)开发的三个扩展,以进一步提高该算法在生产环境中的效果。这些扩展是:(i) 逆方差加权样本组合,以避免浪费样本;(ii) 空间-方向过滤,以提高对高频照明的鲁棒性;(iii) 在线学习 BSDF:guiding 比率,以改进对高光泽材质的处理。包含这些扩展的 Mitsuba 源代码已在 https://github.com/tom94/practical-path-guiding 公开。
2.6 15:45 — 休息(15 分钟)
2.7 16:00 — 体积路径引导,Sebastian Herholz(30 分钟)
在参与介质中,路径构建受到散射方向和距离采样、俄罗斯轮盘赌以及分裂策略的影响。Sebastian 将介绍一种体积路径构建技术(Herholz et al., 2019),其中所有这些采样决策都由一个缓存的伴随光传输解估计来引导。这种采样策略基于零方差传输估计器理论,并考虑了体积传输中的空间和方向变化。具体来说,路径通过按透射率与伴随传输解(即内散射辐射亮度)的乘积成比例地采样碰撞距离来增量构建;散射方向同样按相位函数与入射辐射亮度估计的乘积采样。结合为体积量身定制的自适应俄罗斯轮盘赌与分裂策略,与单向方法相比方差大大降低。Sebastian 还将讨论他在生产渲染器(如 Weta Digital 的 Manuka)中实现该方法的经验。
2.8 16:30 — 路径空间中的引导,Johannes Hanika(30 分钟)
Johannes 将承接上一场演讲中提出的想法——特别是关于体积采样和俄罗斯轮盘赌——并将它们与路径空间中完整路径的引导(Simon et al., 2018)联系起来。沿着完整的引导路径引导新样本,而不是沿着每次只引导低维部分的边缘化分布,透明地包含了所有方面。它还允许我们使用更简单的单峰函数来表示引导样本周围的连续 PDF。然而,边缘化缓存和完整路径各有优缺点。这些特性将被系统地分析和分类,并无缝过渡到下一个演讲。
2.9 17:00 — 开放问题与未来工作,Jiri Vorba(15 分钟)
我们识别出最紧迫的问题,并与研究社区分享,以便进一步探索 path guiding 方法。我们还讨论了其中一些方法组合的可能性,以便将它们的优点结合起来形成更高效的算法。
我们涵盖的一些方面包括:
- 所谓的全局探索问题,这与在局部探索之前首先找到一条有用的路径有关;
- 效率驱动的俄罗斯轮盘赌;
- 与边缘化/缓存引导方法(marginalised/cached guiding methods)相关的问题;
- 与「路径空间路径引导(path space path guiding)」相关的问题;
- 与直接光照采样和光源选择相关的问题。
3 课程核心内容概要
以下为课程讲义后续各章的核心内容概要,完整细节请参阅上文给出的最终版本讲义链接。
3.1 理论背景(第 6 章)
课程回顾了 Monte Carlo 光传输算法家族——路径追踪、光源追踪、光子映射、双向路径追踪——并将 path guiding 形式化为在路径构建的每一步逼近「全局最优决策」的过程。理论上有两个支柱:
- 数据驱动的统计学习:把「学习最优采样分布」看作密度估计与回归问题——从已观察到的样本中学习场景中的辐射亮度分布,并用它调整后续采样。
- 零方差随机游走理论:如果采样分布恰好与被积函数成正比,Monte Carlo 估计器的方差为零。虽然无法精确达到,但该理论为「如何最优地组合不同采样决策」提供了框架——包括何时终止路径(俄罗斯轮盘赌)、何时分裂路径。
一个好的引导方法还需要满足实践要求:计算开销低、内存占用小、在简单场景中几乎没有额外成本、对复杂场景鲁棒。
3.2 Path Guiding 的应用分类(第 7 章)
课程按引导方法试图改进的随机决策对其分类:
- 直接光照:在多光源场景中学习选择哪个光源采样(与多光源采样问题交叉)。
- 间接光照:学习入射辐射亮度的空间-方向分布,引导路径追踪的反弹方向——这是 PPG 等方法的核心。
- 直接与间接的结合、焦散、光泽间接光照、引导式俄罗斯轮盘赌与分裂、引导式光源/光子追踪发射,以及与高级双向算法的结合。
成功的引导方法需要在探索(exploration,发现重要路径)与利用(exploitation,沿已知重要方向采样)之间取得平衡。
3.3 多光源采样中的贝叶斯推断(第 8 章)
Vévoda 等人(2018)的方法将光源选择视为贝叶斯学习问题:对场景中每个光源的贡献(含遮挡)维护一个先验分布,渲染过程中观察到的每条路径都作为证据更新后验。这种方法自然地在线学习遮挡关系,无需任何预处理或用户干预,非常适合光源数量巨大且可见性复杂的生产场景。
3.4 引导与阴影光线(第 9 章)
Alex Keller 介绍了另一种数据驱动的多光源采样思路:先计算并存储光源可见性信息,再在下一事件估计(next-event estimation)中利用它引导阴影光线的发射。内容涵盖重要性采样基础、重采样重要性采样(RIS)、光源层次结构、将可见性纳入采样、部分累积分布函数(CDF)、多重重要性采样(MIS)以及哈希与随机插值等降低存储与查询开销的技巧,还包括用光子映射引导阴影光线、以及学习「应该发射哪些阴影光线」。
3.5 Practical Path Guiding 在生产中(第 10 章)
Thomas Müller 详细介绍了 PPG 算法及其在迪士尼 Hyperion 中的生产化改造:
- PPG 算法核心:用 SD-tree(空间-方向二叉树)存储入射辐射亮度的估计,空间上自适应细分、方向上用四叉树表示半球分布;渲染以迭代方式进行,每一轮用上一轮的辐射亮度估计引导采样,并不断细化 SD-tree。
- 扩展 1:逆方差加权样本组合——将不同迭代轮次(分辨率不同)的样本按方差倒数加权合并,避免早期粗糙迭代的样本被浪费。
- 扩展 2:向 SD-tree 进行空间-方向 splatting——把样本能量「涂抹」到相邻叶节点,相当于对高频照明做空间-方向滤波,提高对高频光照的鲁棒性。
- 扩展 3:MIS 选择概率的在线优化——通过最小化 Kullback-Leibler 散度,在线学习 BSDF 采样与 guiding 采样之间的最优 MIS 混合比例,显著改善高光泽材质的表现。
- 伴随驱动的俄罗斯轮盘赌与分裂:用伴随解(即路径对图像的贡献)的估计来决定路径终止与分裂,把计算预算分配到对图像贡献大的路径上。
3.6 体积零方差路径引导(第 11 章)
Sebastian Herholz 介绍了将零方差理论系统应用于参与介质的方法(Herholz et al. 2019):
- 引导乘积距离采样:按「透射率 × 内散射辐射亮度估计」的乘积成比例地采样自由飞行距离,而非只按透射率采样——使路径倾向于穿过对图像贡献大的体积区域。
- 引导乘积方向采样:按「相位函数 × 入射辐射亮度估计」的乘积采样散射方向。
- 引导式俄罗斯轮盘赌与分裂:基于伴随解估计自适应地调整路径的存活概率与分裂。
- 还讨论了如何将该方法集成到生产渲染系统中:训练/拟合入射辐射亮度分布的表示(方向混合模型)、相位函数表示,以及在 Weta Digital 的 Manuka 中的实践经验。
3.7 路径空间中的引导(第 12 章)
Johannes Hanika 介绍了另一种思路:不在每个顶点分别引导低维决策,而是在路径空间中沿着完整的「引导路径」采样新路径(Simon et al. 2018)。做法是先找到一条对图像有贡献的引导路径,然后在其周围用一个简单的单峰分布(如高斯)构造连续 PDF 来扰动生成新路径。这种方式透明地涵盖了所有采样维度(包括体积交互和俄罗斯轮盘赌),但边缘化缓存与完整路径两种表示各有优缺点,课程对它们进行了系统的比较与分类。
3.8 开放问题与未来工作(第 13 章)
课程最后讨论了该领域最紧迫的开放问题:
- 全局探索问题:在局部探索之前,如何首先找到一条有用的路径(尤其是在焦散等困难场景中);
- 效率驱动的俄罗斯轮盘赌:让路径终止决策直接优化「每单位计算量的方差缩减」;
- 边缘化/缓存引导方法的问题:缓存表示的偏差、内存与精度的权衡;
- 路径空间引导的问题:引导路径的代表性与多样性;
- 直接光照采样与光源选择:与多光源采样、可见性学习的结合。
这些方向至今仍是渲染研究的热点(如 ReSTIR、神经辐射缓存等后续工作都与之相关)。