技術方案概要介紹
隨着計算機性能的提升和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可以有多張,分佈在場景的多個角落,且可以切換