(论文)[2023] 基于子空间的双向路径连接渲染技术(2)

基于子空间的双向路径连接渲染技术(2)

基于子空间的概率连接双向路径追踪

光选择函数及其最优形式

  • 光选择函数:\(\gamma(\bar{y},\bar{z}):\mathcal{S}\times\mathcal{S}\to\mathbb{R}\)
    • \(\bar{y}\vert\bar{z}\)
  • LVCBPT:\(\gamma(\bar{y},\bar{z})\propto p(\bar{y})\)
  • PCBPT:\(\gamma(\bar{y},\bar{z})\propto f(\bar{y}\bar{z})\)
  • 最优形式(需要考虑 MIS)

\[ \gamma^{\ast}(\bar{y},\bar{z})\propto w_t(\bar{y},\bar{z})f(\bar{y}\bar{z}) \]

  • 细化

\[ f_y(\bar{y}) =L_e(y_0,y_1)GV(y_0,y_1)\left[\prod_{i=1}^{s-2}\rho({y}_{i-1},{y}_i,{y}_{i+1})GV({y}_i,{y}_{i+1})\right] \]

\[ f_{yz}(\bar{y},\bar{z})=\rho({y}_{s-2},{y}_{s-1},{y}_{t-1})GV({y}_{s-1},{y}_{t-1})\rho({y}_{s-1},{y}_{t-1},{y}_{t-2}) \]

\[ f_z(\bar{y}) =W_e({z}_{0},{z}_z)GV(z_0,z_1)\left[\prod_{i=1}^{t-2}\rho({z}_{i+1},{z}_i,{z}_{i-1})GV({z}_{i+1},{z}_{i})\right] \]

  • 给定 \(\bar{z}\) 最优形式如下

\[ \gamma^{\ast}(\bar{y},\bar{z})\propto w_t(\bar{y},\bar{z})f_{y,z}(\bar{y},\bar{z})f_{y}(\bar{y}) \]

子空间与离散化的光选择函数

  • \(\gamma(\bar{y},\bar{z}):\mathcal{S}\times\mathcal{S}\to\mathbb{R}\)
  • 子空间:\(\gamma(\bar{y},\bar{z})\) 的一个子集
    • 期望同一子空间中的子路径具有较低的差异性
    • 如此就能同一子空间共享同一光选择分布
  • 视子空间:\(\kappa_{\mathcal{E}}(\bar{z})\)
  • 光子空间:\(\kappa_{\mathcal{L}}(\bar{y})\)
  • 离散近似
    • \(f_y\) 容易处理,\(f_{yz},w_t\) 使用离散矩阵 \(\Gamma\) 近似

\[ \gamma(\bar{y},\bar{z})\approx\gamma_r(\bar{y},\bar{z})= \dfrac {\Gamma(\kappa_{\mathcal{L}}(\bar{y}),\kappa_{\mathcal{E}}(\bar{z}))f_y(\bar{y})} {Q(\bar{z})} \]

  • \(\Gamma\):子空间之间的光选择函数,称为子空间采样矩阵

\[ \sum_{i}\Gamma(i,j)=1 \]

  • \(Q\):归一化,保证 \(\gamma\) 是个分布

\[ Q(\bar{z})=\int_{\mathcal{S}}\Gamma(\kappa_{\mathcal{L}}(\bar{y}),\kappa_{\mathcal{E}}(\bar{z}))f_y(\bar{y})\;\mathrm{d}\mu(\bar{y}) \]

两阶段采样方法

  • 阶段一:视子路 \(\bar{z}\) \(\to\) 找到视子空间 \(\kappa_{\mathcal{E}}(\bar{z})\) \(\to\) 采样光子空间 \(\Gamma(\kappa_{\mathcal{L}}(\bar{y})\vert\kappa_{\mathcal{E}}(\bar{z}))\)
  • 阶段二:在 \(\kappa_{\mathcal{L}}(\bar{y})\) 中按照正比于 \(f_y(\bar{y})\) 的概率采样得到 \(\bar{y}\),与 \(\bar{z}\) 进行连接

