Light Mode和Lighting Mode
在光照设置面板中可以控制全局光照是否开启,Realtime Global
Illumination开关控制Realtime光源的实时光照,Baked Global Illumination控制Mixed和Baked二种光源。
![](https://img.haomeiwen.com/i2560795/d242b69e92ffc9be.png)
1、LightMode下的三种模式
1)、Realtime实时
Unity 在运行时每帧计算并更新实时灯光。没有预先计算实时灯光。
2)、Mixed混合
一种提供烘焙和实时功能的混合模式,例如对灯光的间接照明进行烘焙,同时对直接照明进行实时计算。场景中混合模式灯光的行为和性能影响取决于我们全局混合照明模式的选择。
Mixed Lights下的子模式:Baked Indirect、Shadowmask、Distance
Shadowmask、Subtractive。
3)、烘焙
Unity 在运行之前预先计算Baked Lights 的光照,灯光的直接和间接照明被烘焙成光照贴图。设置为该模式后,该灯光在程序运行时将不占用性能成本,同时,将生成的光照贴图应用到场景中的成本也较低。
2、混合光照模式
在完全烘焙的情况下,对于静态物体而言,所有的直接光和间接光信息都被烘焙到了光照贴图上。虽然是性能消耗最低的方法,但是代价是损失了一些效果。因此Unity提供了混合光照模式,以达到效果和性能的平衡。目前有三种混合模式可以选择,如下图所示。
![](https://img.haomeiwen.com/i2560795/0097bc3d119ee2b0.png)
1)Baked Indirect
这种模式只烘焙间接光,直接光照和阴影都实时计算。
![](https://img.haomeiwen.com/i2560795/ec4962e7a964fb0b.png)
![](https://img.haomeiwen.com/i2560795/74b1d34466ea21bc.png)
2) Shadowmask
这种模式除了烘焙间接光照外,还会把静态物体的的阴影烘焙到Shadowmask中。
![](https://img.haomeiwen.com/i2560795/a13b10ec721a78d1.png)
![](https://img.haomeiwen.com/i2560795/ea5e086c572743e7.png)
![](https://img.haomeiwen.com/i2560795/f296f1ea771094d5.png)
3) Subtractive
这种模式下,静态物体的直接光照和阴影都会被烘焙到光照贴图。
![](https://img.haomeiwen.com/i2560795/d0c2aee7f70d112b.png)
![](https://img.haomeiwen.com/i2560795/01708abfcc679226.png)
3、灯光模式在不同光照模式下的可用性及性能对比
![](https://img.haomeiwen.com/i2560795/3d269b930de97555.png)
![](https://img.haomeiwen.com/i2560795/a333325a87719316.png)
注:Baked Global Illumination + Baked为Baked Global Illumination勾选,Realtime Global Illumination不勾选,Light Mode为Baked,可用表示该灯光被当作Mixed灯光来使用(因为Realtime Global Illumination+Baked和Realtime Global Illumination+Realtime烘焙的结果是一样的,前者Backed光源相当于Realtime光源,产生的实时阴影)。光照贴图的大小指的是:Lighting窗口最底下显示的大小。SetPass Calls、Draw Calls、Used Total是在移动手机(SM-G8508S)下测试的数据。
综上所示,烘焙灯光会占用较多的内存(RAM+HDD),但是相应的DrawCall会比较低,实时灯光会占用较多的GPU(有时是CPU)资源。需要注意的一个是Baked Global Illumination+Realtime,不仅会生成光照贴图(32MB),而且DrawCalls数也很高(这种模式下Lighting Mode的三种模式:Baked Indirect、Shadowmask、Subtractive是没区别的),项目中应该要避免这种模式的组合。