(论文)[2023] 基于子空间的双向路径连接渲染技术(5)
基于子空间的双向路径连接渲染技术(5)
代理追踪技术
处理镜面连接
- 视子路末端顶点在漫反射表面上,光子路 \(\bar{y}=y_0\cdots y_{s-1}\) 末端顶点 \(y_{s-1}\) 在光滑表面上
- 固定视子路,重新采样光子路
- 目的:让光滑表面的 BSDF 表现正常
- 固定 \(y_{s-1}\) 重新采样 \(y_{s-2}\) 使得 \(y_{s-1}\) 的 BSDF 表现正常
- 如果 \(y_{s-2}\) 也是光滑表面,则也需要重追踪采样 \(y_{s-2}\)
- 也就是说如果 \(\bar{y}\) 末端有 \(u\) 个连续的光滑顶点,则需要重新采样 \(y_{s-2}\cdots y_{s-u-1}\)
- 采样过程:
- 反向追踪
- 先根据 \(z_{t-1}\to y_{s-1}\) 重追踪 \(y_{s-2}\)
- 如果还有光滑顶点,则继续(\(y_{s-1}\to y_{s-2}\) 重追踪 \(y_{s-3}\),以此类推),否则停止
- 材质不变
- 保证重追踪的顶点材质和之前相同
- 这样可以让一条路径对应的残缺路径被唯一确定,简化 PDF 计算
- 不加限制:\(\text{LDSDE}\) 的路径可能被 \(\text{LSSDE}\) 的路径重追踪得到
路径划分
- 残缺路径 \(\bar{h}\) 包含完整视子路 \(\bar{z}\)、残缺光子路 \(\bar{h}_y\)
- 光子路 \(\bar{y}\) 如下
- 重追踪 \(\bar{g}\) 中顶点
- 残缺路径的 PDF
\[ p(\bar{h})=p(\bar{h}_y)p(\bar{z}) \]
- 一条完整的光子路 \(\bar{y}\) 的生成过程,概率如下
\[ p(\bar{y})=p(\bar{h}^{\ast})\cdot p(\bar{g}\mid\omega_c,h_c)\cdot p(y_{s-1}\mid h_c,\bar{g}) \]
- 只需要通过倒数评估估计 \(p(\bar{h}_y)\)
- 概率为所有能够生成 \(\bar{h}_y\) 的完整光子路的概率
- \(R\) 表示修复操作,\(R\left(\bar{h}_{y},\bar{g}\right)\) 就是完整路径
\[ \begin{aligned} p(\bar{h}_y) &=\int_{A^{u}}p\left[{R\left(\bar{h}_{y},\bar{g}\right)}\right]\;\mathrm{d}\mu(\bar{g})\\ &=\int_{A^{u}}p\left(\bar{h}^{\ast}\right)\cdot p\left(\bar{g}\mid\omega_c,h_c\right)\cdot p\left(y_{s-1}\mid h_c,\bar{g}\right)\;\mathrm{d}\mu(\bar{g})\\ &=p\left(\bar{h}^{\ast}\right)\int_{A^{u}}p\left(\bar{g}\mid\omega_c,h_c\right)\cdot p\left(y_{s-1}\mid h_c,\bar{g}\right)\;\mathrm{d}\mu(\bar{g})\\ &=p\left(\bar{h}^{\ast}\right)\mathcal{P}\left(u,h_c,y_{s-1},\omega_c\right)\\ \end{aligned} \]
- \(\mathcal{P}\)
只取决于如下几个变量
- 控制顶点 \(h_c\)
- 镜面点 \(y_{s-1}\)
- 控制方向 \(\omega_c\)
- 连续光滑顶点的个数 \(u\)
- 如果 \(\bar{g}\) 包含 \(y_0,y_1\),则 \(h_c,\omega_c\) 不存在
- 注意:这几个变量在光子路追踪时可以获取到,因此可以在光子路追踪时进行倒数评估,减小开销
不同路径的处理
- 无偏估计 \(\dfrac{1}{\mathcal{P}}\) 时,需要有一个辅助分布 \(q(\bar{g})\)
- \(q(\bar{g})\)
可行策略集中的均匀混合
- 例如:\(u=1\land y_0\in\bar{g}\) \(\Rightarrow\) 光源采样 + 从镜面点出发追踪
光源采样
- \(u=1\land y_0\in\bar{g}\)
- 随机在光源表面采样
- \(u>1\) 时不使用,固定 \(y_{s-1}\) + 随机采样 \(y_0\) 无法找到镜面约束的中间顶点
- 概率为 0
从控制顶点出发追踪
- \(u=1\land y_0\notin\bar{g}\)
- \(h_c=y_0\):光源所处的半球空间中 \(\cos\) 均匀采样
- \(h_c\ne y_0\):根据 \(\omega_c,h_c\) 进行 BSDF 重要性采样
- \(u>1\) 时不使用,理由同上
从镜面点出发追踪
- 该策略都可用
- 流程
- 从 \(y_{s-1}\) 的半球空间中采样初始方向,得到 \(y_{s-2}\)
- 接着根据 \(y_{s-1}\to y_{s-2}\) 方向根据 \(y_{s-2}\) 的 BSDF 进行采样
- 知道采样 \(\bar{g}\) 完成后停止
子空间统计量
- 统计量无法在一次评估中获取
- 优化倒数评估过程需要用到 \(\dfrac{p(\bar{h})}{q(\bar{h})}\)
- 参数 \(B\)
- MIS 权重需要用到倒数评估的期望
- 优化倒数评估过程需要用到 \(\dfrac{p(\bar{h})}{q(\bar{h})}\)
- 使用子空间作为倒数评估的媒介
- 预追踪一部分镜面投射光路 ,取 \(h_c,\omega_c\) 为样本建立控制子空间,取
\(y_{s-1}\) 为样本建立镜面子空间
- 控制子空间:\((h_c,\omega_c)\to\)
控制子空间编号 \(C\)
- \(C\) 为
- 镜面子空间:\(y_{s-1}\to\) 镜面子空间编号 \(S\)
- 控制子空间:\((h_c,\omega_c)\to\)
控制子空间编号 \(C\)
- 于是 \(\mathcal{P}\) 的一个三维矩阵近似如下
\[ \mathcal{P}\left(u,h_c,y_{s-1},\omega_c\right)\approx \mathcal{P}\left(u,C,S\right) \]
- 注意:这个近似只会用于对 \(B\) 和 MIS 权重的评估,而不作为倒数评估的结果
与子空间概率连接的结合
- 代理追踪方法能够实现对镜面投射光路的高效采样
- 可以使用 SPCBPT 的思想,为光子路残缺路径建立子空间,改善光子路残缺路径的选取
细节
- 重采样
- SPCBPT 中光子路的局部贡献值 \(f_y\) 会被用于重采样,但是残缺路径 \(\bar{g}\) 的局部贡献值不可知,需要与视路径连接并以重追踪构筑完整光路之后才能够得到
- 因此对于残缺光路的重采样就是直接在子空间内部均匀采样
- 存储
- 重追踪后镜面点的入射方向不可知,残缺子路径直接根据镜面子空间 ID 进行子空间存储
- PDF 评估
- 倒数估算难以给出准确的 PDF 评估,采样子空间时不在追求全局最优,而是考虑光照能量在子空间之间的流通情况
- \(\Gamma[T,S]\propto\) 视子空间 \(T\) 中的视子路 \(\bar{z}\) 和镜面子空间 \(S\) 中的残缺光子路 \(\bar{h}_y\) 的链接在冲追踪之后得到的完整路径的贡献值的期望
SPCBPT & Proxy Tracing
- 代理追踪和子空间概率连接天然地就能得到良好的结合,我们使用代理追踪处理那些镜面投射光路,而使用SPCBPT 来处理那些一般的路径
- 代理路径追踪能够补全 SPCBPT 的短板