Unity5 之GI設定簡介

2021-09-07 14:08:24 字數 3566 閱讀 4031

gi

global illumination 全域性照明

indirect illumination 間接照明

模擬出光線追蹤的效果

實現方法:

1.ssao系列 

2.lightmap、輻射度

3.pbrt

實時gi:

lpv cryengine 《cascaded light propagation volumes for real-time indirect illumination》

svo ue4 《interactive indirect illumination using voxel cone tracing》 補充:ue4現在出來了,還是用的lpv,svo應該跑不了!

klayge中用到的:vpl msii rsm(reflective shadow map) 《multiresolution splatting for indirect illumination》

全域性光照的特點在於能夠捕捉間接光照,所以5以後,除開原來的direct light的效果,增加indirect light的效果,簡單來說,就是除開光源之後,然後模型本身做為光源,幅射到別的模型上,層層遞迴後的效果。現不管是預計算實時gi還是烘培gi都只是針對靜態模型。預計算gi的實時光源與烘陪對應的烘培光源裡的強度與反射強度都會影響幅射圖與方向圖的內容。需要注意,預計算gi針對的是實時方向光,而烘培gi針對的是烘培方向光。

skybox :天空盒,參考材質skybox/cubemap,如果全域性光源與全域性反射探頭都選擇skybox模式,則會把skybox當做乙個cubemap,場景所有模型,靜態與非靜態的一部分光源從這個cubemap反射上得到。

sun:skybox選擇乙個方向光,以這個方向光的方向做方向,這個方向光如顏色與強度不影響全域性本身,如果沒有設定方向光,選擇強度最大的那個方向光源。 

ambient source:全域性光源,如果設定天空盒,但是天空盒本身沒有設定,自動選擇下面的全域性顏色設定,全域性反射探頭以ambient source當做光源。

ambient intensity:全域性光源強度,越高越亮,為0時,光源不起作用。

ambient gi:當預計算gi與烘培gi二個都選擇後,這個可以選擇是用實時還是烘培。 

reflection source:unity預設放入的全域性反射探頭,選擇skybox會以ambient source裡提供的光源顏色做反射,同時也可以自己提供cubemap當做反射源。

resolution:反射探頭解析度,應該是對應rtt的cubemap六張紋理的解析度。

compression:是否壓縮。

reflection intensity:reflection source針對所有模型反射強度,值越大,相應的模型面上顯示越清晰的reflection source。

reflection bounces:當設定多個reflection probe時,互相反射對方資訊的次數,如二面鏡子。

precomputed realtime gi

預計算實時gi,針對實時靜態物體之間的幅射光,故相應的幅射圖與方向圖都是低解析度下的。動態物體可以使用光照探頭來得到相應反射光源資訊,注意動態模型與光探頭的距離。

realtime resolution:預計算實時gi,把場景分成許多格,得到每個格的幅射資訊。那麼這個值越高,計算量將以平方增加,最終值還將和general gi裡的光源引數裡的resolution相乘。

cpu usage:生成相應gi的資料時,在遊戲執行時分配多少cpu計算能力。 

baked gi

烘培gi,因此能得到更精確的模型之間的反射光資訊,但是不能執行時更改相應的光源資訊,如顏色,方向,預計算實時gi沒有這個問題。

baked resolution:一般來說,是realtime resolution 10+,因為相應的幅射圖與方向圖精確度要高很多。

baked padding:網上說是光照貼圖中分隔的距離,還需要驗證。

compressed:是否壓縮

ambient occlusion:值越高,遮擋地區得到的光比差越大。

final gather:用fg技術來產生烘培資料,這種技術時間會長一些。參考

ray count:final gather所用的光線追蹤光線數目。

atlas size:圖集裡貼圖的大小,越低實際占用越精確也就是越小,但是貼圖產生越多,應該選擇乙個合適的大小。   

general gi

預計算實時gi還是烘培如何生成.

direction mode:幅射圖/帶方向光/加鏡面,具體看shader分析,其中預計算實時gi與烘培gi在這生成的相應幅射圖,方向圖等有所不同,後面會提到。

indirect intensity:間接光的強度。

default parameters:生成相應貼圖所需要的資訊。

其中全域性預計算gi,烘培gi,全域性反射探頭相應的改動需要重新烘培,如果選擇自動,相關改動會自動在後台烘培。

上面這些說實話,寫這麼操作沒啥用,自己對著每項實踐一篇,什麼都清楚了。 

對於gi來說,不管是預計算gi與烘培gi,都不會對非靜態模型計算間接反射,光探頭的加入,可以使非靜態模型得到周圍靜態模型的幅射光,主要技術原理使用一種球諧光照的技術,注意light probe一般不會對靜態模型有影響,你看到的影響,只是因為非靜態模型的顏色變化大造成的反差。

球諧光照(上) 

一種2d傅利葉級數的球形推廣,可以把光照函式展開成sh基函式的疊加,類似傅利葉變換能把任何函式展開成正弦波的疊加,對光照圖來說一般只用2 bands = 4 rgb textures,通過丟失高頻細節來壓縮儲存。  

定義乙個cubemap用來影響周圍模型的鏡面反射,給鏡面高光模型使用。

一般來說,我們想得到乙個實時場景的cubemap,只需要在乙個點,用攝像機對著前後,左右,上下,各拍攝一次,形成6個面,組合成cubemap.

type:烘培,使用者,自動。其中,烘培就是使用者來控制生成乙個當前的場景cubemap,使用者就是使用者自己提供乙個cubemap,實時就是不斷更新這個cubemap以對映最新的場景。

當選擇實時,refresh mode:on  awake啟動時,每楨,使用者指令碼控制,當每楨時,如下選擇。

time slicing:一楨先生成6個面,後面8楨每楨生成乙個mipmap,一共9楨。

individual face:6面6楨,加後面8楨每個mipmap,一共14楨。

no time slicing:一楨內把mipmap與cubemap全部生成。

importance:當多個反射探頭影響乙個模型時,這個引數影響這個反射探頭的比重。

intensity:間接光強度,強度影響鏡面反射,鏡面反射越亮。

box projection:從著色**來看,應該根據當前反射探頭的源點與aabb影響是模型原來法線。

size:大小,範圍內的模型使用這個。

probe origin:原點。

cubemap capture sttings:

resolution:cubempa材質的大小。

hdr:高光。

shadow distance:陰影距離,數值越少,陰影越近。

下面就是rtt對應攝像機的屬性。

Unity5 新功能解析 GI 全域性光

面積光的光源有形狀,是乙個矩形區域,有位置,有方向,方向是超矩形的一面,矩形的背面沒有光,並且隨距離衰減直到沒有。它用於模擬大量的光源和在一起的效果,如街道,但是因為計算複雜,所以只用於烘焙 構成 可實時更新的lightmap 可實時更新的光照探頭 light probe 可實時更新的cubemap...

Unity5 新功能解析 GI 全域性光

構成 可實時更新的lightmap 可實時更新的光照探頭 light probe 可實時更新的cubemap reflection probe 實時全域性光只實時計算物體之間的bounce light 物體之間來回反射的光 實時全域性光的實現 靜態物體之間的bounce light可以在預先計算階段...

Unity5自動命名Assetbundle並打包

using unityengine using system.collections using unityeditor using system.io 把resource下的資源打包成.unity3d 到streamingassets目錄下 public class builder editor ...