理解微表面

微表面理论


通常我们将一个普通的表面叫做几何表面,方便起见约定面积为1.为了考察微结构,我们假象表面下具有“微观结构”,也就是微表面。为了便于研究我们不会去直接研究微表面的空间结构,而是将其转换为统计模型。为了将微表面转换为统计模型,我们使用Dirac delta分布(单位是1/sr),于是定义法线分布:


$$D(\omega)=\int_M \delta_{\omega}(\omega_m(p_m))dp_m$$


显然对于任意面积都对应于对应的立体角,且:


$$microsurface_area = \int_M dp_m = \int_{\Omega}D(\omega_m)d\omega_m$$


根据发现分布函数的定义,对任一微表面法线的函数$f(\omega_m)$都有:


$$\int_M f(\omega_m(p_m))dp_m=\int_{\Omega}f(\omega_m)D(\omega_m)d\omega_m$$


>如果$g(p_m)$是一个定义在微表面上的空间函数,我们可以定义相关的统计函数$g(\omega_m)$:

$$g(\omega)=\frac{\int_M \delta_{\omega}(\omega_m(p_m))g(p_m)dp_m}{\int_M \delta_{\omega}(\omega_m(p_m))dp_m}$$

同样地,这个统计函数也可以统计积分(带入发现分布方程即可):

$$\int_M g(p_m)dp_m=\int_{\Omega}g(\omega_m)D(\omega_m)d\omega_m$$


对微表面朝着集合法线方向投影,很容易就能得到下列关系:


$$\int_{\Omega}(\omega_m·\omega_g)D(\omega_m)d\omega_m=\int_M (\omega_m(p_m)·\omega_g)dp_m=\int_G dp_g = 1 m^2$$


显然引入Masking函数,所谓Masking就是沿着$\omega_o$方向,某些微表面部分被阻挡,投影无效,即从此方向的可见微表面。


空间Masking函数$G_1(\omega_o,p_m)$只有两个值,0或者1.他可以给出微表面朝着一个方向的投影面积:


$$S_{projected}=\int_M G_1(\omega_o,p_m)<\omega_o,\omega_m(p_m)>dp_m$$


我们按照上面所讲的任意函数统计化公式将$G_1$统计化(注意$G_1$统计化后值域变为[0,1]),上述方程变为统计方程:


$$S_{projected}=\int_{\Omega} G_1(\omega_o,\omega_m)<\omega_o,\omega_m>D(\omega_m)d\omega_m$$


注意到微表面的投影面积和几何表面的投影面积相等,于是得到一个关于$G_1$的限制方程:


$$\cos \theta_o =\int_{\Omega} G_1(\omega_o,\omega_m)<\omega_o,\omega_m>D(\omega_m)d\omega_m$$


但这个方程不能唯一确定一个masking函数,因为对于一个给定的$\omega_o$,还有一个$\omega_m$,对于每一个法线都有一个G。所以我们还需要第二个限制条件——微表面profile,所谓一个微表面profile,可以简单的理解为就是一个假设的微表面的结构。这个结构会大大地影响BRDF的形状。




一个表面的光线在某一方向的出射radiance可以写为其上每点的出射radiance被微元投影面积加权积分,然后再归一化,即:


$$L(\omega_o,M)=\frac{\int_M projected_area(p_m) L(\omega_o,p_m)dp_m}{\int_M projected_area(p_m)dp_m}$$


基于之前的讨论带入投影面积可以得到:


$$L(\omega_o,M)=\frac{1}{\cos \theta_o}\int_\Omega L(\omega_o,\omega_m)G_1(\omega_o,\omega_m)<\omega_o,\omega_m>D(\omega_m)d\omega_m$$


再定义一个**可见法线分布**$D_{\omega_o}(\omega_m)=\frac{G_1(\omega_o,\omega_m)<\omega_o,\omega_m>D(\omega_m)}{\cos \theta_o}$(很显然此式子可以归一化),上式可以化为:


$$L(\omega_o,M)=\int_\Omega L(\omega_o,\omega_m)D_{\omega_o}(\omega_m)d\omega_m$$


构造BRDF


公式


BRDF被定义为给定方向微分反射radiance与微分入射irradiance的比:


$$f_r(p,\omega_o,\omega_i)=\frac{dL_r(p,\omega_o)}{dE_i(p,\omega_i)}=\frac{dL_r(p,\omega_o)}{L_i(p,\omega_i)(n,\omega_i)d\omega_i}$$


基于可见法线分布我们可以构造BRDF,为了描述微表面上的散射,我们还要引入一个micro-BRDF $\rho_M(\omega_o,\omega_i,\omega_m)$。


$$L(\omega_o,\omega_m)=\int_{\Omega_i}\frac{dL(\omega_o,\omega_m)}{d\omega_i}d\omega_i=\int_{\Omega_i}\rho_M(\omega_o,\omega_i,\omega_m)<\omega_i,\omega_m>L(\omega_i)d\omega_i$$


通过对方程:

$$L(\omega_o,M)=\int_\Omega L(\omega_o,\omega_m)D_{\omega_o}(\omega_m)d\omega_m$$

两端对incoming irradiance取微分(**注意到这个方程实际上是一个关于参数$\omega_o$的函数**):


$$1=\frac{d\int_\Omega L(\omega_o,\omega_m)D_{\omega_o}(\omega_m)d\omega_m}{dL(\omega_o,M)}$$

使用链式法则:

$$1=\frac{d\int_\Omega L(\omega_o,\omega_m)D_{\omega_o}(\omega_m)d\omega_m}{d\omega_o}\frac{d\omega_o}{dL(\omega_o,M)}$$


