图形学论文阅读 - 非真实感辐照度重映射

201 阅读3分钟

Non-photorealistic Radiance Remapping

Doi, K., & Morimoto, Y. (2020). Non-photorealistic Radiance Remapping. ACM SIGGRAPH 2020 Posters.  doi:10.1145/3388770.3407395

本文提出了一种与强度 II 相对应的颜色映射方法,该方法考虑到了光线在三维空间的物体之间的相互作用。而以往依据几何规范 (geometric specification) 或者渲染结果 (rendered result) 来映射颜色的方法,不能重现周围物体的相互反射。

利用路径追踪,用在采样的光线传播路径中的任意一维纹理,来代替出射 Radiance,最终出现在物体上的纹理是以修改后的估计值的加权平均值计算得出的,好处是可以根据物理强度产生颜色变化、再现焦散 (caustics) 或者色溢 (color bleeding) 等物理现象。

作者认为卡通着色所应用的

  1. 简化表面法线与光照方向着色的一维纹理
  2. 图像处理
  3. 在图形管线的着色阶段实现颜色量化和阴影重着色 等方法,都只是部分地考虑全局光照的作用。

而通过路径追踪的方法,则可以将任意一维纹理应用于场景的视觉强度,以改变材料的外观。

在对所采样的光路行进每次评估时,根据路径使用带有权重的纹理,纹理坐标和权重都是根据强度 II 计算的。

image.png

目的

PBR 渲染方程计算出出射 Radiance,即 LpL_p。再依据 LpL_p 推导出其在出射方向 ωo\omega_o 的上对应的非真实感 Radiance,即 LNPL_{NP}

公式推导

PBR 渲染方程

LP=Le+S2f(ωi,ωo)Li(ωi)nωidωiL_{P}=L_{e}+\int_{\mathcal{S}^{2}} f\left(\omega_{i}, \omega_{o}\right) L_{i}\left(\omega_{i}\right)\left|\mathbf{n} \cdot \omega_{i}\right| d \omega_{i}

蒙特卡洛积分解 PBR 渲染方程

为了解出 PBR 渲染方程,通常使用蒙特卡洛积分,以任意概率密度 pp,对入射方向 ωi\omega_i 进行采样。

L^P=Le+f(ωi,ωo)Li(ωi)nωip(ωi)\hat{L}_{P}=L_{e}+\frac{f\left(\omega_{i}, \omega_{o}\right) L_{i}\left(\omega_{i}\right)\left|\mathbf{n} \cdot \omega_{i}\right|}{p\left(\omega_{i}\right)}

加权公式求出非真实感出射 Radiance

PBR 渲染方程得到的出射 Radiance LpL_p 得出非真实感的出射 Radiance LNPL_{NP}

首先引入定义域为 [0,1][0,1] 的一维纹理 T(u)T(u),其中 uu 是从 L^P\hat{L}_{P} 映射得到的。

LNPL_{NP} 是通过对修改后的采样进行平均获得的,因此纹理值需要根据 L^P\hat{L}_{P}LNPL_{NP} 的贡献,乘以 W(L^P)W(\hat{L}_{P}) 进行加权

LNP=S2W(L^P)T(u(L^P))dωiW(L^P)p(ωi)T(u(L^P))\begin{aligned} L_{N P} &=\int_{\mathcal{S}^{2}} W\left(\hat{L}_{P}\right) T\left(u\left(\hat{L}_{P}\right)\right) d \omega_{i} \\ & \cong \frac{W\left(\hat{L}_{P}\right)}{p\left(\omega_{i}\right)} T\left(u\left(\hat{L}_{P}\right)\right) \end{aligned}

强度 II

通过色调映射函数 Tonemap Function,依据出射 Randiance L^P\hat{L}_{P} 来映射强度 II

I= tonemap (L^P)I=\text { tonemap }\left(\hat{L}_{P}\right)

具体来说就是强度 II 通过将 L^p\hat{L}_p 转为 X,Y,ZX,Y,Z 颜色空间,并对 YY 值进行伽马校正后获得 II

纹理映射

将强度范围 [Imin,Imax][I_{min},I_{max}] 归一化,定义为纹理坐标 uu,以求出强度 II 在一维纹理上的颜色值 T(u)T(u)

u={1 if ImaxIIIminImaxImin if Imin<I<Imax0 if IIminu=\left\{\begin{array}{cc} 1 & \text { if } I_{\max } \leq I \\ \frac{I-I_{\min }}{I_{\max }-I_{\min }} & \text { if } I_{\min }<I<I_{\max } \\ 0 & \text { if } I \leq I_{\min } \end{array}\right.

权重函数

权重函数 WW 由强度 II 和 出射 Randiance L^P\hat{L}_{P} 通过 α[0,1]\alpha∈[0,1] 线性插值得到,但需要为强度 I 补充一个最小值 wminw_{min},防止 II 过小时变黑。

W(L^P)p(ωi)=(1α)max{I,wmin}+αL^P\frac{W\left(\hat{L}_{P}\right)}{p\left(\omega_{i}\right)}=(1-\alpha) \max \left\{I, w_{\min }\right\}+\alpha \hat{L}_{P}

对比实验

本文使用该方法与

  • 3D 对象的卡通着色的扩展实现
  • 2D 图像的颜色替换 这两种方法进行比较。

3D 对象的卡通着色的扩展实现

根据法线和入射方向之间的角度,来映射纹理,实现 A1,A2,A3A1,A2,A3

  1. A1A1:通过计算 u=max{nωi,0}u = \max \left\{n \cdot \omega_{i}, 0\right\},即法线和入射方向 ωi\omega_i 的余弦值,映射到一维纹理上得出。

  2. A2A2:考虑了直接光照,计算直接漫反射部分 D=f(ωi,ωo)Li(ωi)(n,ωi)D=f(\omega_i,\omega_o)L_i(\omega_i)(n,\omega_i),再依据法线和入射方向 ωi\omega_i 的余弦值,映射到一维纹理上。

  3. A3A3:还考虑了间接光照,其中入射方向 ωi\omega_i 是沿着 BSDF 采样的,通过路径追踪的入射 Radiance 着色,依旧是依据法线和入射方向 ωi\omega_i 的余弦值,映射到一维纹理上。

2D 图像的颜色替换

BB 使用两个纹理输入,简单的路径追踪图像和包含球体的直接漫反射和简介反射的图像。使球体的渲染结果也是映射在一维纹理的范围内。

image.png