2020年3月30日 星期一

淺談 physically based rendering (4)


  • 前言

在上一個章節提到, 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。

(註1)(註2)

這個模型是由 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  遮蔽,稱之為 masking



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



這個 Geometry Attenuation Factor 是從物理學的分野 [7] 所引用而來,通常稱作 Smith Model,

在電腦圖學領域,通常會將  masking 和 shadowing 分別計算,

然後利用乘法作為結果的近似值。 這個作法稱作 Separable Masking and Shadowing 。



 G1 稱作 Smith Masking Function。

在 G實作上,通常會使用 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 並不完整。

下一個章節會討論如何實作間接光的計算。







[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



  • 附註
1. 在 Walter [6] 的論文裡,對 Specular BRDF 的定義為

    但在 Cook-Torrance [3] 的論文裡,對 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 的分母和外面的分子合併,

 可以減少計算數量。






沒有留言:

張貼留言