PBR Step by Step(四)Lambertian反射模型

光照可分爲局部光照全局光照性能

局部光照:直接照射到物體表面的光照spa

全局光照:物體表面受周圍環境影響的光照blog

左圖中點x接收到周圍環境的光線照射,來自周圍表面的反射光照稱爲全局光照;右圖中點x接收來自太陽光的直接照射,來自太陽發射的直接光照稱爲局部光照。渲染

 

在現實環境中,全局光照的狀況更爲複雜,例如:反射

  • 半透明表面(Semi-transparent surfaces):光線能夠穿過表面進行復雜的交互,如玻璃棱鏡,能夠改變光的波長;
  • 次表面散射(Sub-Surface Scattering):光線能夠穿過子表面,在同一表面的不一樣方向反射,如皮膚;
  • 表面滲色(Surface bleeding):光線穿過表面,在介質中改變顏色到目標表面。

其餘例子還有不少,全局光照會比局部光照效果更佳柔和天然,但考慮到其複雜性,應用到實時渲染中也是有必定難度的。im

咱們在前幾篇中經過理論獲得的BRDF光照模型公式實際爲局部光照模型中,還欠缺了全局光照因素。img

下面,咱們來研究一下BRDF的局部反射模型,先來看下最簡單的Lambertian反射模型。di

Lambertian反射模型

Lambertian反射稱做徹底漫反射。這是一種理想狀況,現實中不存在徹底漫反射,但Lambertian能夠用來近似的模擬一些粗糙表面的效果,好比紙張。co

對於Lambertian表面,入射方向與出射方向無關\({\omega_i}\)與\({\omega_o}\)無關,\({L_o(p, \omega_o)}\)能夠表示爲\({L_o(p, \omega_o)} = {L_r(p)}\)。background

在上一篇中,咱們知道反射輻射度的方程爲:

\({L_o(p,\omega_o)} = \int_{\Omega_i}{f_r(p, \omega_i, \omega_o)}\, {L_i(p, \omega_i)}\, {\cos \theta_i}\, {d\omega_i}\)

在Lambertian反射模型中,因爲\({\omega_i}\)與\({\omega_o}\)無關,BRDF項\({f_r(p, \omega_i, \omega_o)} = {f_r(p)}\),上式可表示爲:

\({L_r(p)} = {f_r(p)\int_{\Omega_i}L_i(p, \omega_i)\, \cos \theta_i \, d\omega_i} = {f_r(p)\, E_i(p)}\)

\(\Rightarrow {f_r(p)} = \frac{L_r(p)}{E_i(p)}\)

在上一篇的反射率中,\({\Omega_o}\)內的反射通量\({d\Phi_o} = {dA\int_{\Omega_o}L_o(p,\omega_o) \, \cos \theta_o \, d\omega_o}\)

在整個Lambertian表面半球積分(\({\Omega_o} = {2\pi}\))中:

\({d\Phi_o} = {dAL_r(p)\int_{2\pi}\cos \theta_o \, d\omega_o} = {dA \, L_r(p) \, \pi}\)

式中的\({\int_{2\pi}\cos \theta_o \, d\omega_o} = {\pi}\),這是一個半球積分,在第一篇中咱們推出過該結果。

\({d\Phi_i} = {dA\int_{2\pi} L_i(p, \omega_i) \, \cos \theta_i \, d\omega_i} = {dA \, E_i(p)}\)

反射率\({\rho_d(p)} = \frac{d\phi_o}{d\phi_i} = \frac{L_r(p) \, \pi}{E_i(p)} = {f_r(p) \, \pi}\)

這樣,咱們就獲得了Lambertain BRDF:\({f_r(p)} = \frac{\rho_d(p)}{\pi}\)

其中\({\rho_d}\)能夠用常數項表示:\({\rho_d} = {k_d \, c_d}\),\({k_d \in [0, 1]}\),表示漫反射係數;\({c_d}\)表示漫反射顏色。

Lambertain BRDF又可寫爲\({f_r(p)} = \frac{k_d \, c_d}{\pi}\)

 

咱們一般在實時渲染出於性能方面的考慮,會省略掉\(\pi\),咱們熟知的漫反射顏色計算公式,就是從反射輻射度方程中簡化而來的:

反射輻射度方程:\({L_o(p,\omega_o)} = {f_r(p, \omega_i, \omega_o)}\int_{\Omega_i}{L_i(p, \omega_i)}\, {\cos \theta_i}\, {d\omega_i}\)

漫反射着色公式:\({L_r} = {k_d \, c_d} {\sum_{1}^{n}  \, L_i \, (n * l)} \)

對比看一下,是否是很像?\(\sum_{1}^{n}\)表示逐個光源求和近似積分,\({L_i}\)表示光源強度,\({n * l}\)表示\({\cos \theta_i}\)項

相關文章
相關標籤/搜索