↓ 跳过正文

Metatron Dev. V: 抽样优化

Path Guiding
#

路径引导基于已有样本估计场景贡献, 通过MIS选择BSDF或PG, 结果无偏.

ReSTIR PG
#

局部路径引导拟合的理想分布为后缀贡献:

p(ωi∣p,ωo)∝f(p,ωo,ωi)Li(p,ωi)∣cos⁡θ∣ \begin{equation} p(\omega_i|\mathbf{p}, \omega_o) \propto f(\mathbf{p}, \omega_o, \omega_i)L_i(\mathbf{p}, \omega_i)|\cos\theta| \end{equation}

ReSTIR PT将路径贡献作为目标分布p^(x)=f(x)\hat{p}(\mathbf{x})=f(\mathbf{x}), 记A\mathcal{A}为场景表面, WeW_e为传感器响应, hxh_x为像素xx的重建滤波器, Le(pn)L_e(\mathbf{p}_n)为末端顶点自发光, 路径贡献函数为:

f(x)=We(p0→p1)G(p0↔p1)∏i=1n−1f(pi+1→pi→pi−1)G(pi↔pi+1)Le(pn) \begin{equation} f(\mathbf{x}) = W_e(\mathbf{p}_0 \to \mathbf{p}_1)G(\mathbf{p}_0 \leftrightarrow \mathbf{p}_1) \prod_{i=1}^{n-1} f(\mathbf{p}_{i+1} \to \mathbf{p}_i \to \mathbf{p}_{i-1})G(\mathbf{p}_i \leftrightarrow \mathbf{p}_{i+1}) L_e(\mathbf{p}_n) \end{equation}

定义逐顶点的传输因子TT并简化上式:

