基於物理的光照模型實現

技術方案概要介紹

隨着計算機性能的提升和3D技術的發展,現代3D遊戲不斷追求對現實世界的真實模擬。在這種背景下,原來被廣泛使用的blinn-phong光照模型由於其模擬度不夠,已經不適應新一代遊戲的需要。

採用新的基於物理的光照模型,可以更好的模擬高光反射,大幅提升畫面質量

  

技術方案

光照模型使用了微表面BRDF,環境高光的大量採樣使用預處理並儲存在一張cubemap多層mipmap中來模擬

我們知道,計算高光光照的基本公式如下:

其中,關鍵部分是雙向反射分佈函數(BRDF)。根據微表面BRDF的理論,其BRDF表示爲:

其中F爲費涅耳係數,G是幾何遮蔽函數,D是法線分佈函數。

在本次的實現中,對費涅耳係數的模擬我們採用Schlick公式;幾何遮蔽函數使用Schlick修改過的Smith模型;法線分佈函數使用GGX。

 

以上是單條入射光的計算方式,爲了計算所有方向的入射光,需要對入射半球做蒙特卡洛積分。

由於需要的採樣數過多,不可能採用實時採樣的方式,所以需要做數據的預處理。爲了做到這一步,第一步是

這裏把光照剝離出來,把環境光照根據GGX的分佈函數採樣之後,再按照roughness從0~1儲存到一張cubemap的mipmap中。

對於第二個部分,通過分析,可以把BRDF分割成兩個部分:

因此我們可以考慮將這兩個部分預先計算,放到一張貼圖裏,使用cos(v,h),roughness作爲橫縱座標。預計算結果如下:

最後使用的時候,只要把cubemap和這張貼圖結合使用,即可得到環境高光的結果。

3、創新點說明(從技術角度論述方案的創新之處)

修改了光照模型,使渲染效果更佳。使用cubemap來儲存多次採樣預處理結果,在實際使用中一次採樣即可得到很好的結果,消耗非常小。
具體效果如下:

使用原始的phong光照模型

使用新的光照模型,無環境高光

新光照模型,且應用環境高光:



收益評估

以相當小的代價換取次世代的畫面效果,使遊戲對玩家的吸引度大大提升
 

改進計劃

cubemap可以有多張,分佈在場景的多個角落,且可以切換

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章