光照貼圖(Lightmap)
將靜態物體所受光影效果, 提前計算渲染到一張貼圖中,引擎運行時,取貼圖計算物體所受光影效果,在保障畫面的同時,減少實時光影計算,提高渲染效率,採用的是全局光照技術。
Global Illumination 全局光照(GI)
全局光照 = 直接光照(Direct Light) + 間接光照(Indirect Light)
直接光照 = 光源發出的光線照射到物體上的光照。
間接光照 = 光線經過其他物體,反射到物體的光照。
Unity GI(global illumination 全局光照),有兩種。只有靜態物體才能包含在烘焙和預計算中。
- Realtime GI (預結算全局光照)
- Baked GI (烘培全局光照)
所有Mode爲Realtime的Light都沒有烘培光照,動態自發光物體的光照也沒有被烘培。(Unity2018.2.20f1)
1. 場景烘焙設置:
1. 1Lighting Setting 中 Realtime GI 和 Baked GI 都不勾選(靜態物體無lightmap)
Realtime | 實時渲染時:靜態物體和動態物體都會計算該光源。 |
Mixed | 無法選擇該模式 |
Baked | 無法選擇該模式 |
1.2 Lighting Setting 中 只勾選 Baked GI (靜態物體有 baked lightmap)
Realtime |
烘焙時:靜態物體的baked lightmap不會計算該光源。 實時渲染時:靜態和動態物體都會計算該光源。 |
Mixed |
烘焙時:不同的Lighting Mode設置會有不同的效果 實時渲染時:靜態和動態物體都會計算該光源。
|
Baked |
烘焙時:靜態物體的baked lightmap會計算接受到該光源的直接光,間接光信息和陰影。 實時渲染時:靜態和動態物體都不會計算該光源。 |
下圖光源Point Light,Point Light(1)都是 Mode = Baked,烘焙完了隱藏光源,靜態物體Sphere仍然有直接和間接光照效果。
下圖光源Point Light,Point Light(1),Directional Light,都是 Mode = Mixed,根據Mixed Lighting中Lighting Mode來決定烘培效果。
- Lighting Mode = Subtractive。Mode = Mixed的Light直接光,間接光,陰影都直接烘培到baked lightmap。(如同Backed)
左邊靜態物體,右邊非靜態物體。關閉光照,左側物體直接光照,間接光照,陰影不受影響,右側物體相反。
- Lighting Mode = Shadowmask。這種模式除了烘焙間接光照外,還會把靜態物體的的陰影烘焙到Shadowmask中。內存中多了一份Shadowmask,減少了靜態物體陰影的計算,佔用性能小了一點。
Ps:開啓Shadowmask Project Setting -> QualitySettings -> Shadowmask Mode爲Shadowmask。切換Distance Shadowmask和Shadowmask就可以實現實時陰影與烘焙陰影的切換。
如下圖:左邊爲靜態物體,右邊爲動態物體,改變光照方向,左邊物體間接光和陰影不受影響。
- Lighting Mode = Baked Indirect。只烘培靜態物體的受到的間接光照。直接光以及陰影進行實時計算。左側靜態物體,間接光照效果關閉光照的情況下也有,右側動態物體相反。
1.3 Realtime GI 和 Baked GI 都勾選(靜態物體有 realtime lightmap和baked lightmap)
Realtime |
烘焙時:靜態物體的realtime lightmap會計算接受到該光源的間接光信息,baked lightmap不會計算該光源 實時渲染時:靜態和動態物體都會計算該光源 |
Mixed |
烘焙時:不同的Lighting Mode設置會有不同的效果。具體參照上一條。 實時渲染時:靜態和動態物體都會計算該光源 |
Baked |
烘焙時:靜態物體的realtime lightmap不會計算該光源信息,baked lightmap會計算接受到該光源的直接光和間接光信息 實時渲染時:靜態和動態物體都不會計算該光源 |
1.4 環境光
不開啓Realtime GI,環境光默認Baked,烘焙時候光照效果烘焙到baked lightmap,運行時候動態改變環境光,靜態物體不會受到影響。如下圖烘焙時候環境光是黃色,運行時候動態改變環境光爲紫色。靜態物體不受影響。
開啓Realtime GI,可選擇Baked,和Real Time。Baked和上圖效果一樣,Real Time和其他Light一樣,會被烘焙到realtime lightmap。運行時改變環境光的屬性靜態物體和動態物體的光照效果都會發生改變(靜態物體的Realtime lightmap改變)。
參考:
https://blog.csdn.net/duotemplar/article/details/80554342
https://www.cnblogs.com/bananana/p/8867537.html
https://www.jianshu.com/p/a55973c6b596
https://www.jianshu.com/p/c4c21df632a5
https://blog.csdn.net/lengyoumo/article/details/103910249
https://blog.csdn.net/zhenghongzhi6/article/details/80826765
https://www.jianshu.com/p/593a9324f1e2
https://blog.csdn.net/wangjiangrong/article/details/100096586
https://www.jianshu.com/p/7594b044e6dc
http://ma-yidong.com/2017/09/02/mixed-lighting-lightmap-shader-in-unity/