T(pi)={f(pi+1→pi→pi−1)G(pi↔pi+1),i>1We(p0→p1)G(p0↔p1)f(p2→p1→p0)G(p1↔p2),i=1 \begin{equation} T(\mathbf{p}_i) = \begin{cases} f(\mathbf{p}_{i+1} \to \mathbf{p}_i \to \mathbf{p}_{i-1})G(\mathbf{p}_i \leftrightarrow \mathbf{p}_{i+1}), & i > 1\\ W_e(\mathbf{p}_0 \to \mathbf{p}_1)G(\mathbf{p}_0 \leftrightarrow \mathbf{p}_1)f(\mathbf{p}_2 \to \mathbf{p}_1 \to \mathbf{p}_0)G(\mathbf{p}_1 \leftrightarrow \mathbf{p}_2), & i = 1 \end{cases} \end{equation} f([p0,…,pn])=∏i=1n−1T(pi) Le(pn) \begin{equation} f([\mathbf{p}_0, \dots, \mathbf{p}_n]) = \prod_{i=1}^{n-1}T(\mathbf{p}_i)\ L_e(\mathbf{p}_n) \end{equation}

记像素xx的路径空间为Ωx\Omega_x:

Cx=1∫Ωxf(x)dx \begin{equation} C_x = \frac{1}{\int_{\Omega_x} f(\mathbf{x})\mathrm{d}\mathbf{x}} \end{equation}

全体像素构成对整个路径空间Ω=⋃n=2∞An\Omega=\bigcup_{n=2}^\infty \mathcal{A}^n的分层抽样, 其密度为各像素分布的混合:

p(x)=Φ(p0,p1)f(x),Φ(p0,p1)=1N∑x=1NCx[hx(p0→p1)>0] \begin{equation} p(\mathbf{x}) = \Phi(\mathbf{p}_0, \mathbf{p}_1)f(\mathbf{x}), \quad \Phi(\mathbf{p}_0, \mathbf{p}_1) = \frac{1}{N}\sum_{x=1}^N C_x[h_x(\mathbf{p}_0 \to \mathbf{p}_1) > 0] \end{equation}

记dpa:b=dpa⋯dpb\mathrm{d}\mathbf{p}_{a:b}=\mathrm{d}\mathbf{p}_a \cdots \mathrm{d}\mathbf{p}_b, 约定a>ba > b时积分退化为被积函数本身:

p(pi+1∣p0,…,pi)=p(p0,…,pi+1)p(p0,…,pi)=∑n=i+1∞∫An−i−1p(x)dpi+2:n∑n=i+1∞∫An−ip(x)dpi+1:n \begin{equation} p(\mathbf{p}_{i+1}|\mathbf{p}_0, \dots, \mathbf{p}_i) = \frac{p(\mathbf{p}_0, \dots, \mathbf{p}_{i+1})}{p(\mathbf{p}_0, \dots, \mathbf{p}_i)} = \frac{\sum_{n=i+1}^\infty \int_{\mathcal{A}^{n-i-1}} p(\mathbf{x})\mathrm{d}\mathbf{p}_{i+2:n}} {\sum_{n=i+1}^\infty \int_{\mathcal{A}^{n-i}} p(\mathbf{x})\mathrm{d}\mathbf{p}_{i+1:n}} \end{equation}

Φ\Phi只依赖p0\mathbf{p}_0与p1\mathbf{p}_1, 条件i≥1i \geq 1已固定二者, 同时∏t=1i−1T(pt)\prod_{t=1}^{i-1}T(\mathbf{p}_t)与积分变量无关, 一并约去:

p(pi+1∣p0,…,pi)=∑n=i+1∞∫An−i−1∏t=1n−1T(pt)Le(pn)dpi+2:n∑n=i+1∞∫An−i∏t=1n−1T(pt)Le(pn)dpi+1:n=T(pi)∑n=i+1∞∫An−i−1∏t=i+1n−1T(pt)Le(pn)dpi+2:n∑n=i+1∞∫An−i∏t=in−1T(pt)Le(pn)dpi+1:n \begin{equation} \begin{aligned} p(\mathbf{p}_{i+1}|\mathbf{p}_0, \dots, \mathbf{p}_i) &= \frac{\sum_{n=i+1}^\infty \int_{\mathcal{A}^{n-i-1}} \prod_{t=1}^{n-1}T(\mathbf{p}_t)L_e(\mathbf{p}_n)\mathrm{d}\mathbf{p}_{i+2:n}} {\sum_{n=i+1}^\infty \int_{\mathcal{A}^{n-i}} \prod_{t=1}^{n-1}T(\mathbf{p}_t)L_e(\mathbf{p}_n)\mathrm{d}\mathbf{p}_{i+1:n}}\\ &= \frac{T(\mathbf{p}_i)\sum_{n=i+1}^\infty \int_{\mathcal{A}^{n-i-1}} \prod_{t=i+1}^{n-1}T(\mathbf{p}_t)L_e(\mathbf{p}_n)\mathrm{d}\mathbf{p}_{i+2:n}} {\sum_{n=i+1}^\infty \int_{\mathcal{A}^{n-i}} \prod_{t=i}^{n-1}T(\mathbf{p}_t)L_e(\mathbf{p}_n)\mathrm{d}\mathbf{p}_{i+1:n}} \end{aligned} \end{equation}

分子中T(pi)T(\mathbf{p}_i)之后的求和即入射辐亮度:

Li(pi+1→pi)=∑n=i+1∞∫An−i−1∏t=i+1n−1T(pt)Le(pn)dpi+2:n \begin{equation} L_i(\mathbf{p}_{i+1} \to \mathbf{p}_i) = \sum_{n=i+1}^\infty \int_{\mathcal{A}^{n-i-1}} \prod_{t=i+1}^{n-1}T(\mathbf{p}_t)L_e(\mathbf{p}_n)\mathrm{d}\mathbf{p}_{i+2:n} \end{equation}

分母相比入射辐亮度少了自发光:

Li(pi→pi−1)−Le(pi→pi−1)=∑n=i+1∞∫An−i∏t=in−1T(pt)Le(pn)dpi+1:n \begin{equation} L_i(\mathbf{p}_i \to \mathbf{p}_{i-1}) - L_e(\mathbf{p}_i \to \mathbf{p}_{i-1}) = \sum_{n=i+1}^\infty \int_{\mathcal{A}^{n-i}} \prod_{t=i}^{n-1}T(\mathbf{p}_t)L_e(\mathbf{p}_n)\mathrm{d}\mathbf{p}_{i+1:n}\\ \end{equation}

分母只依赖pi−1\mathbf{p}_{i-1}与pi\mathbf{p}_i, 相对pi+1\mathbf{p}_{i+1}为常数, 因此p0,…,pi−2\mathbf{p}_0, \dots, \mathbf{p}_{i-2}对条件分布没有影响:

p(pi+1∣pi−1,pi)∝f(pi+1→pi→pi−1)G(pi↔pi+1)Li(pi+1→pi) \begin{equation} p(\mathbf{p}_{i+1}|\mathbf{p}_{i-1}, \mathbf{p}_i) \propto f(\mathbf{p}_{i+1} \to \mathbf{p}_i \to \mathbf{p}_{i-1})G(\mathbf{p}_i \leftrightarrow \mathbf{p}_{i+1})L_i(\mathbf{p}_{i+1} \to \mathbf{p}_i) \end{equation}

转立体角测度结果如下, 即服从路径贡献分布的路径, 局部弹射方向的条件分布为理想的局部引导分布. ReSTIR样本只是无偏权重, 初始样本质量差时相关性较强.

p(ωi∣pi,ωo)∝f(pi,ωo,ωi)Li(pi,ωi)∣cos⁡θ∣ \begin{equation} p(\omega_i|\mathbf{p}_i, \omega_o) \propto f(\mathbf{p}_i, \omega_o, \omega_i)L_i(\mathbf{p}_i, \omega_i)|\cos\theta| \end{equation}

p(ωi∣p,ωo)p(\omega_i|\mathbf{p}, \omega_o)需要拟合7D模型因此实时不可行. 划分场景为空间网格, 在格内拟合求平均以消去p\mathbf{p}, 降维到4D的p(ωi∣ωo)p(\omega_i|\omega_o). 漫反射BSDF为常数, 光滑镜面更依赖BSDF抽样, 因此通过积分消去ωo\omega_o后, 只有粗糙镜面效果较差, 可进一步降维到2D:

p(ωi)=∫H2p(ωi∣ωo)p(ωo)dωo∝Li(ωi)∣cos⁡θ∣∫H2f(ωo,ωi)p(ωo)dωo \begin{equation} p(\omega_i) = \int_{\mathcal{H}^2} p(\omega_i|\omega_o)p(\omega_o)\mathrm{d}\omega_o \propto L_i(\omega_i)|\cos\theta| \int_{\mathcal{H}^2} f(\omega_o, \omega_i)p(\omega_o)\mathrm{d}\omega_o \end{equation}

p(ωi)p(\omega_i)以vMF拟合, μk∈S2\mu_k \in \mathcal{S}^2为单位平均方向, κk≥0\kappa_k \geq 0为集中度, ∑kπk=1\sum_k \pi_k = 1:

V(ω;Θ)=∑k=1Kπkv(ω;μk,κk)=∑k=1Kκ4πsinh⁡κeκμ⋅ω \begin{equation} \mathcal{V}(\omega;\Theta) = \sum_{k=1}^K \pi_k v(\omega;\mu_k, \kappa_k) = \sum_{k=1}^K \frac{\kappa}{4\pi\sinh\kappa}e^{\kappa\mu \cdot \omega} \end{equation}

展开sinh⁡\sinh可得vMF随着κ\kappa增长而收窄集中于μ\mu的波瓣:

v(ω;μ,κ)=κ2π(1−e−2κ)e−κ(1−μ⋅ω)≈κ2πe−κ(1−μ⋅ω) \begin{equation} v(\omega;\mu, \kappa) = \frac{\kappa}{2\pi(1 - e^{-2\kappa})}e^{-\kappa(1 - \mu \cdot \omega)} \approx \frac{\kappa}{2\pi}e^{-\kappa(1 - \mu \cdot \omega)} \end{equation}

以EM迭代求解, E步固定参数, 计算责任:

γk(ωn)=πkv(ωn;μk,κk)∑j=1Kπjv(ωn;μj,κj) \begin{equation} \gamma_k(\omega_n) = \frac{\pi_k v(\omega_n;\mu_k, \kappa_k)}{\sum_{j=1}^K \pi_j v(\omega_n;\mu_j, \kappa_j)} \end{equation}

M步固定责任, 更新参数, ϵ=0.01\epsilon = 0.01防止分量权重归零:

wk=∑n=1Nγk(ωn),rk=∑n=1Nγk(ωn)ωnπk=wk+ϵ∑j=1K(wj+ϵ),μk=rk∥rk∥,Rˉk=∥rk∥wk \begin{equation} \begin{aligned} w_k = \sum_{n=1}^N \gamma_k(\omega_n), \quad r_k = \sum_{n=1}^N \gamma_k(\omega_n)\omega_n\\ \pi_k = \frac{w_k + \epsilon}{\sum_{j=1}^K (w_j + \epsilon)}, \quad \mu_k = \frac{r_k}{\|r_k\|}, \quad \bar{R}_k = \frac{\|r_k\|}{w_k} \end{aligned} \end{equation}

方向越集中Rˉk∈[0,1]\bar{R}_k \in [0, 1]越接近1, 由其反解κk\kappa_k:

κk≈Rˉk(3−Rˉk2)1−Rˉk2 \begin{equation} \kappa_k \approx \frac{\bar{R}_k(3 - \bar{R}_k^2)}{1 - \bar{R}_k^2} \end{equation}

ReSTIR PT无偏权重包含足够信息, 不复用历史分布, 记录最终路径所有顶点以更新引导.

VXPG
#

将第二次弹射顶点的NEE采样结果注入体素, 估计漫反射辐照度:

E(vi)=1N∑x2∈viLl(x2) \begin{equation} E(v_i) = \frac{1}{N}\sum_{\mathbf{x}_2 \in v_i} L_l(\mathbf{x}_2) \end{equation}

以32×3232 \times 32图块中心像素为矩心, 单次SLIC聚类计算超像素, p\mathbf{p}, n\mathbf{n}为世界空间位置和法线, u\mathbf{u}为像素坐标, wuw_u为超参数, 距离函数如下:

distp(x,y)=∣px−py∣2+wu∣ux−uy∣2+{0, if nx⋅ny>0.11000000, otherwise \begin{equation} \text{dist}_p(x, y) = |\mathbf{p}_x - \mathbf{p}_y|^2 + w_u |\mathbf{u}_x - \mathbf{u}_y|^2 + \begin{cases} \begin{aligned} &0,&\ \text{if}\ \mathbf{n_x}\cdot\mathbf{n_y} > 0.1\\ &1000000,&\ \text{otherwise} \end{aligned} \end{cases} \end{equation}

在屏幕空间分层抽样128条路径, 所有体素向所有样本路径的x2\mathbf{x}_2发射光线以验证可见性, 得128位位域RR, 执行K-means聚类. ⊕\oplus为异或, wEw_E为超参数, 距离函数如下:

distv(x,y)=countbits(Rx⊕Ry)+wE∣Ex−Ey∣ \begin{equation} \text{dist}_v(x, y) = \text{countbits}(R_x \oplus R_y) + w_E |E_x - E_y| \end{equation}

聚类后依据超像素与超体素组成的元组分桶, 从桶中抽取32个路径样本统计平均路径通量:

Tˉ(p′,v′)=1N∑i=1Nf(p2→p1→p0)G(p1↔p2) \begin{equation} \bar{T}(p', v') = \frac{1}{N}\sum_{i = 1}^N f(\mathbf{p}_2 \rightarrow \mathbf{p}_1 \rightarrow \mathbf{p}_0) G(\mathbf{p}_1 \leftrightarrow \mathbf{p}_2) \end{equation}

依据平均路径通量重要性抽样得超像素与超体素, 再抽样桶中的体素. 光栅化执行体素化, 得体素中所有三角形的包围盒, AA为包围盒最大面的面积, 抽样权重如下:

ϕ(vi)=E(vi)A(vi) \begin{equation} \phi(v_i) = E(v_i)A(v_i) \end{equation}

得到体素后, 使用球面三角形抽样确定与包围盒可见面的相交点, 发射光线求交.

RCPG
#

基于辐射度级联摆放探针, 使用八面体纹理存储辐射度, 转为立体角的Jacobian如下:

∣J∣=(1+2min⁡(1−∣u∣−∣v∣,0)−2∣u∣−2∣v∣+2∣uv∣+2u2+2v2)−32 \begin{equation} |J| = \left(1 + 2\min(1 - |u| - |v|, 0) - 2|u| - 2|v| + 2|uv| + 2u^2 + 2v^2\right)^{-\frac{3}{2}} \end{equation}

贴近物体的探针命中距离短, 需要的采样率低, 反之采样率高. 不同LOD的探针对应不同的距离区间, 基于区间远端与探针体素内嵌球形成的锥体, 可估计角采样Nyquist频率. 令ww为体素边长, dd为与体素中心的距离, cc为超参数, 采样频率估计如下:

θmin⁡=2arcsin⁡w2dmax⁡,fmax⁡=1θmin⁡<fs2,dmax⁡=cw2sin⁡1fs \begin{equation} \theta_{\min} = 2\arcsin\frac{w}{2d_{\max}}, \quad f_{\max} = \frac{1}{\theta_{\min}} < \frac{f_s}{2}, \quad d_{\max} = \frac{cw}{2\sin\frac{1}{f_s}} \end{equation}

所有探针纹素每帧更新, 只追踪距离区间, 命中确定二值透明. 下采样父级探针, 做透明度混合填充区间外辐射度. 探针通过指数混合累积历史, 命中时查询历史探针, 存储无限弹射辐射度. 每帧对场景执行体素化, 剔除空体素对应的探针.

遍历表面对应的LOD 0探针的纹素, 作为解析面光通过LTC计算贡献, 执行功率重要性抽样, 逐级查询父级纹素LTC并抽样. 令v\mathbf{v}为几何顶点, 面光辐照度如下:

E=12π∑i=1marccos⁡(vi⋅vj)vi×vj∣vi×vj∣⋅n,j=(i+1) mod m \begin{equation} E = \frac{1}{2\pi}\sum_{i=1}^m \arccos(\mathbf{v}_i \cdot \mathbf{v}_j) \frac{\mathbf{v}_i \times \mathbf{v}_j}{|\mathbf{v}_i \times \mathbf{v}_j|} \cdot \mathbf{n}, \quad j = (i + 1) \bmod m \end{equation}

使用三参数LTC以减少计算量:

M−1=(a0b01000c),a,b,c∈[0,1] \begin{equation} M^{-1} = \begin{pmatrix} a & 0 & b\\ 0 & 1 & 0\\ 0 & 0 & c \end{pmatrix}, \quad a, b, c \in [0, 1] \end{equation}

MCPG
#

基于混合vMF估计分布, 链状态为单个波瓣, 存于多分辨率哈希网格, 同时有均匀静态网格保证LOD边界的状态交换. 基于三线性权重抽取NmcN_\mathrm{mc}个候选顶点, 以亮度为权重执行RIS.

fmcf_\mathrm{mc}为当前样本入射亮度估计, 路径尾部查询辐照度缓存, 接受概率如下, 分母可加速预热:

paccept=min⁡(fmcsummc/Nmc,1) \begin{equation} p_\mathrm{accept} = \min\left(\frac{f_\mathrm{mc}}{\mathrm{sum}_\mathrm{mc}/N_\mathrm{mc}}, 1\right) \end{equation}

以最大似然估计更新状态, 混合因子α=max⁡(1N,αmin)\alpha = \max(\frac{1}{N}, \alpha_\mathrm{min}). 更新后抽样写回位置, 读写两侧的随机访问使状态扩散. 转移步骤不满足细致平衡, 稳态分布不保证收敛到目标分布.

NASGPG
#

归一化各向异性球面高斯(NASG)基于正交坐标系[x,y,z][\mathbf{x}, \mathbf{y}, \mathbf{z}]定义, z\mathbf{z}为波瓣轴, λ\lambda为锐度, aa为各向异性, a=0a = 0时退化为球面高斯. 记u=v⋅z+12u = \frac{\mathbf{v} \cdot \mathbf{z} + 1}{2}, e=a(v⋅x)21−(v⋅z)2e = \frac{a(\mathbf{v} \cdot \mathbf{x})^2}{1 - (\mathbf{v} \cdot \mathbf{z})^2}, 形式如下:

G(v;[x,y,z],λ,a)={exp⁡(2λu1+e−2λ)ue, v≠±z1, v=z0, v=−z \begin{equation} G(\mathbf{v};[\mathbf{x}, \mathbf{y}, \mathbf{z}], \lambda, a) = \begin{cases} \begin{aligned} &\exp\left(2\lambda u^{1 + e} - 2\lambda\right)u^e, &\ \mathbf{v} \neq \pm\mathbf{z}\\ &1, &\ \mathbf{v} = \mathbf{z}\\ &0, &\ \mathbf{v} = -\mathbf{z} \end{aligned} \end{cases} \end{equation}

ueu^e为球坐标换元的Jacobian, 因此NASG有闭式积分, 可归一化:

K=∫S2G(v;[x,y,z],λ,a)dω=2π(1−e−2λ)λ1+a \begin{equation} K = \int_{\mathcal{S}^2} G(\mathbf{v};[\mathbf{x}, \mathbf{y}, \mathbf{z}], \lambda, a)\mathrm{d}\omega = \frac{2\pi(1 - e^{-2\lambda})}{\lambda\sqrt{1 + a}} \end{equation}

正交坐标系以欧拉角θ,ϕ,τ\theta, \phi, \tau参数化, y=z×x\mathbf{y} = \mathbf{z} \times \mathbf{x}, 单个NASG分量只需cos⁡θ\cos\theta, sin⁡ϕ\sin\phi, cos⁡ϕ\cos\phi, sin⁡τ\sin\tau, cos⁡τ\cos\tau, λ\lambda, aa七个标量表示:

z=(cos⁡ϕsin⁡θsin⁡ϕsin⁡θcos⁡θ),x=(cos⁡θcos⁡ϕcos⁡τ−sin⁡ϕsin⁡τcos⁡θsin⁡ϕcos⁡τ+cos⁡ϕsin⁡τ−sin⁡θcos⁡τ) \begin{equation} \mathbf{z} = \begin{pmatrix} \cos\phi\sin\theta\\ \sin\phi\sin\theta\\ \cos\theta \end{pmatrix}, \quad \mathbf{x} = \begin{pmatrix} \cos\theta\cos\phi\cos\tau - \sin\phi\sin\tau\\ \cos\theta\sin\phi\cos\tau + \cos\phi\sin\tau\\ -\sin\theta\cos\tau \end{pmatrix} \end{equation}

神经网络为4层128宽无偏置MLP, 输入为p\mathbf{p}, ωo\omega_o, n\mathbf{n}, p\mathbf{p}归一化后应用one-blob编码, 即分为kk个等宽区间, 每个区间对应σ=1k\sigma = \frac{1}{k}的高斯核, 执行积分:

ob(x)i=∫i−1kik12πσe−(t−x)22σ2dt,i=1,…,k \begin{equation} \text{ob}(x)_i = \int_{\frac{i - 1}{k}}^{\frac{i}{k}} \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(t - x)^2}{2\sigma^2}}\mathrm{d}t, \quad i = 1, \dots, k \end{equation}

输出为8N+18N + 1维, N为NASG分量数量, 8为NASG7个标量与其权重AA, 1为MIS抽样概率cc. 引导分布为归一化分量的混合, 与BSDF按cc做MIS:

q^(ωi)=cq(ωi)+(1−c)pf(ωi)=c∑k=1NAkGk(ωi)Kk+(1−c)pf(ωi) \begin{equation} \begin{aligned} \hat{q}(\omega_i) &= cq(\omega_i) + (1 - c)p_f(\omega_i)\\ &= c\sum_{k=1}^N A_k\frac{G_k(\omega_i)}{K_k} + (1 - c)p_f(\omega_i) \end{aligned} \end{equation}

以KL散度衡量qq与目标分布p(ωi)=Cf(p,ωo,ωi)Li(p,ωi)∣cos⁡θ∣p(\omega_i) = Cf(\mathbf{p}, \omega_o, \omega_i)L_i(\mathbf{p}, \omega_i)|\cos\theta|的差异, 令γ\gamma为NASG参数, pp与γ\gamma无关, 梯度如下:

∇γDKL(p∥q)=∇γ∫S2p(ωi)(log⁡p(ωi)−log⁡q(ωi;γ))dωi=−∫S2p(ωi)∇γlog⁡q(ωi;γ)dωi \begin{equation} \begin{aligned} \nabla_\gamma D_{KL}(p\|q) &= \nabla_\gamma\int_{\mathcal{S}^2} p(\omega_i)(\log p(\omega_i) - \log q(\omega_i;\gamma))\mathrm{d}\omega_i\\ &= -\int_{\mathcal{S}^2} p(\omega_i)\nabla_\gamma\log q(\omega_i;\gamma)\mathrm{d}\omega_i \end{aligned} \end{equation}

基于q^\hat{q}得单样本估计. 归一化常数CC未知, 但只对梯度整体缩放, Adam归一化矩后可约去:

∇γDKL(p∥q)≈−p(ωi)q^(ωi)∇γlog⁡q(ωi;γ) \begin{equation} \nabla_\gamma D_{KL}(p\|q) \approx -\frac{p(\omega_i)}{\hat{q}(\omega_i)}\nabla_\gamma\log q(\omega_i;\gamma) \end{equation}

DKL(p∥q)D_{KL}(p\|q)与cc无关, DKL(p∥q^)D_{KL}(p\|\hat{q})可对cc求导, 但只优化q^\hat{q}时cc会倾向0, 因为初始qq质量较差. 因此以DKL(p∥q)D_{KL}(p\|q)为主项保证qq持续更新, 混入DKL(p∥q^)D_{KL}(p\|\hat{q})以学习cc, e=0.2e = 0.2:

loss=eDKL(p∥q^)+(1−e)DKL(p∥q) \begin{equation} \text{loss} = eD_{KL}(p\|\hat{q}) + (1 - e)D_{KL}(p\|q) \end{equation}

NPMPG
#

使用神经网络隐式表示场景, 以Φ\Phi为可训练参数, 连续地将位置映射为vMF混合参数:

NPM(x∣Φ)=Θ^(x),V(ωi∣Θ^(x))∝Li(x,ωi) \begin{equation} \text{NPM}(\mathbf{x}\mid\Phi) = \hat{\Theta}(\mathbf{x}), \quad \mathcal{V}(\omega_i\mid\hat{\Theta}(\mathbf{x})) \propto L_i(\mathbf{x}, \omega_i) \end{equation}

使用可训练多分辨率空间编码处理高频, 定义LL级均匀LOD网格, 体素存FF维特征, 查询时拼接各层的三线性插值结果得到G(x)G(\mathbf{x}):

G(x∣ΦE)=⨁l=1Ltrilinear(x,Vl[x]) \begin{equation} G(\mathbf{x}\mid\Phi_E) = \bigoplus_{l=1}^L \text{trilinear}(\mathbf{x}, V_l[\mathbf{x}]) \end{equation}

MLP为3层64宽ReLU, 输出KK个vMF. κ′,λ′,θ′,ϕ′\kappa', \lambda', \theta', \phi'为原始输出, (θ,ϕ)(\theta, \phi)为μ\mu的归一化球坐标:

κi=exp⁡(κi′),λi=exp⁡(λi′)∑j=1Kexp⁡(λj′)θi=11+exp⁡(−θi′),ϕi=11+exp⁡(−ϕi′) \begin{equation} \begin{aligned} \kappa_i = \exp(\kappa_i'), \quad \lambda_i = \frac{\exp(\lambda_i')}{\sum_{j=1}^K\exp(\lambda_j')}\\ \theta_i = \frac{1}{1 + \exp(-\theta_i')}, \quad \phi_i = \frac{1}{1 + \exp(-\phi_i')} \end{aligned} \end{equation}

以KL散度为目标做小批量随机梯度下降. 令D∝Li\mathcal{D} \propto L_i为目标分布, 路径顶点更新附近体素, p~\tilde{p}为BSDF与引导分布组合的实际抽样分布, 梯度估计如下:

∇ΘDKL(D∥V;Θ)=∇Θ∫ΩD(ω)log⁡D(ω)V(ω∣Θ^)dω≈∇Θ1N∑j=1ND(ωj)p~(ωj∣Θ^)log⁡D(ωj)V(ωj∣Θ^)=−1N∑j=1ND(ωj)∇ΘV(ωj∣Θ^)p~(ωj∣Θ^)V(ωj∣Θ^) \begin{equation} \begin{aligned} \nabla_\Theta D_{KL}(\mathcal{D}\|\mathcal{V};\Theta) &= \nabla_\Theta\int_\Omega \mathcal{D}(\omega)\log\frac{\mathcal{D}(\omega)}{\mathcal{V}(\omega\mid\hat{\Theta})}\mathrm{d}\omega\\ &\approx \nabla_\Theta\frac{1}{N}\sum_{j=1}^N\frac{\mathcal{D}(\omega_j)}{\tilde{p}(\omega_j\mid\hat{\Theta})}\log\frac{\mathcal{D}(\omega_j)}{\mathcal{V}(\omega_j\mid\hat{\Theta})}\\ &= -\frac{1}{N}\sum_{j=1}^N\frac{\mathcal{D}(\omega_j)\nabla_\Theta\mathcal{V}(\omega_j\mid\hat{\Theta})}{\tilde{p}(\omega_j\mid\hat{\Theta})\mathcal{V}(\omega_j\mid\hat{\Theta})} \end{aligned} \end{equation}

学习完整被积函数时额外输入ωo\omega_o, 目标分布改为fsLicos⁡θif_s L_i\cos\theta_i, 余弦项以固定vMF波瓣近似. n\mathbf{n}与粗糙度rr作为辅助特征输入, ωo\omega_o与n\mathbf{n}使用球谐编码.

Radiance Cache
#

辐射度缓存在探针中存储辐射度, 命中后直接查询缓存, 因此有偏.

ORCA
#

根据BSDF抽样概率和粗糙度决定舍弃概率, 根据预算归一化以避免光滑场景光线超支:

si′=bsi∑i=1Nsi \begin{equation} s'_i=\frac{b s_i}{\sum_{i=1}^N s_i} \end{equation}

稀疏光线完整追踪, 根据第二次弹射顶点信息计算hash, 更新最细LOD体素的累积辐亮度, LOD与相机距离相关. 下采样以更新LOD体素, 其余光线单次弹射并查询缓存, 模拟重连接. 只用本帧数据, 不做时域累积.

SHARC
#

依据世界空间顶点和LOD计算hash, 因此跨帧hash一致, 体素辐亮度逐帧累积.

NRC
#

单个MLP缓存散射辐亮度Ls(x,ω)L_s(\mathbf{x}, \omega), 路径足迹足够大时误差被模糊, 令pp为BSDF抽样概率, θ1\theta_1为主顶点处视线与法线夹角, c=0.01c = 0.01, 路径足迹定义如下:

a(x1⋯xn)=(∑i=2n∥xi−1−xi∥2p(ωi∣xi−1,ω)∣cos⁡θi∣)2a0=∥x0−x1∥24πcos⁡θ1,a>ca0 \begin{equation} \begin{aligned} &a(\mathbf{x}_1 \cdots \mathbf{x}_n) = \left(\sum_{i=2}^n\sqrt{\frac{\|\mathbf{x}_{i-1} - \mathbf{x}_i\|^2}{p(\omega_i\mid\mathbf{x}_{i-1}, \omega)|\cos\theta_i|}}\right)^2\\ &a_0 = \frac{\|\mathbf{x}_0 - \mathbf{x}_1\|^2}{4\pi\cos\theta_1}, \quad a > ca_0 \end{aligned} \end{equation}

屏幕分块后每块抽样一条路径更新缓存, 高学习率与每帧多步导致闪烁, 因此推理时使用权重的指数移动平均, α=0.99\alpha = 0.99, ηt\eta_t修正初期偏差, 不反馈到训练:

Wˉt=1−αηtWt+αηt−1Wˉt−1,ηt=1−αt \begin{equation} \bar{W}_t = \frac{1 - \alpha}{\eta_t}W_t + \alpha\eta_{t-1}\bar{W}_{t-1}, \quad \eta_t = 1 - \alpha^t \end{equation}

MLP为7层64宽无偏置, 输出RGB. ω\omega, n\mathbf{n}转球坐标, 与1−e−r1 - e^{-r}一同做4区间one-blob编码, 漫反射与镜面反射率α\alpha, β\beta直接输入. 位置微小变化引起辐亮度剧变, 改用频率编码:

freq(x)=(sin⁡(20πx),sin⁡(21πx),…,sin⁡(211πx)) \begin{equation} \text{freq}(x) = \left(\sin(2^0\pi x), \sin(2^1\pi x), \dots, \sin(2^{11}\pi x)\right) \end{equation}

MLP输出乘α+β\alpha + \beta得到近似出射辐射度. 由于LsL_s为无偏估计量, 使用相对L2损失保证梯度无偏, sg\text{sg}为停止梯度, 损失函数如下:

L2(Ls,L^s)=(Ls−L^s)2sg(L^s)2+ϵ \begin{equation} \mathcal{L}_2(L_s, \hat{L}_s) = \frac{(L_s - \hat{L}_s)^2}{\text{sg}(\hat{L}_s)^2 + \epsilon} \end{equation}

Markov Chain
#

Metropolis-Hastings
#

令xk\mathbf{x}_k为顶点数为kk的路径, pip_i为XiX_i的密度, 转移函数K(x→y)K(\mathbf{x} \to \mathbf{y})为x\mathbf{x}转移至y\mathbf{y}的概率密度, 满足∑k=1∞∫ykK(x→yk)dyk=1\sum_{k=1}^\infty\int_{\mathbf{y}_k} K(\mathbf{x} \to \mathbf{y}_k)\mathrm{d}\mathbf{y}_k = 1, Markov链的演化如下:

pi(x)=∑k=1∞∫ykK(yk→x)pi−1(yk)dyk \begin{equation} p_i(\mathbf{x}) = \sum_{k=1}^\infty\int_{\mathbf{y}_k} K(\mathbf{y}_k \to \mathbf{x})p_{i-1}(\mathbf{y}_k)\mathrm{d}\mathbf{y}_k \end{equation}

稳态分布(stationary distribution)p∞p_\infty为不动点即pi=pi−1p_i = p_{i-1}. Metropolis-Hastings以提议密度T(x→y)T(\mathbf{x} \to \mathbf{y})生成候选, 以接受概率a(x→y)a(\mathbf{x} \to \mathbf{y})决定是否接受:

pi(x)=pi−1(x)(1−∑k=1∞∫ykT(x→yk)a(x→yk)dyk)+∑k=1∞∫ykpi−1(yk)T(yk→x)a(yk→x)dyk \begin{equation} p_i(\mathbf{x}) = p_{i-1}(\mathbf{x})(1 - \sum_{k=1}^\infty\int_{\mathbf{y}_k} T(\mathbf{x} \to \mathbf{y}_k)a(\mathbf{x} \to \mathbf{y}_k)\mathrm{d}\mathbf{y}_k) + \sum_{k=1}^\infty\int_{\mathbf{y}_k} p_{i-1}(\mathbf{y}_k)T(\mathbf{y}_k \to \mathbf{x})a(\mathbf{y}_k \to \mathbf{x})\mathrm{d}\mathbf{y}_k \end{equation}

给定目标分布p^\hat{p}, 细致平衡(detailed balance)条件如下:

p^(x)T(x→y)a(x→y)=p^(y)T(y→x)a(y→x) \begin{equation} \hat{p}(\mathbf{x})T(\mathbf{x} \to \mathbf{y})a(\mathbf{x} \to \mathbf{y}) = \hat{p}(\mathbf{y})T(\mathbf{y} \to \mathbf{x})a(\mathbf{y} \to \mathbf{x}) \end{equation}

归一化常数∥p^∥=∑k=1∞∫xkp^(xk) dxk\|\hat{p}\| = \sum_{k=1}^\infty\int_{\mathbf{x}_k} \hat{p}(\mathbf{x}_k)\,\mathrm{d}\mathbf{x}_k, 设pi−1=p^∥p^∥p_{i-1} = \frac{\hat{p}}{\|\hat{p}\|}, 代入演化得p^∥p^∥\frac{\hat{p}}{\|\hat{p}\|}为不动点:

pi(x)=pi−1(x)−1∥p^∥∑k=1∞∫yk(p^(x)T(x→yk)a(x→yk)−p^(yk)T(yk→x)a(yk→x))dyk=pi−1(x) \begin{equation} \begin{aligned} p_i(\mathbf{x}) &= p_{i-1}(\mathbf{x}) - \frac{1}{\|\hat{p}\|}\sum_{k=1}^\infty\int_{\mathbf{y}_k}( \hat{p}(\mathbf{x})T(\mathbf{x} \to \mathbf{y}_k)a(\mathbf{x} \to \mathbf{y}_k) - \hat{p}(\mathbf{y}_k)T(\mathbf{y}_k \to \mathbf{x})a(\mathbf{y}_k \to \mathbf{x}) )\mathrm{d}\mathbf{y}_k\\ &= p_{i-1}(\mathbf{x}) \end{aligned} \end{equation}

按如下方式定义aa, 使得较大的p^(x)T(x→y)\hat{p}(\mathbf{x})T(\mathbf{x} \to \mathbf{y})总是被接受:

a(x→y)=min⁡(1,p^(y)T(y→x)p^(x)T(x→y)) \begin{equation} a(\mathbf{x} \to \mathbf{y}) = \min(1, \frac{\hat{p}(\mathbf{y})T(\mathbf{y} \to \mathbf{x})}{\hat{p}(\mathbf{x})T(\mathbf{x} \to \mathbf{y})}) \end{equation}

不动点不蕴含唯一性, 例如取Ω={1,2,3}\Omega = \{1, 2, 3\}, 转移矩阵行为起点列为终点:

K=[1212012120001] K = \begin{bmatrix} \frac{1}{2} & \frac{1}{2} & 0\\ \frac{1}{2} & \frac{1}{2} & 0\\ 0 & 0 & 1 \end{bmatrix}

令p0=(α,β,γ)p_0 = (\alpha, \beta, \gamma), 一步后即为不动点, 可见不动点与初始状态相关:

p1=(α+β2,α+β2,γ) p_1 = \left(\frac{\alpha + \beta}{2}, \frac{\alpha + \beta}{2}, \gamma\right)

从任意x\mathbf{x}出发均能在有限步内到达任何p^>0\hat{p} > 0的区域则不动点唯一. 若满足细致平衡, 已知p0=p^∥p^∥p_0 = \frac{\hat{p}}{\|\hat{p}\|}不动点为p^∥p^∥\frac{\hat{p}}{\|\hat{p}\|}, 因此任意初值均收敛到它:

lim⁡i→∞pi=p^∥p^∥ \begin{equation} \lim_{i \to \infty}p_i = \frac{\hat{p}}{\|\hat{p}\|} \end{equation}

Metropolis Light Transport
#

基于BDPT实现MLT, 令p0p_0为BDPT的PDF, 初始权重W0=p^(X0)p0(X0)W_0 = \frac{\hat{p}(X_0)}{p_0(X_0)}, 变异保持Wi=Wi−1W_i = W_{i-1}, 记ρi(w,x)\rho_i(w, \mathbf{x})为(Wi,Xi)(W_i, X_i)的联合密度, 加权均衡条件(weighted equilibrium condition)如下:

∫Rw ρi(w,x) dw=p^(x) \begin{equation} \int_\mathbb{R} w\,\rho_i(w, \mathbf{x})\,\mathrm{d}w = \hat{p}(\mathbf{x}) \end{equation}

i=0i = 0时W0W_0由X0X_0确定, ρ0(w,x)=δ(w−p^(x)p0(x))p0(x)\rho_0(w, \mathbf{x}) = \delta(w - \frac{\hat{p}(\mathbf{x})}{p_0(\mathbf{x})})p_0(\mathbf{x}), 代入直接满足. 变异与WW无关, 故ρi\rho_i与pip_i的演化相同:

ρi(w,x)=ρi−1(w,x)(1−∑k=1∞∫ykT(x→yk)a(x→yk)dyk)+∑k=1∞∫ykρi−1(w,yk)T(yk→x)a(yk→x)dyk \begin{equation} \rho_i(w, \mathbf{x}) = \rho_{i-1}(w, \mathbf{x})(1 - \sum_{k=1}^\infty\int_{\mathbf{y}_k} T(\mathbf{x} \to \mathbf{y}_k)a(\mathbf{x} \to \mathbf{y}_k)\mathrm{d}\mathbf{y}_k) + \sum_{k=1}^\infty\int_{\mathbf{y}_k} \rho_{i-1}(w, \mathbf{y}_k)T(\mathbf{y}_k \to \mathbf{x})a(\mathbf{y}_k \to \mathbf{x})\mathrm{d}\mathbf{y}_k \end{equation}

两侧乘ww并对ww积分, 基于加权均衡条件与细致平衡可得:

∫Rw ρi(w,x) dw=p^(x)−∑k=1∞∫yk(p^(x)T(x→yk)a(x→yk)−p^(yk)T(yk→x)a(yk→x))dyk=p^(x) \begin{equation} \begin{aligned} \int_\mathbb{R} w\,\rho_i(w, \mathbf{x})\,\mathrm{d}w &= \hat{p}(\mathbf{x}) - \sum_{k=1}^\infty\int_{\mathbf{y}_k}( \hat{p}(\mathbf{x})T(\mathbf{x} \to \mathbf{y}_k)a(\mathbf{x} \to \mathbf{y}_k) - \hat{p}(\mathbf{y}_k)T(\mathbf{y}_k \to \mathbf{x})a(\mathbf{y}_k \to \mathbf{x}) )\mathrm{d}\mathbf{y}_k\\ &= \hat{p}(\mathbf{x}) \end{aligned} \end{equation}

令hh为滤波器权重, IjI_j为像素jj的真值, 可验证无偏:

E[Wihj(Xi)]=∑k=1∞∫xk∫Rw hj(xk)ρi(w,xk) dw dxk=∑k=1∞∫xkhj(xk)p^(xk) dxk=Ij \begin{equation} \begin{aligned} E[W_i h_j(X_i)] &= \sum_{k=1}^\infty\int_{\mathbf{x}_k}\int_\mathbb{R} w\,h_j(\mathbf{x}_k)\rho_i(w, \mathbf{x}_k)\,\mathrm{d}w\,\mathrm{d}\mathbf{x}_k\\ &= \sum_{k=1}^\infty\int_{\mathbf{x}_k} h_j(\mathbf{x}_k)\hat{p}(\mathbf{x}_k)\,\mathrm{d}\mathbf{x}_k\\ &= I_j \end{aligned} \end{equation}

ReSTIR MCMC
#

添加MCMC后的无偏权重如下:

Wi=p^(Xi−1)p^(Xi)Wi−1=p^(X0)p^(Xi)W0 \begin{equation} W_i = \frac{\hat{p}(X_{i-1})}{\hat{p}(X_i)}W_{i-1} = \frac{\hat{p}(X_0)}{\hat{p}(X_i)}W_0 \end{equation}

归纳证明WiW_i无偏, 基于GRIS已知W0W_0无偏, 设Wi−1W_{i-1}无偏, 记候选Zi−1∼T(Xi−1→⋅)Z_{i-1} \sim T(X_{i-1} \to \cdot):

E[f(Xi)Wi]= E[(1−a(Xi−1→Zi−1))f(Xi−1)Wi−1]+E[a(Xi−1→Zi−1)f(Zi−1)p^(Xi−1)p^(Zi−1)Wi−1]= E[f(Xi−1)Wi−1]+E[f(Zi−1)a(Xi−1→Zi−1)p^(Xi−1)p^(Zi−1)Wi−1]−E[f(Xi−1)a(Xi−1→Zi−1)Wi−1] \begin{equation} \begin{aligned} E[f(X_i)W_i] =\ & E[(1 - a(X_{i-1} \to Z_{i-1}))f(X_{i-1})W_{i-1}] + E[a(X_{i-1} \to Z_{i-1})f(Z_{i-1})\frac{\hat{p}(X_{i-1})}{\hat{p}(Z_{i-1})}W_{i-1}]\\ =\ & E[f(X_{i-1})W_{i-1}] + E[f(Z_{i-1})a(X_{i-1} \to Z_{i-1})\frac{\hat{p}(X_{i-1})}{\hat{p}(Z_{i-1})}W_{i-1}] - E[f(X_{i-1})a(X_{i-1} \to Z_{i-1})W_{i-1}] \end{aligned} \end{equation}

后两项含候选Zi−1Z_{i-1}, 消去它才能归纳. Wi−1W_{i-1}仅依赖Xi−1X_{i-1}, 可从条件期望中作为常数提出:

E[g(Xi−1,Zi−1)Wi−1]=E[E[g(Xi−1,Zi−1)Wi−1∣Fi−1]]=E[Wi−1E[g(Xi−1,Zi−1)∣Fi−1]]=E[(∫Ωg(Xi−1,z)T(Xi−1→z)dz)Wi−1] \begin{equation} \begin{aligned} E[g(X_{i-1}, Z_{i-1})W_{i-1}] &= E\big[E[g(X_{i-1}, Z_{i-1})W_{i-1}|\mathcal{F}_{i-1}]\big]\\ &= E\big[W_{i-1}E[g(X_{i-1}, Z_{i-1})|\mathcal{F}_{i-1}]\big]\\ &= E\left[\left(\int_\Omega g(X_{i-1}, \mathbf{z})T(X_{i-1} \to \mathbf{z})\mathrm{d}\mathbf{z}\right)W_{i-1}\right] \end{aligned} \end{equation}

此时仅与Xi−1X_{i-1}有关, 代入即得二重积分:

E[f(Xi)Wi]=∫Ωf(x)dx+∫Ω∫Ωf(z)a(x→z)p^(x)p^(z)T(x→z)dzdx−∫Ω∫Ωf(x)a(x→z)T(x→z)dzdx \begin{equation} \begin{aligned} E[f(X_i)W_i] &= \int_\Omega f(\mathbf{x})\mathrm{d}\mathbf{x}\\ &+ \int_\Omega\int_\Omega f(\mathbf{z})a(\mathbf{x} \to \mathbf{z})\frac{\hat{p}(\mathbf{x})}{\hat{p}(\mathbf{z})}T(\mathbf{x} \to \mathbf{z})\mathrm{d}\mathbf{z}\mathrm{d}\mathbf{x}\\ &- \int_\Omega\int_\Omega f(\mathbf{x})a(\mathbf{x} \to \mathbf{z})T(\mathbf{x} \to \mathbf{z})\mathrm{d}\mathbf{z}\mathrm{d}\mathbf{x} \end{aligned} \end{equation}

改写细致平衡, 可抵消后两项, 即估计无偏:

T(x→z)a(x→z)=p^(z)p^(x)T(z→x)a(z→x) \begin{equation} T(\mathbf{x} \to \mathbf{z})a(\mathbf{x} \to \mathbf{z}) = \frac{\hat{p}(\mathbf{z})}{\hat{p}(\mathbf{x})}T(\mathbf{z} \to \mathbf{x})a(\mathbf{z} \to \mathbf{x}) \end{equation}

变异为对ui−1\mathbf{u}_{i-1}做高斯扰动, 即j≠ij \neq i时pjy=pjx\mathbf{p}^y_j = \mathbf{p}^x_j, 只需变换u{i−1,i,i+1}\mathbf{u}_{\{i - 1, i, i + 1\}}. p{i+1,i+2}y\mathbf{p}^y_{\{i+1, i+2\}}固定在p{i+1,i+2}x\mathbf{p}^x_{\{i+1, i+2\}}, 以变异后的前缀p{0,…,i}y\mathbf{p}^y_{\{0, \dots, i\}}为条件可得条件密度:

p(p{i+1,i+2}y∣p{0,…,i}y)=δ(pi+1y−pi+1x)δ(pi+2y−pi+2x) \begin{equation} p(\mathbf{p}^y_{\{i+1, i+2\}}|\mathbf{p}^y_{\{0, \dots, i\}}) = \delta(\mathbf{p}^y_{i+1} - \mathbf{p}^x_{i+1})\delta(\mathbf{p}^y_{i+2} - \mathbf{p}^x_{i+2}) \end{equation}

aa需要提议密度比值, ui−1\mathbf{u}_{i-1}的密度只与∣ui−1x−ui−1y∣|\mathbf{u}^x_{i-1} - \mathbf{u}^y_{i-1}|有关, 在比值中约去. u{i,i+1}y\mathbf{u}^y_{\{i, i+1\}}的密度为上式的变换p(p{i+1,i+2}y∣p{0,…,i}y)∣∂p{i+1,i+2}y∂u{i,i+1}y∣p(\mathbf{p}^y_{\{i+1, i+2\}}|\mathbf{p}^y_{\{0, \dots, i\}})\left|\frac{\partial\mathbf{p}^y_{\{i+1, i+2\}}}{\partial\mathbf{u}^y_{\{i, i+1\}}}\right|, Dirac delta函数同样约去, 此时可得:

T(y→x)T(x→y)=∣∂p{i+1,i+2}x∂u{i,i+1}x∣∣∂p{i+1,i+2}y∂u{i,i+1}y∣=∣∂u{i,i+1}y∂ω{i,i+1}y∣∣∂ω{i,i+1}y∂p{i+1,i+2}y∣∣∂p{i+1,i+2}x∂ω{i,i+1}x∣∣∂ω{i,i+1}x∂u{i,i+1}x∣=pyi(ωiy)G(piy→pi+1x)pxi(ωix)G(pix→pi+1x)pyi+1(ωi+1y)pxi+1(ωi+1x)=Jx→y \begin{equation} \begin{aligned} \frac{T(\mathbf{y} \to \mathbf{x})}{T(\mathbf{x} \to \mathbf{y})} &= \frac{\left|\frac{\partial\mathbf{p}^x_{\{i+1, i+2\}}}{\partial\mathbf{u}^x_{\{i, i+1\}}}\right|}{\left|\frac{\partial\mathbf{p}^y_{\{i+1, i+2\}}}{\partial\mathbf{u}^y_{\{i, i+1\}}}\right|}\\ &= \left|\frac{\partial\mathbf{u}^y_{\{i, i+1\}}}{\partial\omega^y_{\{i, i+1\}}}\right| \left|\frac{\partial\omega^y_{\{i, i+1\}}}{\partial\mathbf{p}^y_{\{i+1, i+2\}}}\right| \left|\frac{\partial\mathbf{p}^x_{\{i+1, i+2\}}}{\partial\omega^x_{\{i, i+1\}}}\right| \left|\frac{\partial\omega^x_{\{i, i+1\}}}{\partial\mathbf{u}^x_{\{i, i+1\}}}\right|\\ &= \frac{p_{y_i}(\omega^y_i)G(\mathbf{p}^y_i \to \mathbf{p}^x_{i+1})}{p_{x_i}(\omega^x_i)G(\mathbf{p}^x_i \to \mathbf{p}^x_{i+1})}\frac{p_{y_{i+1}}(\omega^y_{i+1})}{p_{x_{i+1}}(\omega^x_{i+1})}\\ &= J_{\mathbf{x} \to \mathbf{y}} \end{aligned} \end{equation}

重连接后ui−1\mathbf{u}_{i-1}为隐式, 需要BSDF抽样可逆即由ωi−1x\omega^x_{i-1}恢复ui−1x\mathbf{u}^x_{i-1}. 若以对称核k(ωi−1x,ωi−1y)k(\omega^x_{i-1}, \omega^y_{i-1})扰动立体角, 变换到ui−1\mathbf{u}_{i-1}后为k(ωi−1x,ωi−1y)∣∂ωi−1y∂ui−1y∣=k(ωi−1x,ωi−1y)pyi−1(ωi−1y)k(\omega^x_{i-1}, \omega^y_{i-1})\left|\frac{\partial\omega^y_{i-1}}{\partial\mathbf{u}^y_{i-1}}\right| = \frac{k(\omega^x_{i-1}, \omega^y_{i-1})}{p_{y_{i-1}}(\omega^y_{i-1})}, 此时比值变为:

T(y→x)T(x→y)=pyi−1(ωi−1y)pxi−1(ωi−1x)Jx→y \begin{equation} \frac{T(\mathbf{y} \to \mathbf{x})}{T(\mathbf{x} \to \mathbf{y})} = \frac{p_{y_{i-1}}(\omega^y_{i-1})}{p_{x_{i-1}}(\omega^x_{i-1})}J_{\mathbf{x} \to \mathbf{y}} \end{equation}

pi+2=pe\mathbf{p}_{i+2} = \mathbf{p}_e时, pi+1→pe\mathbf{p}_{i+1} \to \mathbf{p}_e确定, ui+1\mathbf{u}_{i+1}不存在, 去除ui+1\mathbf{u}_{i+1}的变换:

T(y→x)T(x→y)=pyi−1(ωi−1y)pxi−1(ωi−1x)pyi(ωiy)G(piy→pi+1x)pxi(ωix)G(pix→pi+1x) \begin{equation} \frac{T(\mathbf{y} \to \mathbf{x})}{T(\mathbf{x} \to \mathbf{y})} = \frac{p_{y_{i-1}}(\omega^y_{i-1})}{p_{x_{i-1}}(\omega^x_{i-1})} \frac{p_{y_i}(\omega^y_i)G(\mathbf{p}^y_i \to \mathbf{p}^x_{i+1})}{p_{x_i}(\omega^x_i)G(\mathbf{p}^x_i \to \mathbf{p}^x_{i+1})} \end{equation}

pi+1=pe\mathbf{p}_{i+1} = \mathbf{p}_e时, pi→pe\mathbf{p}_i \to \mathbf{p}_e确定, ui\mathbf{u}_i不存在, 提议只包含ui−1\mathbf{u}_{i-1}的变换:

T(y→x)T(x→y)=pyi−1(ωi−1y)pxi−1(ωi−1x) \begin{equation} \frac{T(\mathbf{y} \to \mathbf{x})}{T(\mathbf{x} \to \mathbf{y})} = \frac{p_{y_{i-1}}(\omega^y_{i-1})}{p_{x_{i-1}}(\omega^x_{i-1})} \end{equation}

Correlated Sampling
#

Control Variates
#

控制变量引入与ff相关的辅助函数hh, 积分H=∫Ωxh(x)dxH = \int_{\Omega_x} h(\mathbf{x})\mathrm{d}\mathbf{x}已知, 可改写估计量:

⟨Ix⟩=αH+(f(X)−αh(X))WX \begin{equation} \langle I_x \rangle = \alpha H + \left(f(X) - \alpha h(X)\right)W_X \end{equation}

图像空间控制变量以相邻像素yy为辅助函数, 要求IyI_y可低方差估计, 估计量如下:

⟨Ix⟩←y=α⟨Iy⟩+⟨Ix−αIy⟩ \begin{equation} \langle I_x \rangle_{\leftarrow y} = \alpha\langle I_y \rangle + \langle I_x - \alpha I_y \rangle \end{equation}

记A=f(X)WXA = f(X)W_X, B=f(Y)WYB = f(Y)W_Y, 分别无偏估计IxI_x与IyI_y, A−αBA - \alpha B的方差为:

Var[A−αB]=Var[A]+α2Var[B]−2αCov[A,B] \begin{equation} \mathrm{Var}[A - \alpha B] = \mathrm{Var}[A] + \alpha^2\mathrm{Var}[B] - 2\alpha\mathrm{Cov}[A, B] \end{equation}

对α\alpha求导得最优系数, 令AA, BB的相关系数为ρ=Cov[A,B]Var[A]Var[B]\rho = \frac{\mathrm{Cov}[A,B]}{\sqrt{\mathrm{Var}[A]\mathrm{Var}[B]}}, 代回得方差缩减与ρ\rho相关:

α∗=Cov[A,B]Var[B],Var[A−α∗B]=(1−ρ2)Var[A] \begin{equation} \alpha^* = \frac{\mathrm{Cov}[A, B]}{\mathrm{Var}[B]}, \quad \mathrm{Var}[A - \alpha^* B] = (1 - \rho^2)\mathrm{Var}[A] \end{equation}

若XX与YY独立则Cov[A,B]=0\mathrm{Cov}[A, B] = 0, 任意α≠0\alpha \neq 0均使方差增加. 对于α⟨Iy⟩+(A−αB)\alpha\langle I_y \rangle + (A - \alpha B), 若⟨Iy⟩\langle I_y \rangle为BB则退化为AA; 若为独立样本B′B', 方差为Var[A]+α2(Var[B]+Var[B′])\mathrm{Var}[A] + \alpha^2(\mathrm{Var}[B] + \mathrm{Var}[B']). 两种情况都不低于Var[A]\mathrm{Var}[A], 因此独立样本无法缩减方差, XX与YY必须相关.

