PBR技術簡介(二):Cook-Torrance BRDF


之前我們講到BRDF定義了入射光的能量到某個方向出射光的能量之比,是一種反映物體材質的重要屬性。在PBR技術中,常用的BRDF是Cook-Torrance模型,今天我們來對它進行講解。
Cook-Torrance BRDF包含了漫反射和高光兩個部分:

\(\LARGE{f_r=k_d f_{lambert} + k_s f_{cook-torrance}}\)

其中\(k_d\)\(k_s\)分別是上文提到過的漫反射和高光的比例,\(\large{k_d + k_s = 1.0}\)\(\large{f_{lambert}}\)是表達漫反射的brdf:

\(\LARGE{f_{lambert} = \frac{c}{\pi}}\)

其中c代表物體材質的顏色。
然而我們關注的重點還是高光的部分,\(\large{f_{cook-torrance}}\)的定義如下:

\(\LARGE{f_{cook-torrance}=\frac{DFG}{4(\omega_o \cdot n) (\omega_i \cdot n)}}\)

\(\omega_o\)\(\omega_i\)分別指出射和入射方向,\(n\)指的是物體的normal方向,D、F、G分別指法向分布函數(normal distribution function)、菲涅爾公式(fresnel equation)和幾何函數(geometry function)。下面我們將對它們三個進行講解。

法向分布函數

法向分布函數D模擬的是微面元朝向某個向量h的比例,一般用一個概率分布函數Trowbridge-Reitz GGX來模擬:

\(\large{NDF-GGXTR(n,h,\alpha)=\frac{{\alpha}^2}{\pi {( {(n \cdot h)}^2 ({\alpha}^2 - 1) + 1)}^2}}\)

h就是half向量,即v+l;α則是粗糙度。下圖展示了不同粗糙度下,同樣視角和光照的對比:

當粗糙度很低的時候,只有一小片區域的微面元的朝向和h保持高度一致,因此光照聚焦於一小塊地方;當粗糙度逐漸變高,則微面元朝向變得隨機,則顯得與h向量取向一致的微面元分布在一個大得多的半徑范圍內,但是同時較低的集中性也會讓我們的最終效果顯得更加灰暗。

幾何函數

幾何函數從統計學上近似的求得了微平面間相互遮蔽的比率,這種相互遮蔽會損耗光線的能量。如下圖所示:

定義:
\(\large{G_{SchlickGGX}(n,v,k) = \frac{n\cdot v}{(n\cdot v)(1-k)+k}}\)
其中k是根據直接光照還是間接光照來計算的,這個之后在實現時會進一步提及,α就是前面提到的粗糙度:
\(\large{k_{direct} = \frac{{\alpha + 1}^2}{8}}\)
\(\large{k_{IBL} = \frac{{\alpha}^2}{2}}\)

最終的幾何函數為:\(\large G(n,v,l,k) = G_{SchlickGGX} (n,v,k) G_{SchlickGGX} (n,l,k)\)

下圖展示了不同粗糙度下所影響的幾何函數的渲染效果:

可以看到,當粗糙度為0的時候,此時完全沒有微面元的陰影,隨着粗糙度變大,則整體也越來越暗。
第三項Fresnel的計算和定義我們下篇文章來講。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM