- 前言
在上一個章節提到, physically based rendering 所帶來的最大的效果就是在於 Specuar 的
部分,本章節將簡單的介紹 Specuar BRDF 的內容。
就如同本系列的第一篇所言,這篇文章是希望能夠快速簡單的理解 physically based rendering
而不用去理解複雜的數學關係。因此,文章內我會審略很多數學的證明,犧牲了正確性和廣
泛性的分析。對於想要有更深入的理解的人建議可以去參考其他人的文章。
- Specuar BRDF
回顧 淺談 physically based rendering (2) 的內容,我們將焦點放在 Specular BRDF 的部分。
其中:
frs 是 Specular BRDF
Fθ 是與法線夾角θ的入射光的反射率
Li 是入射光
現在最被用來實作 frs 的演算法就是 Cook-Torrance Model。
這個模型是由 60 年代後半所提出的 Torrance-Sparrow Model [1],經過 Blinm [2]整理後,
才成了今天這樣的結果[3]。
現在大部分的 physically based rendering,都是使用 Cook-Torrance Model 來實作。
因此,本篇文章也以 Cook-Torrance Model 作為說明與實作的模型。
- Microfacet Model (微小面模型)
再繼續討論 Cook-Torrance Model 之前,要先說明什麼是 Microfacet 。
當我們拿顯微鏡放大物體表面,會根據物體的物理特性,
可能是個充滿坑洞而非一個平滑的表面。
這個被我們放大的表面就叫做 Microfacet ,
用來模擬 Microfacet 形狀的演算法就叫做 Microfacet Model。
Microfacet 和 Specular 有什麼關係?
當光射到一個平滑的平面時,
他的入射角就會等於反射角,光的能量就會集中。
反之,當光射到一個粗糙的表面時,
他的入射角就不一定等於反射角,光的能量就會被分散。
因此,物體表面的粗糙度會影響到 Specular 的結果。
回想上一章提到我會使用 metallic-roughness 作為 physically based rendering 架構。
這個架構就是使用 Roughness (粗糙度) 作為 Microfacet Model 的引數,
來模擬物體表面的形狀。
- Roughness
Roughness 的計算方式有很多種,
在這裡我採用發表在 Siggraph2012『 Physically Based Shading at Disney』的演講內容
所提到的作法。
該演講是提到將 Roughness 作為一個 [0,1] 之間的值,利用這個值來控制物體表面的粗糙度。
但在實際使用時,美術人員反映 Roughness 變化和反映的結果仍有落差,
因此,最後提出了這個方程式
由美術人員去控制這個 [0,1] 之間的 Roughness ,
實際上使用 α 去做 Microfacet Model 的計算。
為了區別兩個之間的參數。
美術人員控制的 Roughness 又叫做 perceptual roughness (直覺粗糙度)
實際運算的 α 又叫做 alpha roughness。
- Cook-Torrance Model
繞了一段路,終於回到了主題。
觀察 Cook-Torrance Model ,可以發現一些陌生的參數 D、G 和 F。
這三個參數分別代表
D : Microfacet Distribution Functions (微小面分布函式,簡稱 D-term)
G : Masking-Shadowing Functions (遮蔽-陰影函式,簡稱 G-term)
F : Fresnel (菲涅耳方程式,簡稱 F-term)
接下來會針對這三個參數做討論。
- Microfacet Distribution Functions
又稱做 Normal Distribution Functions 。
在 Lighting 計算上,法線是重要的項目,Microfacet 也是一樣。
Microfacet Distribution Functions 就是計算 Microfacet 上的法線分布。
目前有許多計算 Microfacet Distribution Functions 的演算法,
在 Cook-Torrance[3] 的論文裡,使用 Beckmann distribution[4],

但目前主流是以 GGX,
GGX 是由 Trowbridge, Retiz 在 1975年推導出 Distribution Functions [5],
之後再 Walter 的論文 [6] 將分布獨立並取名為 GGX。
因此,GGX 又被稱作 Trowbridge-Reitz model。
其中:
h : half-vector
α : alpha roughness
n : normal-vector

GGX 被廣泛使用的原因在於其可以用不是很昂貴的計算 Cost ,
將 Specular lobe 維持成相當長的尾巴型。

資料來源: Learn OpenGL


左:GGX,右:Normalized BlinnPhong
上面是 GGX 和 Unity 5.0 前使用的 Normalized BlinnPhong 的比較,
可以看得出 GGX 比起 Normalized BlinnPhong ,
中央的能量不會那麼快發散,且兩旁的收斂可以拉得很長。
- Masking-Shadowing Functions
又稱做 Geometry Attenuation Factor (幾何衰減項)。
是考慮到在 Microfacet 上,根據光源和眼睛的位置而發生的遮蔽現象。