令Y=Tx→y(X)Y = T_{x \to y}(X), 场景连续处f(x)≈f(Tx→y(x))f(\mathbf{x}) \approx f(T_{x \to y}(\mathbf{x})), 此时ρ→1\rho \to 1.

Ix−αIy=∫Ωxf(x)dx−α∫Ωyf(y)dy=∫Ωx(f(x)−αf(Tx→y(x))Jx→y)dx−α∫Ωy∖Tx→y(Ωx)f(y)dy \begin{equation} \begin{aligned} I_x - \alpha I_y &= \int_{\Omega_x} f(\mathbf{x})\mathrm{d}\mathbf{x} - \alpha\int_{\Omega_y} f(\mathbf{y})\mathrm{d}\mathbf{y}\\ &= \int_{\Omega_x} \left(f(\mathbf{x}) - \alpha f(T_{x \to y}(\mathbf{x}))J_{\mathbf{x} \to \mathbf{y}}\right)\mathrm{d}\mathbf{x} - \alpha\int_{\Omega_y \setminus T_{x \to y}(\Omega_x)} f(\mathbf{y})\mathrm{d}\mathbf{y} \end{aligned} \end{equation}

不保证Tx→y(Ωx)⊇ΩyT_{x \to y}(\Omega_x) \supseteq \Omega_y, 需要MIS:

