Unity HDRP中的光照烘焙测试(Mixed Lighing )和间接光
?部分內容摘抄自:https://www.cnblogs.com/murongxiaopifu/p/8553367.html
直接光和間接光
大家都知道在Unity中,我們可以在場景中布置方向光、點光、聚光等類型的光源。但如果只有這些光,則場景內只會受到直接光的影響,而所謂的直接光簡單理解就是從光源發出的直接影響物體的光。如果只考慮直接光的影響,則會缺乏很多光影細節,導致視覺效果很“平”。而間接光則描述了光子在物體表面之間的反彈,能夠用來增加細節以及真實感。
例如上圖中,位于天花板燈直射光線之外的區域缺乏光照效果。表現為四壁上沒有明暗細節,相反此時直接光范圍之外都是均勻的黑色,而整個空間同樣也顯得十分平。
而增加了間接光之后進行渲染,可以看到光被物體表面反彈,彩色光從一個表面轉移到另一個表面。表現為紅色墻壁和綠色墻壁(在右側和紅墻相對,沒在畫面內)的顏色反映到了場景中的其他表面上,四壁也不再是均勻的黑色,而有了層次感。
混合光照
使用混合光照和直接使用烘焙的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的差別。?
?
總結
以上是生活随笔為你收集整理的Unity HDRP中的光照烘焙测试(Mixed Lighing )和间接光的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 团队行为心理学读书笔记(3)领导力背后的
- 下一篇: 聊聊Unity项目管理的那些事:Git-