Radiance vs Irradiance 辐射/亮度 vs 辐照度

alt text

  • Irradiance 辐照度: 单位面积上接收到的辐射功率
  • Radiance 辐射/亮度: 在dωd\omega立体角方向上,单位面积上接收到的辐射功率

沿着某个方向ω\omega入射到点pp上的辐射亮度为Li(p,ω)L_i(p, \omega),则该点在该方向ω\omega上单位面积上接收到的辐照度为dE(p)d E(p)

dE(p,ω)=Li(p,ω)cosθdωd E(p, \omega) = L_i(p, \omega) \cdot \cos \theta \cdot d\omega \\

则在所有方向上入射到点pp上的辐照度为:

E(p)=H2Li(p,ω)cosθdωE(p) = \int_{H^2} L_i(p, \omega) \cdot \cos \theta \cdot d\omega

BRDF 双向反射分布函数(Bidirectional Reflectance Distribution Function)

BRDF 描述了从某个方向入射到一个点上的光线的能量会怎么反射,在不同的反射方向上分布多少能量。

反射的理解:光线打到物体的某个位置上,吸收了能量,然后再发出一些能量出去。

alt text

ωi\omega_i方向入射的光线,打到了 P 点上,P 点有效单位面积上接收到的辐射功率(即辐照度 Irradiance)为:

dE(ωi)=L(ωi)cosθidωid E(\omega_i) = L(\omega_i) \cdot \cos \theta_i \cdot d\omega_i

之后这部分被接收的能量会被 P 点吸收一部分,然后再沿着不同的方向反射出去。其中,沿着ωr\omega_r方向反射出去的辐射亮度(Radiance)为:

dLr(ωr)d L_r(\omega_r)

BRDF 定义

Bidirectional Reflectance Distribution Function (BRDF)
表达了对于每个入射光线方向ωi\omega_i,如何分配反射的比例到各个出射方向ωr\omega_r

fr(ωiωr)=dLr(ωr)dE(ωi)=dLr(ωr)L(ωi)cosθidωif_r(\omega_i \rightarrow \omega_r) = \frac{d L_r(\omega_r)}{d E(\omega_i)} = \frac{d L_r(\omega_r)}{L(\omega_i) \cdot \cos \theta_i \cdot d\omega_i}

BRDF 的单位是 1sr\frac{1}{sr}

通过 BRDF 可以统一漫反射和镜面反射,区别只是在不同方向上分配的比例不同。

BRDF 定义了物体不同的材质。

反射方程 Reflection Equation

alt text

针对某个着色点pp,对所有入射方向上的光线进行积分,得到该点沿着某个出射方向ωr\omega_r的反射亮度:

Lr(p,ωr)=H2fr(p,ωiωr)Li(p,ωi)cosθidωiL_r(p, \omega_r) = \int_{H^2} f_r(p, \omega_i \rightarrow \omega_r) \cdot L_i(p, \omega_i) \cdot \cos \theta_i \cdot d\omega_i

其中:

  • Lr(p,ωr)L_r(p, \omega_r):点pp沿着方向ωr\omega_r的反射亮度
  • fr(p,ωiωr)f_r(p, \omega_i \rightarrow \omega_r):点pp的 BRDF
  • Li(p,ωi)L_i(p, \omega_i):点pp沿着方向ωi\omega_i的入射亮度
  • cosθi\cos \theta_i:入射方向与法线的夹角余弦
  • dωid\omega_i:入射方向的立体角微分

alt text

挑战:入射光不止来自光源,还可能来自其他物体的反射光,这将会导致递归,计算量巨大

渲染方程 Rendering Equation

alt text

渲染方程是在反射方程的基础上,加入了自发光项Le(p,ωo)L_e(p, \omega_o),表示点pp沿着方向ωo\omega_o自发光的亮度,就可以得到渲染方程:

Lo(p,ωo)=Le(p,ωo)+Ωfr(p,ωiωo)Li(p,ωi)(nωi)dωiL_o(p, \omega_o) = L_e(p, \omega_o) + \int_{\Omega} f_r(p, \omega_i \rightarrow \omega_o) \cdot L_i(p, \omega_i) \cdot (n \cdot \omega_i) \cdot d\omega_i

PS: 这里假设了所有的方向都是朝向点向外的方向,即使入射光是向内发射,也要把它反过来,变成向外的方向。

  • H2H^2, Ω\Omega 都表示半球面