⟨Ix−αIy⟩=mx(X)(f(X)−αf(Tx→y(X))JX→Y)WX+ my(Y)(f(Ty→x(Y))JY→X−αf(Y))WY \begin{equation} \begin{aligned} \langle I_x - \alpha I_y \rangle &= m_x(X)\left(f(X) - \alpha f(T_{x \to y}(X))J_{X \to Y}\right)W_X\\ &+\ m_y(Y)\left(f(T_{y \to x}(Y))J_{Y \to X} - \alpha f(Y)\right)W_Y \end{aligned} \end{equation}

ReSTCV
#

xx重投影到yy, XX为当前帧新样本, ⟨Ix⟩init=f(X)WX\langle I_x \rangle_\mathrm{init} = f(X)W_X. 时域估计为:

⟨Ix⟩=My⟨Ix⟩←y+Minit⟨Ix⟩initMy+Minit \begin{equation} \langle I_x \rangle = \frac{M_y\langle I_x \rangle_{\leftarrow y} + M_\mathrm{init}\langle I_x \rangle_\mathrm{init}}{M_y + M_\mathrm{init}} \end{equation}

N(x)\mathcal{N}(x)为包含xx自身的空域像素集合, 空域估计为:

⟨Ix⟩=∑y∈N(x)My⟨Ix⟩←y∑y∈N(x)My \begin{equation} \langle I_x \rangle = \frac{\sum_{y \in \mathcal{N}(x)} M_y\langle I_x \rangle_{\leftarrow y}}{\sum_{y \in \mathcal{N}(x)} M_y} \end{equation}

