跳过正文

Metatron Dev. IV: Path Guiding

·3054 字·7 分钟
目录

ReSTIR PG
#

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

p(ωip,ω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(p0p1)G(p0p1)i=1n1f(pi+1pipi1)G(pipi+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+1pipi1)G(pipi+1),i>1We(p0p1)G(p0p1)f(p2p1p0)G(p1p2),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=1n1T(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=2An\Omega=\bigcup_{n=2}^\infty \mathcal{A}^n的分层抽样, 其密度为各像素分布的混合:

p(x)=Φ(p0,p1)f(x),Φ(p0,p1)=1Nx=1NCx[hx(p0p1)>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=dpadpb\mathrm{d}\mathbf{p}_{a:b}=\mathrm{d}\mathbf{p}_a \cdots \mathrm{d}\mathbf{p}_b, 约定a>ba > b时积分退化为被积函数本身:

p(pi+1p0,,pi)=p(p0,,pi+1)p(p0,,pi)=n=i+1Ani1p(x)dpi+2:nn=i+1Anip(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}_0p1\mathbf{p}_1, 条件i1i \geq 1已固定二者, 同时t=1i1T(pt)\prod_{t=1}^{i-1}T(\mathbf{p}_t)与积分变量无关, 一并约去:

p(pi+1p0,,pi)=n=i+1Ani1t=1n1T(pt)Le(pn)dpi+2:nn=i+1Anit=1n1T(pt)Le(pn)dpi+1:n=T(pi)n=i+1Ani1t=i+1n1T(pt)Le(pn)dpi+2:nn=i+1Anit=in1T(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+1pi)=n=i+1Ani1t=i+1n1T(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(pipi1)Le(pipi1)=n=i+1Anit=in1T(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}

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

p(pi+1pi1,pi)f(pi+1pipi1)G(pipi+1)Li(pi+1pi) \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(ωipi,ω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(ωip,ω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ωoLi(ω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}