當光線被 Microfacet 遮蔽,稱之為 shadowing

這個 Geometry Attenuation Factor 是從物理學的分野 [7] 所引用而來,通常稱作 Smith Model,
在電腦圖學領域,通常會將 masking 和 shadowing 分別計算,
然後利用乘法作為結果的近似值。 這個作法稱作 Separable Masking and Shadowing 。

G1 稱作 Smith Masking Function。
在 G1 實作上,通常會使用 Schlick 提出的演算法 [8] 去求得近似值。

α 為 alpha roughness。
- Fresnel
法國的物理學家 Augustin-Jean Fresnel 提出了光入射到介面時,反射和折射的關係式。
因此反射率又稱之為 Fresnel coefficients。
在這裡的F項是計算當和入射物體的法線夾角 為 θ 的反射率。
在上一章已經提到 Fθ 可用 Schlick's approximation 去求得。
在這裡也是使用 Schlick's approximation 。
只是回頭看看在本章節一開始提到的 Specular BRDF 的整個片段。

發現 Cook-Torrance Model 已經將 Fθ 包含進去,
因此使用 Cook-Torrance Model 作為 Specular BRDF 時,要記得不要重複計算 Fθ 。
- 總結
比照上一章,我同樣的用 Unity3D 寫了一個只針對直接光(太陽光)的
physically based rendering,
整合了上一章提到的 Diffuse BRDF 和 本章提到的 Specular BRDF。
到了這裡,已經初步的介紹並實作一個單一光源的 physically based rendering。
但是回頭看 淺談 physically based rendering (1) 所提到的 rendering equation
我忽略計算其他方向的光源,因此這個 shader 並不完整。
下一個章節會討論如何實作間接光的計算。
- References
[4] Petr Beckmann, André Spizzichino, The scattering of electromagnetic waves from rough surfaces, Pergamon Press, 1963, 503 pp (Republished by Artech House, 1987
[5] Trowbridge, T. S., and K. P. Reitz, "Average Irregularity Representation of a Roughened Surface for Ray Reflection," Journal of the Optical Society of America, vol. 65, no. 5, pp. 531-536, May 1975.
[6] Walter et al. 2007, "Microfacet Models for Refraction through Rough Surfaces"
[7] [SMITH, B. 1967] Geometrical shadowing of a random rough surface. IEEE Trans. on Antennas and Propagation 15, 668–671.
[8] Christophe Schlick, "An Inexpensive BRDF Model for Physically based Rendering", 1994
[5] Trowbridge, T. S., and K. P. Reitz, "Average Irregularity Representation of a Roughened Surface for Ray Reflection," Journal of the Optical Society of America, vol. 65, no. 5, pp. 531-536, May 1975.
[6] Walter et al. 2007, "Microfacet Models for Refraction through Rough Surfaces"
[7] [SMITH, B. 1967] Geometrical shadowing of a random rough surface. IEEE Trans. on Antennas and Propagation 15, 668–671.
[8] Christophe Schlick, "An Inexpensive BRDF Model for Physically based Rendering", 1994
- 附註
1. 在 Walter [6] 的論文裡,對 Specular BRDF 的定義為
兩者的差別只在於分母是除以 4 還是除以 π ,兩者在論文內都有敘述使用原因。
但因為 Walter 是延伸 Cook-Torrance Model,因此也被歸類成 Cook-Torrance Model。
由於 Walter 在發表模型時使用了 GGX 這個詞,
因此 Walter 的 BRDF 模型又被稱作 GGX BRDF。
至於要使用哪一個並沒有一定的答案,最好還是根據 D、G、F 項所引用的論文內容
來決定使用哪一個。
2.在某些論文,可能會發現 Cook-Torrance Model 使用以下的算式來表示

V 是把 G-term 和分母整合再一起,這個作用是可以減少計算。
我們觀察本章提到利用 Schlick's approximation 求得的 Geometry Attenuation Factor。

發現在 G-term 內使用到 n.l 和 n.v 作為分母,因此將 G-term 的分母和外面的分子合併,
可以減少計算數量。
我們觀察本章提到利用 Schlick's approximation 求得的 Geometry Attenuation Factor。

發現在 G-term 內使用到 n.l 和 n.v 作為分母,因此將 G-term 的分母和外面的分子合併,
可以減少計算數量。
沒有留言:
張貼留言