ReSTIR PT下⟨Ix⟩←y\langle I_x \rangle_{\leftarrow y}的参数可从蓄水池获取, GRIS估计量只根据无偏权重调整样本亮度, 控制变量估计量包含多个通道, 可有效降低复杂色彩光照或光谱渲染的方差.

Histogram Stratification
#

设X∼pX \sim p, pp覆盖ff的支撑集, 贡献C=f(X)/p(X)=f(X)WXC = f(X)/p(X) = f(X)W_X可积, CC的CDF为:

FC(c)=P(C≤c)=∫{x∈Ωx: p(x)>0, f(x)/p(x)≤c}p(x)dx \begin{equation} F_C(c) = P(C \leq c) = \int_{\{\mathbf{x} \in \Omega_x:\,p(\mathbf{x}) > 0,\,f(\mathbf{x})/p(\mathbf{x}) \leq c\}} p(\mathbf{x})\mathrm{d}\mathbf{x} \end{equation}

定义CC的广义逆用于逆变换法:

FC−1(u)=inf⁡{c∈R:FC(c)≥u},u∈(0,1) \begin{equation} F_C^{-1}(u) = \inf\{c \in \mathbb{R}: F_C(c) \geq u\}, \quad u \in (0, 1) \end{equation}

令U∼U(0,1)U \sim \mathcal{U}(0, 1), 此时可得:

