這讓最後的光照效果變成:GGX具有更亮的高光部分並在周圍蔓延著光暈,給人以更加真實的視覺效果。
如下圖所示:
GGX與傳統的標準化Phong光照對比
跨行業也能相容的材質
在學術界基於物理的BRDF光照模型一般用roughness(粗糙度)這個參數來控制微平面分佈函數,而roughness被定義為分佈函數的均方根斜率。
一個常見的誤解是認為在CG中使用的粗糙度貼圖和學術上所說的roughness是一回事。之所以學術上的roughness沒被用在紋理貼圖或者是使用滑塊控制是因為它的“粗糙度”並不是均勻分佈的,導致難以操作,並且紋理貼圖的有限位精度難以達到比較好的效果。
為了避免誤解,Unity使用smoothness(平滑度)而不用roughness這個字眼,smoothness在shader中會使用公式(1-smoothness)^2來轉換為學術上的roughness參數。通過這個轉化,我們得到的結果和roughness一樣,只是剛好顛倒了一下,也就是說0.0對應於最粗糙的表面而1.0對應於最光滑的表面。
一個常見的誤解是認為在CG中使用的粗糙度貼圖和學術上所說的roughness是一回事。之所以學術上的roughness沒被用在紋理貼圖或者是使用滑塊控制是因為它的“粗糙度”並不是均勻分佈的,導致難以操作,並且紋理貼圖的有限位精度難以達到比較好的效果。
為了避免誤解,Unity使用smoothness(平滑度)而不用roughness這個字眼,smoothness在shader中會使用公式(1-smoothness)^2來轉換為學術上的roughness參數。通過這個轉化,我們得到的結果和roughness一樣,只是剛好顛倒了一下,也就是說0.0對應於最粗糙的表面而1.0對應於最光滑的表面。
我們認為這樣的對應方式給人的感覺更為直覺。這樣一個標準化的分佈方式最大的意義在於我們可以在Unity中導入其它外部工具製作的材質,並在Unity中實現非常接近的效果。
因為如今業界大部分的CG繪製工具都支持smoothness貼圖。不過光是這樣並不能保證可以達到一模一樣的效果,但是可以肯定的是,漫反射光與高光的比例以及整體的高光模糊度都會是非常接近的。
下圖是由Allegorithmic公司的Wes McDermott提供的Unity 5與Substance Painter的效果對比圖。從圖中我們可以看到兩者的視覺效果是非常相似的。
Unity 5.4中的改進
在Unity 5.4中我們將以改進方體貼圖計算速度與基於圖像光照的計算(IBL)達到一個無噪點的視覺效果。
如下圖所展示在Unity 5.4中一個球體的光照計算與傳統的光跡追蹤法的效果比較。
傳統的光跡追蹤法即使每個圖素執行了50000次的光追蹤,最終的光照還是帶有大量的噪點。追根究柢,光跡追蹤法在進行BRDF採樣時,對於環境貼圖中類似太陽這樣的奇點(Singularities)有著天生缺陷。這問題已在Unity 5.4版本中已經得到解決,並且方體貼圖的離線計算比Unity 5.2快了將近兩倍的速度。