阴影遮罩光照模式
高清渲染管线 (High Definition Render Pipeline, HDRP) 支持阴影遮罩 (Shadowmask) 光照模式,该模式可使光照贴图为静态游戏对象预计算阴影,但仍为非静态游戏对象处理实时光照。HDRP 还支持使用 Baked Indirect 混合光照模式。有关混合光照和阴影遮罩的更多信息,请参阅混合光照模式和阴影遮罩。
使用阴影遮罩
要在 HDRP 中使用阴影遮罩,必须设置项目以支持阴影遮罩。为此需要执行以下操作:
在 Unity 项目中为每个质量级别 (Quality Level) 启用 Distance Shadowmask:
1.打开 Project Settings 窗口(菜单:Edit > Project Setting),然后选择 Quality 选项卡。
- 选择一个级别(例如,Medium),然后在 Shadows 部分中将 Shadowmask Mode 设置为 Distance Shadowmask。
- 为每个质量级别执行此操作。
在 Unity 项目的 HDRP 资源中启用 Shadowmask 属性:
1.在 Project 窗口中,选择 HDRP 资源以便在 Inspector 中查看该资源。
- 转到 Lighting 部分,然后找到 Shadow。
- 启用 Shadowmask。
将场景设置为使用阴影遮罩和烘焙全局光照:
1.打开 Lighting 窗口(菜单:Window > Rendering > Lighting Settings)。
- 在 Mixed Lighting 部分中,启用 Baked Global Illumination 并将 Lighting Mode 设置为 Shadowmask。
使摄像机在渲染场景时使用阴影遮罩。要将此设置为摄像机的默认行为,请执行以下操作:
1.打开 Project Settings 窗口(菜单:Edit > Project Settings),然后选择 HDRP Default Settings 选项卡。
- 在 Frame Settings 部分中,将 Default Frame Settings For 设置为 Camera。
- 在 Lighting 部分中,启用 Shadowmask。
(可选)可以使反射探针使用阴影遮罩进行烘焙反射或实时反射。为此,请按照与步骤 3 中相同的说明进行操作,但是将 Default Frame Settings For 设置为 Baked Or Custom Reflection 或 Realtime Reflection。
现在,在光源上,选择混合模式时,光照贴图会为光源所影响的静态游戏对象预计算阴影遮罩。
阴影遮罩模式
为了实现灵活的光照设置,HDRP 允许为每个光源选择阴影遮罩的行为。要更改阴影遮罩的行为,请使用光源的 Shadowmask Mode 属性。为此,请将光源的 Mode 设置为 Mixed,然后选择 Shadows > Shadow Map,并将 Shadowmask Mode 设置为所需的行为。有关每种阴影遮罩模式 (Shadowmask Mode) 的行为,请参阅下表。
阴影遮罩模式 | 描述 |
---|---|
Distance Shadowmask | 当摄像机和光源之间的距离小于 Fade Distance 时,使光源为所有游戏对象投射实时阴影。如果不能看到此属性,请显示出 Shadows 部分的更多选项。当光源和摄像机之间的距离大于 Fade Distance 时,HDRP 停止计算光源的实时阴影。此时将对静态游戏对象使用阴影遮罩,而非静态游戏对象不投射阴影。方向光不使用 Fade Distance,而是使用当前的 Max Shadow Distance。 |
Shadowmask | 使光源仅对非静态游戏对象投射实时阴影。当摄像机和光源之间的距离小于 Fade Distance 时,随后会为静态游戏对象将这些阴影与阴影遮罩合并起来。当光源和摄像机之间的距离大于 Fade Distance 时,HDRP 停止计算光源的实时阴影。此时将对静态游戏对象使用阴影遮罩,而非静态游戏对象不投射阴影。 |
详细信息
Distance Shadowmask 更耗费 GPU 资源,但视觉效果更逼真,因为更靠近光源的实时光照比通过低分辨率来表示更远区域的阴影遮罩纹理更精确。
Shadowmask 更耗内存,这是因为摄像机使用阴影遮罩纹理来渲染靠近摄像机的静态游戏对象,这需要更大分辨率的阴影遮罩纹理。