Ix=∫Ωxf(x)dx=E[C]=∫01FC−1(u)du=E[FC−1(U)] \begin{equation} I_x = \int_{\Omega_x} f(\mathbf{x})\mathrm{d}\mathbf{x} = E[C] = \int_0^1 F_C^{-1}(u)\mathrm{d}u = E[F_C^{-1}(U)] \end{equation}

令有限候选S={(Xi,Wi)}i=1N\mathcal{S} = \{(X_i, W_i)\}_{i=1}^N, Ci=f(Xi)WiC_i = f(X_i)W_i, 定义抽样函数:

GS(u)=C1+⌊Nu⌋,u∈[0,1) \begin{equation} G_{\mathcal{S}}(u) = C_{1 + \lfloor Nu \rfloor}, \quad u \in [0, 1) \end{equation}

取独立于候选的均匀随机数UU, 每个候选对应长度1/N1/N的区间:

E[GS(U)∣S]=∫01GS(u)du=1N∑i=1NCiE[GS(U)]=E[E[GS(U)∣S]]=1N∑i=1NE[Ci]=Ix \begin{equation} \begin{aligned} E[G_{\mathcal{S}}(U) \mid \mathcal{S}] &= \int_0^1 G_{\mathcal{S}}(u)\mathrm{d}u = \frac{1}{N}\sum_{i=1}^N C_i\\ E[G_{\mathcal{S}}(U)] &= E\left[E[G_{\mathcal{S}}(U) \mid \mathcal{S}]\right] = \frac{1}{N}\sum_{i=1}^N E[C_i] = I_x \end{aligned} \end{equation}

按CiC_i从小到大排序得置换π\pi, 将列表重排后, 抽样函数成为经验逆CDF, 不影响无偏性:

GS(u)=Cπ(1+⌊Nu⌋) \begin{equation} G_{\mathcal{S}}(u) = C_{\pi(1 + \lfloor Nu \rfloor)} \end{equation}

取独立于候选的T∼U[0,1/4]T \sim \mathcal{U}[0, 1/4], 构造四个相关样本, UkU_k在对应的14\frac{1}{4}区间内均匀分布:

U1=T,U2=12−T,U3=12+T,U4=1−T \begin{equation} U_1 = T, \quad U_2 = \frac{1}{2} - T, \quad U_3 = \frac{1}{2} + T, \quad U_4 = 1 - T \end{equation}

给定候选S\mathcal{S}, 记Zk=GS(Uk)Z_k = G_{\mathcal{S}}(U_k), 平均估计量为⟨Ix⟩anti=14∑k=14Zk\langle I_x\rangle_\mathrm{anti} = \frac{1}{4}\sum_{k=1}^4 Z_k. 由四层等宽可得:

E[Zk∣S]=4∫(k−1)/4k/4GS(u)duE[⟨Ix⟩anti|S]=E[14∑k=14Zk|S]=14∑k=14E[Zk∣S]=1N∑i=1NCi \begin{equation} \begin{aligned} &E[Z_k\mid\mathcal{S}] = 4\int_{(k-1)/4}^{k/4}G_{\mathcal{S}}(u)\mathrm{d}u\\ &E\left[\langle I_x\rangle_\mathrm{anti}\middle|\mathcal{S}\right] = E\left[\frac{1}{4}\sum_{k=1}^4 Z_k\middle|\mathcal{S}\right] = \frac{1}{4}\sum_{k=1}^4 E[Z_k\mid\mathcal{S}] = \frac{1}{N}\sum_{i=1}^N C_i \end{aligned} \end{equation}

条件方差展开为:

Var[⟨Ix⟩anti∣S]=116(∑k=14Var[Zk∣S]+2∑i<jCov[Zi,Zj∣S]) \begin{equation} \mathrm{Var}[\langle I_x\rangle_\mathrm{anti}\mid\mathcal{S}] = \frac{1}{16}\left(\sum_{k=1}^4\mathrm{Var}[Z_k\mid\mathcal{S}] + 2\sum_{i<j}\mathrm{Cov}[Z_i,Z_j\mid\mathcal{S}]\right) \end{equation}

令zk(t)=GS(Uk(t))z_k(t) = G_{\mathcal{S}}(U_k(t)), L=14L = \frac{1}{4}, TT在[0,L][0,L]上均匀分布, 由协方差定义得:

Cov[Zi,Zj∣S]=1L∫0Lzi(t)zj(t)dt−1L2(∫0Lzi(t)dt)(∫0Lzj(t)dt)=1L2∫0L∫0L(zi(t)zj(t)−zi(t)zj(s))dsdt=12L2∫0L∫0L(zi(t)zj(t)+zi(s)zj(s)−zi(t)zj(s)−zi(s)zj(t))dsdt=12L2∫0L∫0L(zi(t)−zi(s))(zj(t)−zj(s))dsdt \begin{equation} \begin{aligned} \mathrm{Cov}[Z_i,Z_j\mid\mathcal{S}] &= \frac{1}{L}\int_0^L z_i(t)z_j(t)\mathrm{d}t - \frac{1}{L^2}\left(\int_0^L z_i(t)\mathrm{d}t\right)\left(\int_0^L z_j(t)\mathrm{d}t\right)\\ &= \frac{1}{L^2}\int_0^L\int_0^L\left(z_i(t)z_j(t)-z_i(t)z_j(s)\right)\mathrm{d}s\mathrm{d}t\\ &= \frac{1}{2L^2}\int_0^L\int_0^L\left(z_i(t)z_j(t)+z_i(s)z_j(s)-z_i(t)z_j(s)-z_i(s)z_j(t)\right)\mathrm{d}s\mathrm{d}t\\ &= \frac{1}{2L^2}\int_0^L\int_0^L \left(z_i(t)-z_i(s)\right)\left(z_j(t)-z_j(s)\right)\mathrm{d}s\mathrm{d}t \end{aligned} \end{equation}

排序后的GSG_{\mathcal{S}}使z1,z3z_1,z_3单调不减, z2,z4z_2,z_4单调不增, 因此:

Cov[Zi,Zj∣S]≤0,(i,j)∈{(1,2),(1,4),(2,3),(3,4)}Cov[Zi,Zj∣S]≥0,(i,j)∈{(1,3),(2,4)} \begin{equation} \begin{aligned} \mathrm{Cov}[Z_i,Z_j\mid\mathcal{S}] &\leq 0, &&(i,j)\in\{(1,2),(1,4),(2,3),(3,4)\}\\ \mathrm{Cov}[Z_i,Z_j\mid\mathcal{S}] &\geq 0, &&(i,j)\in\{(1,3),(2,4)\} \end{aligned} \end{equation}

与独立均匀样本比较, 四样本平均的条件方差为:

