ShadowMask,ShadowMap的区别与联系

区别与联系

1) ShadowMask和ShadowMap可以看做是同一个东西,只是ShadowMask是专门用于静态物体的。
2) ShadowMask在编辑器阶段就预计算好并存入贴图,这个过程也叫烘培(Bake)。
 

投射和采样情况

例子 

1) Plane_A为静态物体, Cube_A为静态物体, Cube_B为动态物体

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)

 

posted @ 2023-05-28 00:08  yanghui01  阅读(442)  评论(0编辑  收藏  举报