这个方程来自 Kajiya 在 1986 年提出的论文 “The Rendering Equation”。论文链接 论文标题很短(通常来说名字越短,事情越大)。渲染方程基本上是现代计算机图形学的基础。

渲染方程的理解

对于一个点光源

alt text

对于单个点光源时,在着色点xx上沿着rr方向反射光线的亮度为:

Lr(x,ωr)=Le(x,ωr)+Li(x,ωi)f(x,ωi,ωr)(ωin)L_r(x, \omega_r) = L_e(x, \omega_r) + L_i(x, \omega_i) \cdot f(x, \omega_i, \omega_r) \cdot (\omega_i \cdot n)

其中:

  • Lr(x,ωr)L_r(x, \omega_r):点xx沿着方向ωr\omega_r的反射亮度
  • Le(x,ωr)L_e(x, \omega_r):点xx沿着方向ωr\omega_r的自发光亮度
  • Li(x,ωi)L_i(x, \omega_i):来自点光源的入射亮度
  • f(x,ωi,ωr)f(x, \omega_i, \omega_r):点xx的 BRDF
  • ωin\omega_i \cdot n:入射方向与法线的夹角余弦

对于多个点光源

alt text

对于多个点光源时,在着色点xx上沿着rr方向反射光线的亮度是所有点光源贡献的总和:

Lr(x,ωr)=Le(x,ωr)+Li(x,ωi)f(x,ωi,ωr)(ωin)L_r(x, \omega_r) = L_e(x, \omega_r) + \sum L_i(x, \omega_i) \cdot f(x, \omega_i, \omega_r) \cdot (\omega_i \cdot n)

对于面积光源

alt text

面光源可以看作是由无数个点光源组成的。

故求和变成积分:

Lr(x,ωr)=Le(x,ωr)+Li(x,ωi)f(x,ωi,ωr)(ωin)dωiL_r(x, \omega_r) = L_e(x, \omega_r) + \int L_i(x, \omega_i) \cdot f(x, \omega_i, \omega_r) \cdot (\omega_i \cdot n) d\omega_i

考虑其他物体反射的光线

alt text

Lr(x,ωr)=Le(x,ωr)+ΩLr(x,ωi)f(x,ωi,ωr)cosθidωiL_{r}\left(x, \omega_{r}\right)=L_{e}\left(x, \omega_{r}\right)+\int_{\Omega} L_{r}\left(x^{\prime},-\omega_{i}\right) f\left(x, \omega_{i}, \omega_{r}\right) \cos \theta_{i} d \omega_{i}

这个方程是 Fredholm Integral Equation of second kind [extensively studied numerically] with canonical form, 第二类弗雷德霍姆积分方程可以简化成如下形式:

I(u)=θ(u)+l(v)K(u,v)dvI(u)=\theta(u)+\int l(v)K(u,v)dv

通过算子形式可以写成:

L=E+KLL = E + K L

经过数学变换可以得到:

alt text

L=(IK)1E=E+KE+K2E+K3E+L = (I - K)^{-1} E = E + K E + K^2 E + K^3 E + \ldots

alt text

其中:

  • EE表示自发光项
  • KEK E表示直接光照
  • K2EK^2 E表示间接光照
  • K3EK^3 E表示二次间接光照
  • 以此类推…

alt text

对于光栅化的着色过程,相当于是只有直接光照。如果要考虑间接光照,使用光栅化的方式会很困难,而光线追踪可以很自然地处理间接光照。

全局光照

直接光照和间接光照的总和称为全局光照(Global Illumination, GI)。

alt text

如图为直接光照,光沿直线传播,光线无法到达被其他物体遮挡的区域,故该区域为黑色。

alt text

加入一次间接光照后,光线可以经过物体的反射到达被遮挡的区域,故该区域不再是黑色。

alt text

加入二次间接光照后,光线可以经过多次反射到达被遮挡的区域,故该区域变得更亮。

alt text

加入四次间接光照后,光线可以经过更多次反射到达被遮挡的区域,故该区域变得更亮。

PS: 在四次弹射后,中间上方的玻璃开始发亮,是因为光线至少要经过两次弹射进入玻璃,再经过两次弹射才能出玻璃被摄像机接收。

alt text

加入更多次,渲染结果将会收敛到一个稳定的结果,而不会无限变亮。实际上是 BRDF 会满足能量守恒。

概率论

TODO