Var[GS(U)∣S]=14∑k=14(Var[Zk∣S]+(E[Zk∣S]−1N∑i=1NCi)2)Var[⟨Ix⟩iid∣S]=116∑k=14(Var[Zk∣S]+(E[Zk∣S]−1N∑i=1NCi)2)Var[⟨Ix⟩anti∣S]−Var[⟨Ix⟩iid∣S]=116(2∑i<jCov[Zi,Zj∣S]−∑k=14(E[Zk∣S]−1N∑i=1NCi)2) \begin{equation} \begin{aligned} &\mathrm{Var}[G_{\mathcal{S}}(U)\mid\mathcal{S}] = \frac{1}{4}\sum_{k=1}^4\left(\mathrm{Var}[Z_k\mid\mathcal{S}]+\left(E[Z_k\mid\mathcal{S}]-\frac{1}{N}\sum_{i=1}^N C_i\right)^2\right)\\ &\mathrm{Var}[\langle I_x\rangle_\mathrm{iid}\mid\mathcal{S}] = \frac{1}{16}\sum_{k=1}^4\left(\mathrm{Var}[Z_k\mid\mathcal{S}]+\left(E[Z_k\mid\mathcal{S}]-\frac{1}{N}\sum_{i=1}^N C_i\right)^2\right)\\ &\mathrm{Var}[\langle I_x\rangle_\mathrm{anti}\mid\mathcal{S}] -\mathrm{Var}[\langle I_x\rangle_\mathrm{iid}\mid\mathcal{S}] = \frac{1}{16}\left(2\sum_{i<j}\mathrm{Cov}[Z_i,Z_j\mid\mathcal{S}]-\sum_{k=1}^4\left(E[Z_k\mid\mathcal{S}]-\frac{1}{N}\sum_{i=1}^N C_i\right)^2\right) \end{aligned} \end{equation}

以上均固定候选集合, 但S\mathcal{S}本身也需要随机抽样. 令⟨Ix⟩\langle I_x\rangle表示任意一种四样本平均估计量, 基于全方差公式可估计方差, 候选抽样方式直接影响第二项, 得到候选后再执行RIS:

Var[⟨Ix⟩]=Var[1N∑i=1NCi]+E[Var[⟨Ix⟩∣S]] \begin{equation} \begin{aligned} \mathrm{Var}[\langle I_x\rangle] &=\mathrm{Var}\left[\frac{1}{N}\sum_{i=1}^N C_i\right]+E\left[\mathrm{Var}[\langle I_x\rangle\mid\mathcal{S}]\right] \end{aligned} \end{equation}

Russian Roulette
#

Zero Variance
#

令ci=∑j>iβjLe(pj)c_i = \sum_{j > i}\beta_j L_e(\mathbf{p}_j), 由Li=Lr+LeL_i = L_r + L_e可得:

E[ci∣p0…i]=E[βi+1Li(pi+1→pi)∣p0…i]=βiLr(pi→pi−1) \begin{equation} E[c_i|\mathbf{p}_{0 \dots i}] = E\big[\beta_{i+1}L_i(\mathbf{p}_{i+1} \to \mathbf{p}_i)\big|\mathbf{p}_{0 \dots i}\big]\\ = \beta_i L_r(\mathbf{p}_i \to \mathbf{p}_{i-1}) \end{equation}

零方差(zero-variance)抽样密度pzvp_\mathrm{zv}即前文条件分布, 抽样密度正比于方向贡献:

pzv(pi+1∣pi−1,pi)=f(pi+1→pi→pi−1)G(pi↔pi+1)Li(pi+1→pi)Lr(pi→pi−1) \begin{equation} p_\mathrm{zv}(\mathbf{p}_{i+1}|\mathbf{p}_{i-1}, \mathbf{p}_i) = \frac{f(\mathbf{p}_{i+1} \to \mathbf{p}_i \to \mathbf{p}_{i-1})G(\mathbf{p}_i \leftrightarrow \mathbf{p}_{i+1})L_i(\mathbf{p}_{i+1} \to \mathbf{p}_i)}{L_r(\mathbf{p}_i \to \mathbf{p}_{i-1})} \end{equation}

以pzvp_\mathrm{zv}抽样得pi+1\mathbf{p}_{i+1}, 代入上式形式如下. 光源不再弹射, 故到达光源顶点时贡献为像素真值.

E[ci∣p0…i]=βiLr(pi→pi−1)=βif(pi+1→pi→pi−1)G(pi↔pi+1)pzv(pi+1∣pi−1,pi)Li(pi+1→pi)=βi+1Li(pi+1→pi)=βi+1Le(pi+1)+E[ci+1∣p0…i+1] \begin{equation} \begin{aligned} E[c_i|\mathbf{p}_{0 \dots i}] &= \beta_i L_r(\mathbf{p}_i \to \mathbf{p}_{i-1})\\ &= \beta_i\frac{f(\mathbf{p}_{i+1} \to \mathbf{p}_i \to \mathbf{p}_{i-1})G(\mathbf{p}_i \leftrightarrow \mathbf{p}_{i+1})}{p_\mathrm{zv}(\mathbf{p}_{i+1}|\mathbf{p}_{i-1}, \mathbf{p}_i)}L_i(\mathbf{p}_{i+1} \to \mathbf{p}_i)\\ &= \beta_{i+1}L_i(\mathbf{p}_{i+1} \to \mathbf{p}_i)\\ &= \beta_{i+1}L_e(\mathbf{p}_{i+1}) + E[c_{i+1}|\mathbf{p}_{0 \dots i+1}] \end{aligned} \end{equation}

由前文可得fGLi=LrpzvfGL_i = L_r p_\mathrm{zv}, 任意抽样密度pp下方差如下, 可见p=pzvp=p_{zv}时方差最小.

Var[fGLip]=∫A(fGLip−Lr)2p dpi+1=Lr2∫A(pzvp−1)2p dpi+1=Lr2∫A(pzv−p)2pdpi+1 \begin{equation} \begin{aligned} \mathrm{Var}\left[\frac{fGL_i}{p}\right] &= \int_\mathcal{A}\left(\frac{fGL_i}{p} - L_r\right)^2 p\,\mathrm{d}\mathbf{p}_{i+1}\\ &= L_r^2\int_\mathcal{A}\left(\frac{p_\mathrm{zv}}{p} - 1\right)^2 p\,\mathrm{d}\mathbf{p}_{i+1}\\ &= L_r^2\int_\mathcal{A}\frac{(p_\mathrm{zv} - p)^2}{p}\mathrm{d}\mathbf{p}_{i+1} \end{aligned} \end{equation}

⟨Li⟩\langle L_i \rangle为后缀估计, 由方差定义得E[⟨Li⟩2∣pi+1]=Li2(pi+1→pi)+Var[⟨Li⟩∣pi+1]E[\langle L_i \rangle^2|\mathbf{p}_{i+1}] = L_i^2(\mathbf{p}_{i+1} \to \mathbf{p}_i) + \mathrm{Var}[\langle L_i \rangle|\mathbf{p}_{i+1}]. 分裂为n=⌊q⌋n = \lfloor q \rfloor条后缀, 再以概率q−nq - n的Bernoulli试验决定最后一次分裂, 每条权重乘1q\frac{1}{q}, q<1q < 1时退化为轮盘赌. 记路径数N=n+BN = n + B, B∼Bernoulli(q−n)B \sim \mathrm{Bernoulli}(q - n), E[N]=qE[N] = q, E[N2]=q2+(q−n)(n+1−q)E[N^2] = q^2 + (q - n)(n + 1 - q). 估计量⟨Lr⟩q=fGp1q∑k=1N⟨Li⟩k\langle L_r \rangle_q = \frac{fG}{p}\frac{1}{q}\sum_{k=1}^N\langle L_i \rangle_k, 各后缀独立且与NN独立, 此时可得:

Var[⟨Lr⟩q]=E[⟨Lr⟩q2]−E[⟨Lr⟩q]2=E[E[⟨Lr⟩q2∣pi+1]]−Lr2=E[(fGp)2E[(∑k=1N⟨Li⟩k)2|pi+1]q2]−Lr2=E[(fGp)2E[NVar[⟨Li⟩∣pi+1]+N2Li2|pi+1]q2]−Lr2=E[(fGp)2qVar[⟨Li⟩∣pi+1]+(q2+(q−n)(n+1−q))Li2q2]−Lr2=Var[fGLip]+E[(fGp)2(Var[⟨Li⟩∣pi+1]q+(q−n)(n+1−q)q2Li2)] \begin{equation} \begin{aligned} \mathrm{Var}[\langle L_r \rangle_q] &= E[\langle L_r \rangle_q^2] - E[\langle L_r \rangle_q]^2\\ &= E\big[E[\langle L_r \rangle_q^2|\mathbf{p}_{i+1}]\big] - L_r^2\\ &= E\left[\left(\frac{fG}{p}\right)^2\frac{E\left[\left(\sum_{k=1}^N\langle L_i \rangle_k\right)^2\middle|\mathbf{p}_{i+1}\right]}{q^2}\right] - L_r^2\\ &= E\left[\left(\frac{fG}{p}\right)^2\frac{E\left[N\mathrm{Var}[\langle L_i \rangle|\mathbf{p}_{i+1}] + N^2L_i^2\middle|\mathbf{p}_{i+1}\right]}{q^2}\right] - L_r^2\\ &= E\left[\left(\frac{fG}{p}\right)^2\frac{q\mathrm{Var}[\langle L_i \rangle|\mathbf{p}_{i+1}] + \left(q^2 + (q - n)(n + 1 - q)\right)L_i^2}{q^2}\right] - L_r^2\\ &= \mathrm{Var}\left[\frac{fGL_i}{p}\right] + E\left[\left(\frac{fG}{p}\right)^2\left(\frac{\mathrm{Var}[\langle L_i \rangle|\mathbf{p}_{i+1}]}{q} + \frac{(q - n)(n + 1 - q)}{q^2}L_i^2\right)\right] \end{aligned} \end{equation}

记pi\mathbf{p}_i处相对方差ri=Var[⟨Lr⟩q]Lr2r_i = \frac{\mathrm{Var}[\langle L_r \rangle_q]}{L_r^2}, 设pi+1\mathbf{p}_{i+1}非光源, 由Li(pi+1→pi)=Lr(pi+1→pi)L_i(\mathbf{p}_{i+1} \to \mathbf{p}_i) = L_r(\mathbf{p}_{i+1} \to \mathbf{p}_i)得后缀相对方差ri+1=Var[⟨Li⟩∣pi+1]Li2r_{i+1} = \frac{\mathrm{Var}[\langle L_i \rangle|\mathbf{p}_{i+1}]}{L_i^2}. 记w=pzvp=fGLipLrw = \frac{p_\mathrm{zv}}{p}=\frac{fGL_i}{pL_r}, 代入方差可得:

Var[⟨Lr⟩q]=Lr2(∫A(pzv−p)2pdpi+1+E[w2(ri+1q+(q−n)(n+1−q)q2)]) \begin{equation} \mathrm{Var}[\langle L_r \rangle_q] = L_r^2\left(\int_\mathcal{A}\frac{(p_\mathrm{zv} - p)^2}{p}\mathrm{d}\mathbf{p}_{i+1} + E\left[w^2\left(\frac{r_{i+1}}{q} + \frac{(q - n)(n + 1 - q)}{q^2}\right)\right]\right) \end{equation}

第一项与qq无关; 取整项分情况讨论, 均不超过14\frac{1}{4}与qq, 因此第二项不超过E[w2(ri+1+1)q]E\left[\frac{w^2(r_{i+1} + 1)}{q}\right].

