灯光的每一个模式,都在lighting window 面板中有对应的设置
Real-time lighting
实时光照投射的阴影的质量可以在projectsetting quality 里面设置
Using real-time lighting with Realtime GI
使用全局光照,全局光照就是间接光,实时光照是直接光(直接打到物体表面上的光),Window > Rendering>Lighting Settings里面勾选Realtime Global Illumination.,这样场景中就会由直接光和间接光两种。
全局光照对设备的要求比较高,一般在主机上或者场景比较小的游戏中才会使用,或者应用在光线缓慢变化的地方,不需要光线快速的变化,比如夕阳西下,是一个缓慢的过程
如果想要单个光照不发射间接光(全局光照),可以在light属性中,把Indirect Multiplier 设置为0,表示这个光源只有直接光,如果像全部光源都不发射间接光,直接把Realtime Global Illumination勾选去掉
Mixed lighting
混合光照:既有实时光照也有全局光照(间接光),间接光需要烘焙存储在lighting map中
与之对应的lighting window 面板
lighting mode 包含
- Baked Indirect
- Shadowmask
- Subtractive
shadow mask是最常用的 它的distance shadowmask
最常用,shadow 信息储存在shaodow mask里面,shaodow mask是一个texture,它储存了贴图的uv和分辨率,每个像素最多储存四个通道,每隔个通道的值从0-1,中间值表示软阴影。
Baked Indirect mode(MixLight)
Baked Indirect 模式, Unity只预计算间接光照,即把它渲染到lightingmap中,在阴影距离范围内,他的阴影效果和实时光照和相似,如果超出阴影设置的范围是没有阴影的,但这个需要更高的配置,一个很好的应用就是在走廊或者一个狭长的过道,视野是被限制的,远距离的物体是没有阴影的,这一点可以参考雾的效果,距离远了就变得模糊。
Shadowmask mode
lighting mode 是Shadowmask,Shadowmask mode又分为Shadowmask和Distance Shadowmask,它的模式在edit projectsetting quality shadow 里面设置
- Shadowmask: 静态物体使用烘焙光照
- Distance Shadowmask:在阴影范围内,使用实时光照,阴影范围外使用烘焙光照
在Shadowmask模式:
静态对象接收静态游戏对象的阴影,不管在不在阴影范围内,同时也接受动态物体投射的阴影,不过在阴影范围内
动态物体在阴影范围内接收动态物体投射的阴影,通过Light Probes接收静态物体投射的阴影
在一个都是静态物体的场景中,有比较好的效果,对配置的要求中等
Subtractive mode
Subtractive 提供低质量的阴影渲染,它只渲染一盏灯光中的阴影,其中包含直射光和间接光,在一些低性能的移动平台或者不支持shadowmask的平台上使用
Subtractive 时唯一一个把实时光照转换成间接光照的混合灯光模式,它不管unity动态和静态物体的光照信息,因为他把光照都预先烘焙到一个贴图里面了,所以在substractive模式下:
静态物体接收只接收来自太阳光的阴影投射,不接收任何动态物体的阴影投射
动态物体只接受实时光,不能从 Light Probes中接收阴影信息,
Advantages
提供静态物体之间高质量的阴影,对性能要求低
一张贴图搞定所有静态物体之间的渲染
提供间接光照
Disadvantages
不提供实时直接光,因此不提供镜面反射
不提供动态物体在静态物体上的光照,除了平行光以外,就是灯光时聚光灯之类的
只提供低分辨率的阴影,动态物体从light probe 中获得静态物体上低分辨率的阴影
它提供了不准确的动态和静态阴影组成