1. 程式人生 > >Unity光照系統,GI,光線追蹤,LightMap,Enlighten,HDR等

Unity光照系統,GI,光線追蹤,LightMap,Enlighten,HDR等

       GI:全域性光照,指的是模擬光線是如何在場景中傳播的演算法。不僅會考慮直接光照的結果,還會計算光線被不同的物體表面反射產生的間接光照。

       Unity使用的是預計算實時全域性光照 : 實時(直接光照)+ 預計算(直接光照和間接光照)    模擬光照。(這裡的實時指的就是物體移動光照效果也會變化。)實時光照沒辦法模擬光線的多次反射的效果,所以加了預計算光照。預計算光照效果就既有直接光照,也有間接光照。原理:一旦物體和光源的位置固定,物體對光線的反彈路徑及漫反射光照也是固定的,因此可以預計算,把物體之間的這些關係計算出來。這樣在實時執行時,只要光源位置不變,這些關係資訊就一直有效,不需要實時更新。

       Unity Enlighten光照系統提供了兩種技術:烘焙GI 和 預計算實時GI。同時使用這兩種會有效能問題。

       烘焙GI: LightMap,即烘焙GI中的光照貼圖,表示靜態物體基於光的影響計算出的貼圖。把光源對場景中靜態物體的光照效果提前烘焙到一張光照紋理中,然後把光照紋理直接貼在物體表面。(有直接光照資訊,也有間接光照資訊)

       預計算實時GI:傳統的靜態光照貼圖無法在遊戲執行中改變場景光照條件,預計算是實時GI可以實時運算光源互動,實時的反應光源的變化。預計算主要也是為了在實時計算之前準備一些資料的計算,可以在時間空擋進行。Enlighten會在由所有靜態物體(Lightmap Static勾上)組成的場景中,進行簡化的光線追蹤。這個階段會自動把場景分為多個子系統,並且得到這些子系統之間的關係。對於動態物體,由於物體的高光反射是和相機的位置有關的,因此使用光照探針可以來模擬動態移動的物體的光照環境。

       實時計算階段:利用預計算得到的光照資訊(光照紋理,反射探頭,Cubemap)和物體的材質進行計算,得到最後的渲染效果。

      HDR:高動態範圍,用來定義相機擷取的最亮和最暗的顏色範圍。Unity使用低動態範圍,每個通道(RGB)使用8位表示。HDR遠高於8位的精度。