(q−n)(n+1−q)={q(1−q)≤min⁡(14,q),q<1(q−n)(n+1−q)≤14≤q,q≥1 \begin{equation} (q - n)(n + 1 - q) = \begin{cases} q(1 - q) \leq \min\left(\frac{1}{4}, q\right), & q < 1\\ (q - n)(n + 1 - q) \leq \frac{1}{4} \leq q, & q \geq 1 \end{cases} \end{equation}

预算E[q]=1E[q] = 1下应用Cauchy-Schwarz不等式, 等号成立当且仅当wri+1+1q∝q\frac{w\sqrt{r_{i+1} + 1}}{\sqrt{q}} \propto \sqrt{q}即wri+1+1=cqw\sqrt{r_{i+1} + 1} = cq, 由E[q]=1E[q] = 1得c=E[wri+1+1]c = E\left[w\sqrt{r_{i+1} + 1}\right], 此时上界最小:

E[wri+1+1]2=E[wri+1+1qq]2≤E[w2(ri+1+1)q]E[q]=E[w2(ri+1+1)q] \begin{equation} \begin{aligned} E\left[w\sqrt{r_{i+1} + 1}\right]^2 &= E\left[\frac{w\sqrt{r_{i+1} + 1}}{\sqrt{q}}\sqrt{q}\right]^2\\ &\leq E\left[\frac{w^2(r_{i+1} + 1)}{q}\right]E[q]\\ &= E\left[\frac{w^2(r_{i+1} + 1)}{q}\right] \end{aligned} \end{equation}

此时可得最优的qq:

q∗=wri+1+1E[wri+1+1] \begin{equation} q^* = \frac{w\sqrt{r_{i+1} + 1}}{E\left[w\sqrt{r_{i+1} + 1}\right]} \end{equation}

ADRR
#

假设ri+1r_{i+1}为常数, 此时可以约去ri+1+1\sqrt{r_{i+1} + 1}, 由E[w]=∫Apzvdpi+1=1E[w] = \int_\mathcal{A} p_\mathrm{zv}\mathrm{d}\mathbf{p}_{i+1} = 1可得q∗=wq^* = w. 令qq为期望贡献与像素真值之比, 此时可得最优的qq:

q=βi+1Lr(pi+1→pi)I=fGLi(pi+1→pi)pLr(pi→pi−1)=pzvp=w \begin{equation} q = \frac{\beta_{i+1}L_r(\mathbf{p}_{i+1} \to \mathbf{p}_i)}{I} = \frac{fGL_i(\mathbf{p}_{i+1} \to \mathbf{p}_i)}{pL_r(\mathbf{p}_i \to \mathbf{p}_{i-1})} = \frac{p_\mathrm{zv}}{p} = w \end{equation}

记χ2=∫A(pzv−p)2pdpi+1\chi^2 = \int_\mathcal{A}\frac{(p_\mathrm{zv} - p)^2}{p}\mathrm{d}\mathbf{p}_{i+1}, 代入q=wq = w得:

Var[⟨Lr⟩q]=Var[Lrq]+E[Lr2q2(ri+1q+(q−n)(n+1−q)q2)]=Lr2(∫A(pzv−p)2pdpi+1+E[(q−n)(n+1−q)]+∫Apzv ri+1 dpi+1)=Lr2(χ2+ri+1+E[(q−n)(n+1−q)]) \begin{equation} \begin{aligned} \mathrm{Var}[\langle L_r \rangle_q] &= \mathrm{Var}[L_r q] + E\left[L_r^2 q^2\left(\frac{r_{i+1}}{q} + \frac{(q - n)(n + 1 - q)}{q^2}\right)\right]\\ &= L_r^2\left(\int_\mathcal{A}\frac{(p_\mathrm{zv} - p)^2}{p}\mathrm{d}\mathbf{p}_{i+1} + E\big[(q - n)(n + 1 - q)\big] + \int_\mathcal{A} p_\mathrm{zv}\,r_{i+1}\,\mathrm{d}\mathbf{p}_{i+1}\right)\\ &= L_r^2\left(\chi^2 + r_{i+1} + E\big[(q - n)(n + 1 - q)\big]\right) \end{aligned} \end{equation}

q≡1q \equiv 1时形式如下:

Var[⟨Lr⟩1]=Var[fGLip]+E[(fGp)2Var[⟨Li⟩∣pi+1]]=Lr2χ2+E[(fGLip)2ri+1]=Lr2(χ2+ri+1E[w2])=Lr2(χ2+ri+1∫Apzv2pdpi+1)=Lr2(χ2+ri+1∫A(pzv−p)2+2pzvp−p2pdpi+1)=Lr2(χ2+ri+1(1+χ2)) \begin{equation} \begin{aligned} \mathrm{Var}[\langle L_r \rangle_1] &= \mathrm{Var}\left[\frac{fGL_i}{p}\right] + E\left[\left(\frac{fG}{p}\right)^2\mathrm{Var}[\langle L_i \rangle|\mathbf{p}_{i+1}]\right]\\ &= L_r^2\chi^2 + E\left[\left(\frac{fGL_i}{p}\right)^2 r_{i+1}\right]\\ &= L_r^2\left(\chi^2 + r_{i+1}E[w^2]\right)\\ &= L_r^2\left(\chi^2 + r_{i+1}\int_\mathcal{A}\frac{p_\mathrm{zv}^2}{p}\mathrm{d}\mathbf{p}_{i+1}\right)\\ &= L_r^2\left(\chi^2 + r_{i+1}\int_\mathcal{A}\frac{(p_\mathrm{zv} - p)^2 + 2p_\mathrm{zv}p - p^2}{p}\mathrm{d}\mathbf{p}_{i+1}\right)\\ &= L_r^2\left(\chi^2 + r_{i+1}(1 + \chi^2)\right) \end{aligned} \end{equation}

记{w}\{w\}为ww的小数部分, 任意w≥0w \geq 0有{w}(1−{w})≤∣w−1∣\{w\}(1 - \{w\}) \leq |w - 1|, 此时可得:

E[(q−n)(n+1−q)]=E[{w}(1−{w})]≤E[∣w−1∣]≤E[(w−1)2]=χ \begin{equation} \begin{aligned} E\big[(q - n)(n + 1 - q)\big] &= E\big[\{w\}(1 - \{w\})\big]\\ &\leq E\big[|w - 1|\big]\\ &\leq \sqrt{E\big[(w - 1)^2\big]}\\ &= \chi \end{aligned} \end{equation}

因此ri+1χ2≥min⁡(14,χ)r_{i+1}\chi^2 \geq \min\left(\frac{1}{4}, \chi\right)时轮盘赌更优, 后缀噪声越大, pp偏离pzvp_\mathrm{zv}越远, 收益越大.

Variable Rate Shading
#

DOOM: The Dark Ages
#

基于可见性缓冲分发每个材质的绘制调用, 材质序号作为深度比较是否相等. 材质无空间连贯性, Hi-Z无法剔除, 性能与Forward+持平.

DOOM将多种相似材质打包为单个着色器, 为每个着色器分配隐式命令缓冲. 计算分发基于图块判断块内像素需要调用的着色器和材质, 以子组为单位原子填充各着色器的命令缓冲, 即根据子组大小对齐某种材质的像素数量.

对于不支持隐式命令缓冲的平台, 对每种着色器根据每个图块所请求的工作组大小分桶, 增加一个维度用于标记图块序号. 由于桶的数量已知, CPU上为每个桶分别分发命令即可.

依据亮度梯度确定着色率, 填充命令缓冲时只统计主像素并附加复制位. 若判断为四元组只渲染0号样本, 再添加更严格的判断, 以避免体积雾等效果的抖动失效.

Call of Duty: Modern Warfare
#

基于MSAA实现软件VRS, 颜色附件宽高减半并开启4xMSAA. 深度预通道以像素频率着色, 插值中心为0号样本, 基于梯度还原其余样本的重心坐标, 执行透明度测试以提升植被渲染效果并修改覆盖掩码.

着色率表示为2位, 由于0号样本总是着色, 只需存储水平, 垂直或其余三个像素是否被着色. 每帧轮换0号像素, 使用覆盖掩码更新着色率, 历史4帧着色率存储为8位, 对其求或以利用时域统计的着色频率, 例如4帧都只着色0号样本, 当前帧保持即可.

Forward+绘制逐样本着色, 着色率通过修改模板缓冲剔除低着色率区域. 计算着色器缺少硬件子组打包, 以图块为单位将存活样本按平面紧凑打包以降低分歧.

Call of Duty: Modern Warfare 4
#

基于A-SVGF时间梯度调整采样率. 将屏幕以s×ss \times s分层, 每层选一个历史帧表面样本Gi−1G_{i-1}, 前向投影/重放到当前帧得G⃗i−1\vec{G}_{i-1}. 梯度与归一化因子定义如下:

δ=fi(G⃗i−1,ξi−1)−fi−1(Gi−1,ξi−1)Δ=max⁡(fi(G⃗i−1,ξi−1),fi−1(Gi−1,ξi−1)) \begin{equation} \begin{aligned} \delta &= f_i(\vec{G}_{i-1}, \xi_{i-1}) - f_{i-1}(G_{i-1}, \xi_{i-1})\\ \Delta &= \max\big(f_i(\vec{G}_{i-1}, \xi_{i-1}), f_{i-1}(G_{i-1}, \xi_{i-1})\big) \end{aligned} \end{equation}

滤波并归一化得历史权重λ\lambda, 调整全局α\alpha为混合系数αi\alpha_i, 取3×33 \times 3邻域最大值弥补重建误差:

λ=min⁡(1,∣δ^∣Δ^),αi=(1−λ)α+λ \begin{equation} \lambda = \min\left(1, \frac{|\hat{\delta}|}{\hat{\Delta}}\right), \quad \alpha_i = (1 - \lambda)\alpha + \lambda \end{equation}

NN为历史样本数, Nt=1αiN_t = \frac{1}{\alpha_i}为可容忍的历史样本数, Nmax=1αN_\mathrm{max} = \frac{1}{\alpha}为目标样本数, 此时可计算被保留的历史样本数N′N':

N′=min⁡(N,Nt−1) \begin{equation} N' = \min\left(N, N_t - 1\right) \end{equation}

历史未满时超采样, 历史已满时估计方差并降采样. ρ\rho为依据方差调整的分段常数, 决定降采样追踪概率. 请求样本数为连续实数, 小数部分随机抽样光线, 样本数如下:

n={min⁡(Nmax−N′,nmax),N′<Nmax−1ρ(σ2),N′=Nmax−1 \begin{equation} n = \begin{cases} \min(N_\mathrm{max} - N', n_\mathrm{max}), & N' < N_\mathrm{max} - 1\\ \rho(\sigma^2), & N' = N_\mathrm{max} - 1 \end{cases} \end{equation}

对nn分桶统计全屏光线, 档位为164,163,⋯ ,12,1,2,⋯ ,16\frac{1}{64}, \frac{1}{63}, \cdots, \frac{1}{2}, 1, 2, \cdots, 16, 选桶流程如下:

rb(n)={⌊n⌋,n≥11/⌈1/n⌉,n<1 \begin{equation} r_{b(n)} = \begin{cases} \lfloor n \rfloor, & n \geq 1\\ 1/\lceil 1/n \rceil, & n < 1 \end{cases} \end{equation}

超出预算时自顶向下合并, 最高非空桶并入下一档直至不超过预算, 反之则自底向上合并. 末次合并时整档调整粒度过粗, 对桶内像素统一降低/提升样本数以刚好满足预算.