Unity HDRP中的光照烘焙測試(Mixed Lighing )和間接光

 部分內容摘抄自:https://www.cnblogs.com/murongxiaopifu/p/8553367.html

直接光和間接光

大家都知道在Unity中,我們可以在場景中佈置方向光、點光、聚光等類型的光源。但如果只有這些光,則場景內只會受到直接光的影響,而所謂的直接光簡單理解就是從光源發出的直接影響物體的光。如果只考慮直接光的影響,則會缺乏很多光影細節,導致視覺效果很“平”。而間接光則描述了光子在物體表面之間的反彈,能夠用來增加細節以及真實感。

Local_illumination.JPG


例如上圖中,位於天花板燈直射光線之外的區域缺乏光照效果。表現爲四壁上沒有明暗細節,相反此時直接光範圍之外都是均勻的黑色,而整個空間同樣也顯得十分平。

Global_illumination.JPG


而增加了間接光之後進行渲染,可以看到光被物體表面反彈,彩色光從一個表面轉移到另一個表面。表現爲紅色牆壁和綠色牆壁(在右側和紅牆相對,沒在畫面內)的顏色反映到了場景中的其他表面上,四壁也不再是均勻的黑色,而有了層次感。

混合光照

使用混合光照和直接使用烘焙的lightmap有什麼區別呢?簡單來說,選擇“混合”烘焙模式,會將標記爲靜態的GameObject受到的來自混合光源的光照信息保存爲Lightmap。 然而,與標記爲“烘焙”的燈光不同,混合光源也會爲場景中的非靜態(動態)GameObject提供實時的直接光照。

Unity HDRP中的測試

首先打開window - rendering - lighting setting ,可以看到Mixed Lighting 選項卡。

一 無Baked Global illumination

如果我們對Baked Global illumination不勾選,則會提示,場景中的Baked光源和Mixed的光源會被默認改成Realtime的實時光。 

 場景中Baked模式的光源,提示已被改爲Realtime模式。

1.光照

黃色的光源爲Baked模式,左側球體爲static,右側球體爲動態物體,此時可以發現由於Baked的光源被改成了Realtime模式,導致右側的動態小球也可以接收到光照。

2.陰影

此狀態下如果加入一個靜態物體(紅色面板)進行陰影的測試,也會發現本來是Baked模式的黃色光源對動態物體也會產生陰影

 3.Emission

此模式下,由於沒有烘焙,綠色和紅色的emision物體也無法產生間接光,場景中的物體都沒有受到紅色和綠色物體的影響。

二 ShadowMask

當在Lighting Setting中設置爲ShadowMask模式後,可以發現場景中類型爲Mixed的Light中的ShadowMask Mode有兩種模式,一種是ShadowMask,一種是Distance ShadowMask,兩者的區別在於陰影的渲染。

 1.光照

Mixed類型的光無論是設置爲ShadowMask還是Distance ShadowMask,對光照的着色渲染都是相同的。對於靜態物體使用lightmap,對於動態物體使用實時光。Baked類型的光則是隻能對靜態物體產生影響,動態物體需要使用LightProbe才能受到影響。

2.陰影

對於Baked類型的光源,靜態物體對靜態物體投射陰影是通過ShadowMask,靜態物體對動態物體投射陰影也需要通過LightProbe。動態物體則不能投射陰影。無論是ShadowMask還是LightProbe,都是預先計算的,因此也沒有實時陰影ShadowMap中的Shadow Distance的限制,也就是說無論物體距離多遠都會有陰影。

ShadowMask模式

如果MixedLight中的Shadowmask Mode設置爲ShadowMask(不要和Lighting Setting中的ShadowMask搞混)對於MixedLight類型的光源靜態物體投射陰影時和Baked類型光源投射狀況相同。動態物體投射陰影時則會採用ShadowMap的實時陰影。

如下圖,MixedLight類型的光源,紅色面板爲靜態物體,左側球體爲靜態,可以通過ShadowMask正常接收靜態陰影,右側小球因爲是動態,則不能直接接收靜態物體投射的陰影,如果需要接收,則要使用LightProbe。

 如果把紅色面板改爲動態的,則兩個小球都會通過ShadowMap方式接收陰影。

ShadowDistance Mask模式

如果MixedLight中的Shadowmask Mode設置爲Distance ShadowMask,在distance範圍內,無論是靜態還是動態物體投射陰影,都將使用ShadowMap的實時陰影。

而如果超出Distance,則對於靜態物體投射時,迴歸到和ShadowMask一致,對於動態物體投射時則沒有陰影。

在distance範圍內,通過實時陰影都可以正常接收陰影。 

 

3.Emission

由於有lightmap的支撐,emission對間接光的貢獻也可展示出來,可以看到靜態的球體(左下和右上)會受到右側紅色面板的影響。 

三 Baked Indirect 

此模式下,事實上這個混合模式的名字就已經十分直白了——它只烘焙間接光,其他的全部是實時的。Shadowmask貼圖?不存在的。
因此我們有了實時光、實時陰影等等。所以,在Shadow Distance的範圍之內和實時光下效果一樣,陰影是實時的shadow map,並且在shadow distance之外不會有陰影產生——哪怕是分辨率比較低的模糊陰影也沒有。

1.光照

對於mixed類型的光(紫色),左側球體(靜態)和右側球體(動態)都會受到該光源的影響,左側靜態球體是通過lightmap獲取,而右側則是實時的。

對於baked類型的光(黃色),左側球體(靜態)受到該光源的影響,右側球體(動態)則不會受到該光源的影響。動態物體需要使用LightProb才能接受到baked類型光的影響。

2.陰影

在Baked Indirect模式下,無論是Mised Light還是Baked Light,在距離小於shadow distance時都將會投射shadowMap實時陰影,而大於shadow distance後將沒有陰影。

3.Emission

由於有lightmap的支撐,emission對間接光的貢獻也可展示出來,可以看到靜態的球體(左下和右上)會受到右側紅色面板的影響。 

 

總結

1.總結下對於MixedLight類型的光,在各模式下其光照和陰影的情況(感謝此圖原作者大佬)

2.Emission的間接光:只有靜態物體可以產生,動態物體如果想接收需要LightProbe 

3.動態物體想接收Baked的間接光或者陰影都得需要LightProbe

4.HDRP也有實時間接光,但是Spot和Point Lights並不支持。

5.別被ShadowMask搞蒙圈,對於Baked類型的光,只有ShadowMask和Baked Indirect的差別。 

 

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