第二阶段的重采样

  • 直接采样很难满足正比于 \(f_y(\bar{y})\)
  • Resampled Importance Sampling(RIS)
  • RIS 流程大致如下
    • 为了从目标分布 \(q\) 中生成样本,RIS 首先需要一个辅助采样分布 \(p\)
    • \(p\) 可以很容易采样,并且需要满足对任何 \(q>0\) 的样本,都有 \(p>0\)
      • 只要满足这些条件,\(p\) 可以被任意指定
    • RIS 首先需要从分布 \(p\) 中生成多个候选样本,然后从候选样本中以正比于 \(\dfrac{q}{p}\) 的概率选择输出的样本
    • 只要候选样本的规模足够大,RIS 可以产生接近目标分布的样本
  • RIS 应用:\(q=f_y(\bar{y}),p=p(\bar{y})\)
  • 追踪候选的光子路径是预先处理的,和 LVCBPT 类似
  • 算法
    • 大量的光子路首先被追踪并被 \(\kappa_{\mathcal{L}}\) 分类到各自的子空间中
    • 对于一个视子路径 \(\bar{z}\),我们通过 \(\kappa_{\mathcal{E}}\) 将其分入相关的视子空间,使用矩阵 \(\Gamma\) 对相应的光子空间进行采样,并在光子空间对应的子空间 LVC 内对候选光子路径进行重采样

开销

  • 相比于 LVCBPT,额外开销如下
    • 对于每一个子路径执行一次子空间查询 \(\Gamma\)
      • 不同子路径复用
    • 两次采样分布(RIS)

MIS 权重

  • 只需要满足 \(\sum_{t}w_t(\bar{x})=1\),那么结果就是无偏的
  • 对于完整路径 \(\bar{x}=\bar{z}\bar{y}\) ,某一种采样策略 \(p_t\)采样概率如下

