參考
[2018年4月25號] 使用Unity機器學習代理工具快速掌握強化學習:https://v.qq.com/x/page/l0672d8nwuk.html
Realtime GI介紹
Bake GI, Progressive Lightmapper,Light Probes Reflection介紹
Mixed GI Bake indirect,ShadowMask,Subtractive介紹
沒有光線烘焙的場景,只有直接光照和環境光,場景偏暗
光線烘焙的場景,有直接光照和間接光,場景明亮且真實
unity中的光照系統
在Unity中,光照的計算中有兩部分,一是直接光照,二是間接光照。
燈光有三種模式,分別是Realtime,Baked,Mixed。
物體分爲兩種模式Lightmap Static和Lightmap NonStatic。
直接光照,間接光照
直接光是成光線經過物體一次放射進入攝像機,而間接光是光源經過多次放射進入攝像機的效果。不做處理的情況下,unity場景中只有直接光照。但是間接光照使場景看起來真實,因爲沒有光線直接到達的地方也會被不同程度的照亮,就像真實的世界裏的規則。
你會覺得有時候沒有開啓GI,物體背光面也會被照亮,那是因爲開啓了環境光,環境光會照亮所有面,當你關閉環境光會發現背光面是純黑的。
靜態物體,動態物體
對於物體,只有Lightmap static的物體參與光線烘焙,參與烘焙我們下稱爲靜態物體,反之稱爲動態物體,動態物體想分享烘焙光的話,需要藉助光探針。
燈光三種模式Realtime,Baked,Mixed區別
Realtime GI:使用Enlighten提前計算(非實時)多個表面之間的光路,所有可以提供實時的間接光。、
特點:Realtime光和Mixed光和靜態物體的參與光照烘焙,烘焙結束後,直接光和間接光都會實時計算。
Bake GI:直接和間接光照以及陰影都被烘焙在一張額外的貼圖上,場景中不會再實時計算光照。
特點:Baked光和Mixed光和靜態物體的參與光照烘焙,烘焙結束後,場景中直接光和間接光都讀貼圖。
Mixed GI:保留直接光照的計算,間接光照被烘焙。
特點:所有光和和靜態物體的參與光照烘焙,烘焙後直接光實時計算,而間接光讀貼圖。
重要參數
RealtimeGI的參數不能單個修改,所有參數在Lightmap Parameter中設置High,medium,low
下面是BakeGI的重要參數解釋
Indirect Sample:每個像素點進行間接光采樣的次數。
Lightmap resolution每個單位(一般是每米)的分辨率,越大效果越好。
當一個1米見方的cube,Indirect Sample設爲10,Lightmap resolution設爲4。1m對應4個像素,一個一平方米的UV對應16個像素,一個正方體6個面,則有6*16=96個像素,每個像素10詞采樣,則要96*10=960次採樣。
Bounces:光線反彈的次數,每增加1,計算時間都會顯著增加,最高爲4.
LightMapPadding:光照貼圖中不同面的間距。
Direction Mode選擇方向性會增加額外的貼圖,但是如果選擇非方向性,當你轉動已經完成光照貼圖烘焙的物體是,光照會出錯。
Filter:對噪點進行平滑度的處理,同時對物體連接處的陰影進行校正。
Filter Advance 兩種模式
Gaussian(用過PS的都知道高斯模糊)陰影邊緣柔和
Trous陰影邊緣會變硬,同時對物體連接處的陰影進行校正。
Progressive向比較Elighten的優勢:1.優先烘焙Scene中看見的區域2.可以一邊烘焙一邊看效果,可以暫停,可以強制結束。
參數的意義
值得注意的是,realtimeGI的UVchart大小不能單獨修改,但是BakeGI的UVchart大小可以修改,你甚至可以修改不同的物體對應的UVChart的大小,數值越大,上邊的光照貼圖的紋理約精細。
UV Overlap的問題處理
就是在Unity生成光照貼圖UV的時候,UV之間的間距過於接近,造成不同物體的UV共用了同一個像素點造成的錯誤。
解決:調整GenerateUV的間距。
模型ImportSetting中,GenerateUV-Advance-Pack Margin調大。
但是UV間距增加,每張圖的UV容量會變少,可能導致貼圖數量增加,從而導致內存增加。
光照貼圖的接縫
同一個物體上的UV展開,有接縫,導致最後的效果,同一個物體上有一條明顯的光照分界線。
解決:MeshRender中,勾選Stitch Seams。
光照探針
光照探針,對場景中個別的點接受的直接光照和間接光照進行記錄,形成空間陣列,當物體出於陣列中間時,物體表面的光照數據,會根據它周圍的光照探頭,進行差值(或者某種算法)計算。
通常來講,接受光照探頭的物體,不應該大於八個光探針規定的正方體區域,當單個物體較大的時候,超過了區域的時候,上面的效果會失真,這時候需要使用Light probe Proxy Volume,可以爲大型的動態物體提供預先計算的光照信息。
放射探針的使用
場景中某個點的視覺環境可以用Cubemap表示,用於着色器採樣,實現反射效果;
放射探針都由在一個規定的範圍,該範圍內的所有物體的放射信息都由該探針記錄,當場景中有很多金屬物品時候要注意使用放射探頭,因爲金屬對放射敏感。
Mixed GI保留直接光照的信息(可以變動),間接光照烘焙(固定不變)。
例子燈光小幅度的搖晃,對於全局的間接光照影響不大,但是直接光照的變動還是明顯的。
Mixed的三種模式
Bake Indirect:只烘焙間接光照,直接光和陰影實時計算
Shadow Mask:對於靜態物體,陰影會被烘焙到shadowmask貼圖,沒有實時陰影的效果。
Subtractive:對於靜態物體,直接和間接光照都烘焙到貼圖上。對於動態物體,高光動態,而且可以在靜態物體上投射主方向光陰影。