ShadowMask,ShadowMap的区别与联系
区别与联系
投射和采样情况
例子
a) Plane_A投射到ShadowMask, Cube_A投射到ShadowMask, Cube_B投射到ShadowMap
b) 运行时Plane_A采样ShadowMask和ShadowMap, 所以Plane_A表面会显示Cube_A的预计算阴影和Cube_B的实时阴影, UnityMixRealtimeAndBakedShadows负责处理两种阴影的混合
c) 运行时Cube_B采样ShadowMap,不采样ShadowMask, 所以Cube_B表面不会显示Cube_A的预计算阴影
2) 把Cube_A设置为非静态时,Cube_B表面就会显示Cube_A投射的阴影了,因为此时Cube_A变成投射到ShadowMap了(实时计算并存入ShadowMap)。
ShadowMask相关的设置
1) 菜单 -> Window -> Rendering -> Light Settings -> Scene -> Mixed Lighting
a) Baked Indirect: 直接光使用实时光照;间接光使用lightmap(预计算);所有的阴影也都是实时渲染,不会启用ShadowMask贴图
b) Shadowmask: 直接光使用实时光照;间接光使用lightmap(预计算);阴影使用shadowMask(预计算)
c) Subtractive: 直接光照,间接光照,阴影信息都烘焙到了一张lightmap中
2) 菜单 -> Edit -> Project Settings -> Quality
a) Shadowmask: 无需解释
b) Distance Shadowmask: 在shadow distance范围内,静态物体投射的阴影也变成了实时阴影,只有shadow distance范围外才使用shadowmask
3) 灯光设为Mixed模式,Realtime模式将不会使用shadowMask因为该模式所有都会实时计算
4) ShadowMask预览
a) GameObject的Render组件打开
b) 菜单 -> Window -> Rendering -> Light Settings -> Baked Lightmaps
参考
Unity中的混合光照_unity 混合光照_异次元的归来的博客-CSDN博客
Unity3D CustomSRP[译].6.阴影遮罩[Shadow Masks] - 简书 (jianshu.com)