\[ \begin{aligned} p_t(\bar{x}) &=p(\bar{z})\gamma_r(\bar{y}\mid\bar{z})&(1)\\ &=p(\bar{z})\dfrac {\Gamma(\kappa_{\mathcal{L}}(\bar{y}),\kappa_{\mathcal{E}}(\bar{z}))f_y(\bar{y})} {Q(\bar{z})}\\ &\propto p(\bar{z})\Gamma(\kappa_{\mathcal{L}}(\bar{y}),\kappa_{\mathcal{E}}(\bar{z}))f_y(\bar{y})\\ \end{aligned} \]

  • \(p_t\) 作为 MIS 的依据,使用平衡启发式
  • \(\gamma\) 计算中,重采样分布解析式难以计算(RIS 最终会趋向于 \(\propto f_y\)
    • 实际采样如下,最后两步有相关性,\(f/p\) 解析式难算

\[ p(\bar{z})\Gamma(\kappa_{\mathcal{L}}(\bar{y}),\kappa_{\mathcal{E}}(\bar{z}))\cdot p(\bar{y})\cdot \dfrac{f_y(\bar{y})}{p(\bar{y})} \]

  • 我们使用 \(f_y\) 来代替第二部分重采样的概率
    • 是无偏的,相当于 \(\sum_{t}a_t(x)b_t(x)=1\) 使用 \(\sum_{t}a_t(x)c_t(x)=1\) 代替了
    • 还得保证 \(c_t(x)\) 在不同的计算下都是一致的(近似一致性)(是个函数)

最优化子空间采样矩阵

  • \(\Gamma\):用于近似 \(w_{t}f_{yz}\)

循环依赖问题

  • \(\Gamma\longleftrightarrow w_t\)
  • 之前工作:Variance-Aware PT
    • 迭代不能取得最优值
    • 原始论文假设迭代轮之间变化缓慢,迭代的方法能收敛到最值

方差分析与全局最优化思想

\[ E(\hat{I}^2)=\int_{\Omega}\dfrac{f^2(\bar{x})}{\mathcal{F}(\bar{x})}\;\mathrm{d}\mu(\bar{x})\\ \]

  • 平衡启发式等价于大分布采样:\(\mathcal{F}(\bar{x})=\sum_{t}p_t(\bar{x})\)
  • 根据上面的式子 \((1)\),某一种采样策略 \(p_t(\bar{x})\) 将和 \(\Gamma\) 中的某一项成正比
  • 于是 \(\mathcal{F}\) 将和 \(\Gamma\) 中的多个项成线性相关,记号

\[ g_{i,j}(\bar{x})=\dfrac{\partial\mathcal{F}(\bar{x})}{\partial\Gamma_{i,j}} \]

  • 于是有如下式子,\(g_0\) 表示非连接策略带来的结果(例如 PT 直接打到光源)

\[ \mathcal{F}(\bar{x})=\sum_{t}p_t(\bar{x})=g_0(\bar{x})+\sum_{i,j}\left(g_{i,j}(\bar{x})\Gamma_{i,j}\right) \]

  • 如此 \(\mathcal{F}\) 是多个函数 \(g_{i,j}\) 的混合,\(\Gamma_{i,j}\) 表示混合比例,此时求最优的混合比例是一个凸优化问题
    • Minimum variance importance sampling via population Monte Carlo
    • Variance Analysis of Multi-sample and One-sample Multiple Importance Sampling
  • 实现上,预先追踪一部分光路作为训练集,使用梯度下降法最小化方差,获取最优 \(\Gamma\)

子空间划分

  • 子空间对于视子路径和光子路径是共用的
  • 光子路径中直接光照做特殊处理(有很多现成方法:LightCuts 方法)
    • 实践上,将面光源或是环境光源依照其 uv 坐标做网格切分,每一个格子中的子路径集合是一个光子空间
  • 一般子空间:通过中心子路径——距离函数的方式定义分类函数
    • 中心子路径集 \(\{\bar{C_i}\}\),距离函数 \(d\),一个子路径属于离他最近的子空间
  • \(\kappa\) 定义如下

\[ \kappa(\bar{y})=\mathop{\arg\min}_{i}\;d(\bar{C_i},\bar{y}) \]

  • 实践中,从高贡献路径的前缀/后缀中采样中心子路径集 \(\{\bar{C_i}\}\),以适应性地提高对那些重要的路径的估计精度

距离公式

  • 光子路径为例
    • 距离相近的光子路径,在与相同的视子路径连接时,光选择函数 \(\gamma\) 相近
  • \(\gamma=w_t\cdot f_{yz}\cdot f_y\)
    • \(f_y\) 在重采样中被处理了
    • \(w_t\) 过于复杂
    • 试图处理 \(f_{yz}\)
  • \(f_{yz}\) 影响因素:\(\rho\cdot GV\cdot\rho\)
    • 可见性:子路径末端位置
    • 材质项:子路径末端位置、法线、入射方向
    • 几何项:子路径末端位置、法线
  • 特制距离公式如下

\[ d=d_s^2+\sigma_s^2(1-\cos\theta_n)+k_d\sigma_s^2(1-\cos\theta_d) \]

  • \(d_s\):空间位置距离
  • \(\theta_n\):法线夹角
  • \(\theta_d\):入射角夹角
  • \(\sigma_s^2\):衡量场景的空间尺度
    • 追踪一组完成路径,考虑所有路径顶点空间位置上的方差 \(\sigma_s^2\)
  • \(k_d\) :权重,实践中发现作用不大,设置为 0~0.05

决策树拟合

  • 子空间的数目量级:数百至一千
  • 最近邻效率低,使用决策树拟合
  • 实践
    • 生成一组子路径,最近邻将子路径分入空间,并打上标记(序号)
    • 使用带标记的子路径构建决策树,节点标记如下
      • 决策树节点的标记为子路径标签的众数
      • 如果节点不含有子路径,则与父节点在相同
    • 决策树分裂
      • 随机选择位置、法线、入射方向中的一个属性进行分裂
      • 如果 99% 的子路径被正确分类(中众数比例大于 99%),则结束分裂
    • 决策树节点的包围盒的中心值作为决策阈值
  • 构建过程与可视化

子路径跨帧重用

  • 重采样:候选光子路数目越多越好
    • 复杂设定下无法保证每个子空间都有足够多的样本
  • 跨帧重用:保证每个子空间都有足够样本
  • 每一个子空间,维护一个先进先出的队列,只保存 \(M_0\) 个最新的子路径样本
    • 实操:\(M_0=200\) 已经足够

算法

  • BDPT/PT 打出大量完整光子路,进行子空间划分,构建 \(Q,\Gamma\)
  • 进入迭代循环:
    • 追踪大量光子路,缓存至对应子空间的 LVC 中
    • 追踪视子路,两阶段采样法采样光子路
    • 连接,计算贡献值