Skip to content

Latest commit

 

History

History
146 lines (97 loc) · 5.08 KB

重要性采样中的分布转换.md

File metadata and controls

146 lines (97 loc) · 5.08 KB

重要性采样中的分布转换

Importance Sampling PDFs (VNDF, Spherical Caps) - 飞书云文档


在 GGX 法线分布中采样半程向量

$$D_{GGX}=\frac{\alpha^2}{\pi((\alpha^2-1)(n\cdot h)^2+1)^2} \quad \text{and} \quad\int D_{GGX}(h)(n\cdot h)dh=1$$

$$PDF_{GGX}(h)=D_{GGX}(h)(n\cdot h)=\frac{\alpha^2(n\cdot h)}{\pi((\alpha^2-1)(n\cdot h)^2+1)^2}$$

$h$是向量,我们用极坐标表示它:

$$PDF_{GGX}(\theta,\phi)=D_{GGX}(\theta,\phi)\cos{\phi}=\frac{\alpha^2\cos{\phi}}{\pi((\alpha^2-1)\cos^2{\phi}+1)^2}$$

紧接着求出两个变量的联合概率分布:

$$F_{GGX}(\theta,\phi)=\int_0^{\phi}\int_0^{\theta}\frac{\alpha^2\cos{\phi}\sin{\phi}}{\pi((\alpha^2-1)\cos^2{\phi}+1)^2},d\theta d\phi=\int_0^{\phi}\frac{\theta\alpha^2\cos{\phi}\sin{\phi}}{\pi((\alpha^2-1)\cos^2{\phi}+1)^2},d\phi$$

$$F_{GGX}(\theta,\phi)=\int_0^{\phi}\frac{-\theta\alpha^2\cos{\phi}}{\pi((\alpha^2-1)\cos^2{\phi}+1)^2},d\cos{\phi}$$

令$\cos{\phi}=t$,则:

$$F_{GGX}(\theta,\phi)=\int_1^{\cos{\phi}}\frac{-\theta\alpha^2t}{\pi((\alpha^2-1)t^2+1)^2},dt$$

$$=\int_1^{\cos{\phi}}\frac{-\theta\alpha^2}{2\pi (\alpha^2-1)((\alpha^2-1)t^2+1)^2},d((\alpha^2-1)t^2+1)$$

再令$(\alpha^2-1)t^2+1=a$,则:

$$F_{GGX}(\theta,\phi)=\int_{\alpha^2}^{(\alpha^2-1)\cos^2{\phi}+1}\frac{-\theta\alpha^2}{2\pi (\alpha^2-1)a^2}da=\int_{\alpha^2}^{(\alpha^2-1)\cos^2{\phi}+1}\frac{\theta\alpha^2}{2\pi (\alpha^2-1)}d\frac{1}{a}$$

那么

$$F_{GGX}(\theta,\phi)=\frac{\theta\alpha^2}{2\pi (\alpha^2-1)}\frac{1}{a}\Big\vert_{\alpha^2}^{(\alpha^2-1)\cos^2{\phi}+1}=\frac{\theta(1-\cos^2{\phi})}{2\pi((\alpha^2-1)\cos^2{\phi}+1)}$$

边缘概率分布为:

$$ \begin{cases} F_{GGX}(\theta)=\frac{\theta}{2\pi} \\ F_{GGX}(\phi)=\frac{1-\cos^2{\phi}}{(\alpha^2-1)\cos^2{\phi}+1} \end{cases} $$

现令$\zeta_1=F_{GGX}(\theta)$和$\zeta_2=F_{GGX}(\phi)$,则:

$$ \begin{cases} \theta=2\pi\zeta_1 \\ \phi=\arccos{\sqrt{{\frac{1-\zeta_2}{\zeta_2(\alpha^2-1)+1}}}} \end{cases} $$

将半程向量的 PDF 转化成入射光线方向的 PDF(几何法)

找到两个方位角微分$dh$和$dl$的关系$\frac{dh}{dl}$: 考虑以观察向量为轴的极坐标系,记$(v\cdot h)=(h\cdot l)=\cos{\theta}$,则:

$$ \begin{cases} dh=\sin{\theta}d\phi d\theta \\ dl=\sin{2\theta}d\phi d2\theta \end{cases} $$

[!note] recall 方位角微分的计算方法:$dw=\sin{\phi}d\theta d\phi$

所以

