Shadowmask
2018-02-08 20:34
357 查看
原文链接:Shadowmask
Shadowmask是Shadowmask光照模式下的一种模式,设置后场景中所有混合光都会使用该模式。使用以下方法将混合光设置为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模式适用的例子是制作一个使用镜面材质,烘培柔软阴影的完全静止场景,一个离相机不太近的动态角色向场景中投射阴影。另一个例子是烘培阴影延伸到地平线的开放世界场景,但是不能有类似白天黑夜地动态光照。
能够实时在从动态GameObject向静态GameObject投射阴影。
着色器的一个纹理操作能处理所有静态GameObjects的光照和阴影
自动合成静态和动态GameObject的重叠阴影
由于不在shadow maps中渲染静态GameObject,中低性能即可满足需求
提供间接光
最多只允许4个重叠光照
lightmap纹理集增加了内存需求
shadow mask纹理增加了内存需求
2017-09-18发布limited editorial review
光照模式在5.6中增加
在Unity 2017.1中增加了计算光照重叠的建议
Shadowmask是Shadowmask光照模式下的一种模式,设置后场景中所有混合光都会使用该模式。使用以下方法将混合光设置为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中增加了计算光照重叠的建议
相关文章推荐
- mysql database manual(mysql数据库手册)
- Unity中C#和Java的相互调用实例代码
- 详解 android 光线传感器 light sensor的使用
- C#中Socket与Unity相结合示例代码
- Unity编辑器下重启的方法
- 在Unity中捕捉Android的常用按钮返回事件
- unity5.6 导出gradle工程 Android Studio 导入问题及处理方法
- unity实现多点触控代码
- 在Unity中实现动画的正反播放代码
- Unity UGUI教程之实现滑页效果
- unity实现摄像头跟随
- 浅谈Unity中IOS Build Settings选项的作用
- MacOS系统下Unity启动黑屏的解决方法
- Unity iOS混合开发界面切换思路解析
- Unity的lua项目为Tolua# 编译protobuf
- 搭建gitlab lfs管理unity 源码
- Unity3D上路_01-2D太空射击游戏
- Unity3D上路_02-第一视角射击游戏
- Unity3D上路_03-塔防游戏