计算机图形学(六):反射方程与渲染方程

计算机图形学(六):反射方程与渲染方程

双向反射分布函数($BRDF$)

描述

$BRDF$全称$Bidirectional\;Reflectance\;Distribution\;Function$。$BRDF$是描述了物体表面对能量反射分布特性的函数。假设物体表面单位面积$dA$接收到来自$W_i$方向光线的能量,用$E$来表示,这些能量$E$到达物体表面后,会向各个不同的方向反射(每个方向反射的能量不同),$BRDF$函数就是描述这束能量向特定方向$W_r$的反射占比。

BRDF

  • Differential irradiance incoming:$dE(w_i) = L(w_i)\cos\theta_i{d}w_i$
  • Differential intensity exiting: $dL_r(w_r)$

正式定义

单位面积$dA$从单位立体角$w_i$接收到的$irradiance$,会被如何反射到各个不同的方向上去。更通俗点来说就是BRDF描述的是单位面积接收单位立体角$w_i$的能量的反射分布(比例)。反射比例依赖于出射方向($w_r$)。$BRDF$描述了光与物体表面是如何相互作用的。即物体的材质属性由$BRDF$定义。

BRDF

$f_r(w_i -> w_r) = \dfrac{dL_r(w_r)}{dE_i(w_i)} = \dfrac{dl_r(w_r)}{L_i(w_i)\cos\theta_i{d}w_i}$

反射方程($The\;Reflection\;Equation$)

$BRDF$告诉了我们特定入射方向光线对特定出射方向的能量反射比例。而当观察物体表面的某一点时,该点反射的能量汇聚了各个方向的入射光线。对于每一条光线,都可以通过$BRDF$计算出其特定出射角度的反射比例。因此某一点特定出射方向的反射能量等于该点各个入射方向$BRDF$的半球积分。这就是反射方程。

BRDF

$L_r(p, w_r) = \int_{H^2}f_r(p, w_i -> w_r)L_i(p, w_i)\cos\theta_i{d}w_i$

递归性

假设观察某一着色点,需要考虑到达该着色点的各个光线,这些光线有些是直接来自于光照的,有些是来自于其他物体的反射。也就是说着色点接收来自各个方向的光线经过$BRDF$计算求和形成$Radiance$,而出射的$Radiance$又可以照亮其它物体,成为照亮其它某个着色点各个不同入射方向$Radiance$的某一部分。这样就形成了递归。

BRDF

渲染方程(The Rendering Equation)

反射方程告诉了某一点特定出射方向的反射能量等于该点各个入射方向$BRDF$的半球积分。但是反射方程没有考虑物体自身的发光情况。而物体的自发光也是需要参与到计算中的,完善反射方程,加上自发光项就得到了渲染方程:

渲染方程 = 自发光项 + 反射方程

$L_o(p, w_o) = L_e(p, w_o) + \int_{H^2}L_i(p, w_i)f_r(p, w_i -> w_o)(\hat{n}\cdot{w_i})dw_i$

抽象渲染方程

$L_o(p, w_o) = L_e(p, w_o) + \int_{H^2}L_i(p, w_i)f_r(p, w_i -> w_o)(\hat{n}\cdot{w_i})dw_i$

->

$L(u) = e(u) + \int{L(v)}K(u,v)dv$

->

将积分省略,抽象为算子的形式($K$)

$L = E + KL$

->

$IL-KL = E$

$(I-K)L = E$

$L = (I-K)^{-1}E$

$L = (I +K+K^2+K^3+…)E$

$L = E + KE + K^2E + K^3E+…$

BRDF

通过将方程用K算符简化,我们将渲染方程拆解成了自发光项,直接光照,间接光照。所有这些因子共同构成了全局光照。

参考

GAMES101 -现代计算机图形学入门-闫令琪

《3D数学基础》图形和游戏开发(第二版)