$$1=\frac{\int_\Omega dL(\omega_o,\omega_m)D_{\omega_o}(\omega_m)d\omega_m}{d\omega_o}\frac{d\omega_o}{dL(\omega_o,M)}$$


可以得到:




$$dL(\omega_o,M)=\int_\Omega dL(\omega_o,\omega_m)D_{\omega_o}(\omega_m)d\omega_m=L(\omega_i)d\omega_i\int_{\Omega}\rho_M(\omega_o,\omega_i,\omega_m)<\omega_i,\omega_m>D_{\omega_o}(\omega_m)d\omega_m$$


使用BRDF定义带入$dL(\omega_o,M)$以及带入$D_{\omega_o}(\omega_m)$得到:


$$\rho(\omega_o,\omega_i)=\frac{1}{|dot(\omega_g,\omega_o)||dot(\omega_g,\omega_i)|}\int_{\Omega}\rho_M(\omega_o,\omega_i,\omega_m)<\omega_o,\omega_m><\omega_i,\omega_m>G_1(\omega_o,\omega_i,\omega_m)D(\omega_m)d\omega_m$$


如果不考虑考虑菲涅尔,所以显然没有能量折射,吸收率考虑为0,于是考虑能量守恒,显然有入射光线经过多次散射传输,会全部射出,也就是说对于任意的出射立体角$\omega_o$会使得下列公式成立(The White Furnace Test):


$$\int_{\Omega}\rho(\omega_o,\omega_i)|\omega_g·\omega_i|d\omega_i=1$$


然而从之前的推到可以看出,我们并没有在微表面上考虑光线传输,我们推到的公式仅仅只考虑了一次表面散射事件。那些被多次反射的光线直接被occluded掉,这就是Shadowing,显然G1只考虑了Masking并没有考虑Shadowing(考虑一个光线被多重散射后本来是可以从出射方向出射的,如果不考虑Shadowing它也可以从另外的方向出射,一但考虑了Shadowing,这些光线将会完全不能从任何角度出射),于是我们将G1替换为G2,G2将考虑到shadowing,所以称为masking-shadowing函数,此时上述公式不被满足,变为了:


$$\int_{\Omega}\rho(\omega_o,\omega_i)|\omega_g·\omega_i|d\omega_i<1$$


一般的分析性BRDF都不会考虑多散射,所以实际上大多数BRDF都不会满足The White Furnace Test,所以我们一般并不会使用这个式子来检验一个BRDF的有效性,我们更倾向于将G2替换为G1在来确保这个公式,这也叫做The Weak White Furnace Test。


>注意:G1只和$\omega_o$与$\omega_m$有关系,而G2还显然与$\omega_i$有关联。


从而得到了微表面brdf为:


$$\rho(\omega_o,\omega_i)=\frac{1}{|dot(\omega_g,\omega_o)||dot(\omega_g,\omega_i)|}\int_{\Omega}\rho_M(\omega_o,\omega_i,\omega_m)<\omega_o,\omega_m><\omega_i,\omega_m>G_2(\omega_o,\omega_i,\omega_m)D(\omega_m)d\omega_m$$


下面将会使用上面这个公式构造出我们熟知的微表面BRDF.


Specular microfacets


假设微表面是理想镜面反射。可以使用一个delta函数写为(具体推到可以参考[2]):


>给出一个纯镜面brdf(cos分母来自渲染方程矫正)

> $$f_r(p,\omega_o,\omega_i)=F_r(\omega_o)\frac{\delta(\omega_i - R(\omega_o,n))}{|cos\theta_i|}$$

> 要注意,此brdf内包含狄拉克泛函,他只具有积分意义,所以需要考察delta函数的测度,此处测度是$\omega_i$,需要带入的方程积分测度是$\omega_m$,所以这里需要一个雅各比来变换变量.


$$\rho_M(\omega_o,\omega_i,\omega_m)=|\frac{\partial \omega_h}{\partial \omega_i}|\frac{F(\omega_o,\omega_h)\delta_{\omega_h}(\omega_m)}{|\omega_i·\omega_h|}$$


其中雅各比矩阵为$|\frac{\partial \omega_h}{\partial \omega_i}|=\frac{1}{4|\omega_i·\omega_h|^2}$,带入BRDF公式约分化简得到来自[2]中的熟悉的:


$$\rho(\omega_o,\omega_i)=\frac{F(\omega_o,\omega_h)G_2(\omega_o,\omega_i,\omega_h)D(\omega_h)}{4|\omega_g·\omega_o||\omega_g·\omega_i|}$$


## Diffuse microfacets


假设微表面就是一个常数:


$$\rho(\omega_o,\omega_i)=\frac{1}{\pi}$$


带入方程得到:


$$\rho(\omega_o,\omega_i)=\frac{1}{\pi}·\frac{1}{|dot(\omega_g,\omega_o)||dot(\omega_g,\omega_i)|}\int_{\Omega}<\omega_o,\omega_m><\omega_i,\omega_m>G_2(\omega_o,\omega_i,\omega_m)D(\omega_m)d\omega_m$$


此方程没有分析性解。我们所熟知的Oren Nayar是对解的一个拟合,其中D是一个spherical Gaussian,$G_2$是V-cavity masking-shadowing函数。


More(to be continued [1] 4)


Ref


[1] Heitz E. Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs[J]. Journal of Computer Graphics Techniques, 2014, 3.

[2] Walter B, Marschner S R, Li H, et al. Microfacet Models for Refraction through Rough Surfaces.[C]// Eurographics Symposium on Rendering Techniques, Grenoble, France. DBLP, 2007:195-206.


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值