您的位置:首页 > 移动开发 > Unity3D

Shadowmask

2018-02-08 20:34 357 查看
原文链接:Shadowmask

ShadowmaskShadowmask光照模式下的一种模式,设置后场景中所有混合光都会使用该模式。使用以下方法将混合光设置为Shadowmask

- 在光照窗口中,选择场景标签,在混合光中,将光照模式设置为Shadowmask

- 在质量设置(Edit>Project Settings>Quality)中,将Shadowmask mode设置为Shadowmask

查看文档Mixed lighting了解混合光的更多内容,查看文档Light modes了解其他可用的光照模式。

Shadowmask是一个和对应lightmap有一样的UV布局和分辨率的纹理。因为现在GPU限制纹理最多有4个通道,Shadowmask的每个纹理点上最多存储4个光照的遮挡信息。

Unity预处理最多4个重叠的光照从静态GameObject向静态GameObject投射的阴影,并且存储到一个独立的Shadowmask中。如果超过4个光照重叠了,所有多出来的光照会退化成Baked Lighting。烘培系统决定哪些光照退化成Baked Lighting,并且在烘培过程中保持一致,除非有一个重叠的光照发生了变化。Light Probes同样最多接受4个光照的遮挡信息。

接受阴影的物体(shadowmask的纹理点)独立计算光照重叠。也就是说只要光照边界不在空间中发生重叠,一个物体能够只使用Shadowmask/Probe的一个通道,受到10个不同混合光照的影响。如果光照发生重叠,那么会使用其他的通道。重叠超过4个光照,就会退化成完全烘培的模式。

Shadowmask模式中:

- 静态GameObject使用shadowmask从其他静态GameObject获取阴影,不受Shadow Distance影响。使用shadow map从动态GameObject获取阴影,受Shadow Distance影响。

- 动态GameObject使用shadow map在Shadow Distance范围中从其他静态物体获取阴影。使用光探测器从静态物体获取阴影。阴影的保真度取决于光探测器的密度和网格婉然使用的光探测器模式。

Unity会自动合成静态和动态GameObject的重叠阴影,因为shadow masks(保存静态GameObject的光照和阴影信息)和shadow maps(保存动态GameObject的光照和阴影信息)只编码了遮挡信息。

一个Shadowmask模式适用的例子是制作一个使用镜面材质,烘培柔软阴影的完全静止场景,一个离相机不太近的动态角色向场景中投射阴影。另一个例子是烘培阴影延伸到地平线的开放世界场景,但是不能有类似白天黑夜地动态光照。

Advantages and disadvantages of Shadowmask mode

Shadowmask模式的性能需求很适合中低端PC或者移动设备。下面是Shadowmask模式的主要优点和确定。

优点

提供和Realtime Lighting一样的视觉效果

能够实时在从动态GameObject向静态GameObject投射阴影。

着色器的一个纹理操作能处理所有静态GameObjects的光照和阴影

自动合成静态和动态GameObject的重叠阴影

由于不在shadow maps中渲染静态GameObject,中低性能即可满足需求

提供间接光

缺点

从静态GameObject到动态GameObject的阴影只能使用光探测器提供低分辨率阴影

最多只允许4个重叠光照

lightmap纹理集增加了内存需求

shadow mask纹理增加了内存需求

2017-09-18发布limited editorial review

光照模式在5.6中增加

在Unity 2017.1中增加了计算光照重叠的建议
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity manual light