$$\frac{dh}{dl}=\frac{\sin{\theta}d\phi d\theta}{4\sin{\theta}\cos{\theta}d\phi d\theta}=\frac{1}{4\cos{\theta}}$$

所以,根据$\int D_{GGX}(h)(n\cdot h)dh=1$可知:

$$\int D_{GGX}(h)(n\cdot h)dh=\int D_{GGX}(h)(n\cdot h)\frac{dh}{dl}dl=\int \frac{D_{GGX}(h)(n\cdot h)}{4\cos{\theta}}dl=1$$

因此,入射光线$l$的 PDF 为:

$$PDF_{GGX}(l)=\frac{D_{GGX}(h)(n\cdot h)}{4\cos{\theta}}\quad \text{and} \quad \cos{\theta}=(v\cdot h)=(h\cdot l)$$

因此,使用蒙特卡洛重要性采样计算渲染方程:

$$L_o(v)=\int_{l\in \Omega}BRDF\cdot L_i(l)\cdot(n\cdot l)dl=\frac{1}{N}\sum_{l\in PDF_{GGX}(l)}\frac{BRDF\cdot L_i(l)\cdot(n\cdot l)}{PDF_{GGX}(l)}$$

$$=\frac{1}{N}\sum_{l\in PDF_{GGX}(l)}\frac{BRDF\cdot L_i(l)\cdot(n\cdot l)}{D_{GGX}(h)(n\cdot h)}4\cos{\theta}=\frac{1}{N}\sum_{l\in PDF_{GGX}(l)}\frac{F\cdot G\cdot L_i(l)(v\cdot h)}{(n\cdot v)(n\cdot h)}$$

将半程向量的 PDF 转化成入射光线方向的 PDF(雅可比矩阵法)

$\omega_i$是入射光线,$\omega_m$是微表面法向量(半程向量 h),$\Omega$是法线上半球面。 可见几何法线分布$D_{\omega_i}(\omega_m)$满足:

$$\int_{\Omega}D_{\omega_i}(\omega_m)d\omega_m=1$$

其中:

$$D_{\omega_i}(\omega_m)=\frac{G_1(\omega_i,\omega_m) \vert \omega_i\cdot \omega_m \vert D(\omega_m)}{\vert \omega_i \cdot \omega_g \vert}$$

考虑入射光线$\omega_i$和半程向量$\omega_m$之间的关系: 再以观察向量为轴的极坐标系中,两个向量的偏航角相等,而入射光线$\omega_i$的俯仰角是半程向量$\omega_m$的两倍:

$$ \begin{cases} d\omega_m=\sin{\phi}d\theta d\phi \\ d\omega_i=\sin{v}dudv \end{cases} \quad \text{and} \quad \begin{cases} \theta=u \\ \phi=\frac{1}{2}v \end{cases} $$

计算雅可比矩阵 J 的绝对值:

$$ \vert J\vert=\frac{\partial(\theta,\phi)}{\partial(u,v)}= \Big\vert\begin{matrix} \frac{\partial \theta}{\partial u}&\frac{\partial \theta}{\partial v} \\ \frac{\partial \phi}{\partial u}&\frac{\partial \phi}{\partial v} \end{matrix}\Big\vert= \Big\vert\begin{matrix} 1&0\0&\frac{1}{2} \end{matrix}\Big\vert =\frac{1}{2} $$

那么

$$\frac{d\omega_m}{d\omega_i}=\frac{\sin{\phi}d\theta d\phi}{\sin{v}dudv}=\frac{\sin{\phi}}{\sin{2\phi}}\cdot\frac{\partial(\theta,\phi)}{\partial(u,v)}=\frac{\sin{\phi}}{2\sin{\phi}\cos{\phi}}\cdot \vert J\vert=\frac{1}{4\cos{\phi}}$$

因此

$$\int_{\Omega}D_{\omega_i}(\omega_m)d\omega_m=\int_{\Omega}D_{\omega_i}(\omega_m)\frac{d\omega_m}{d\omega_i}d\omega_i=\int_{\Omega}\frac{D_{\omega_i}(\omega_m)}{4\cos{\phi}}d\omega_i=1$$

因此

$$PDF(\omega_i)=\frac{D_{\omega_i}(\omega_m)}{4\cos{\phi}}\quad \text{and} \quad \cos{\phi}=(\omega_v\cdot \omega_m)=(\omega_m\cdot \omega_i)$$