mixed模式下烘焙shadowmask记录的数据

构建烘焙场景:
mixed模式下烘焙shadowmask记录的数据
项目中只有一个平行光,烘焙之后:
mixed模式下烘焙shadowmask记录的数据
可以看到在只有一个平行光照射场景的情况下,这个黑色区域是阴影的区域。

删除上一步的烘焙数据之后,调整一下光源方向,然后重新烘焙:
mixed模式下烘焙shadowmask记录的数据
mixed模式下烘焙shadowmask记录的数据
可见我们的猜测是正确的。

然后加入另外一个灯光:
mixed模式下烘焙shadowmask记录的数据
调整两个灯光的强度,使得有两个可见的阴影,然后进行烘焙:
mixed模式下烘焙shadowmask记录的数据

mixed模式下烘焙shadowmask记录的数据
左边是第一个灯打开的烘焙结果,中间是第二个灯烘焙的结果,右边是第三个灯烘焙的结果:

假如红色的灯光是在第一个通道——r通道
第二个灯用第二个通道记录——g通道
那么凡是第一个灯能看到的区域用(1,0,0,0)表示
凡是第二个灯能看到的区域用(0,1,0,0)表示
那么现在应该是这个样子:
mixed模式下烘焙shadowmask记录的数据
两个一叠加:
mixed模式下烘焙shadowmask记录的数据
红色区域:只有第一个灯能看到的区域
黄色区域:两个灯都能看到的区域
绿色区域:只有第二个灯能看到的区域
黑色区域:两个灯都看不到的区域

在增加多个灯,也是类似的规律。

增加多个物体,烘焙:
mixed模式下烘焙shadowmask记录的数据
mixed模式下烘焙shadowmask记录的数据
选择一个物体查看器shadowmask:
mixed模式下烘焙shadowmask记录的数据
mixed模式下烘焙shadowmask记录的数据
mixed模式下烘焙shadowmask记录的数据
黄色高亮的是,这个物体的uv展开图,以及对应的shadowmask。

mixed模式下烘焙shadowmask记录的数据
mixed模式下烘焙shadowmask记录的数据
ok,到此我们再次总结下,其实shadowmask记录就是每个灯光能看到的可见区域。
每个灯光有一个编号,比如0号灯用r通道,1号灯用g通道。
这样rgba四个通道,最多记录四个灯的照射情况。多余四个灯光,unity官网说了,会将多余的灯用baked模式处理。详见:
https://docs.unity3d.com/Manual/LightMode-Mixed-Shadowmask.html
mixed模式下烘焙shadowmask记录的数据