Version: 2021.3
Lighting Mode:Baked Indirect
Lighting Mode:Subtractive

Lighting Mode:Shadowmask

本页介绍在场景使用的 Lighting Settings AssetLighting Mode 属性设置为 Shadowmask 时,该场景中所有混合光源的行为。

Similar to Baked Indirect Lighting Mode, Shadowmask Lighting Mode combines real-time direct lighting with baked indirect lighting. However, Shadowmask Lighting Mode differs from Baked Indirect Lighting Mode in the way that it renders shadows. Shadowmask Lighting Mode allows Unity to combine baked and real-time shadows at runtime, and to render shadows in the far distance. It does this by using an additional lightmap Texture known as a shadow mask, and by storing additional information in Light Probes.

Shadowmask 光照模式在所有光照模式中提供最高保真度的阴影,但需要的性能成本和内存要求也是最高的。此模式适用于在高端或中档硬件上渲染远处游戏对象可见时的真实场景,例如空旷的空间世界。

渲染管线支持

See render pipeline feature comparison for more information about support for Shadowmask Lighting Mode across render pipelines.

阴影遮罩 (Shadowmask) 质量设置

Shadowmask 光照模式有以下质量设置:

  • Distance Shadowmask 以更高的性能成本提供更高保真度的阴影。
  • Shadowmask 以更低的性能成本提供更低保真度的阴影。

混合光源行为

使用 Distance Shadowmask 质量设置

将场景的 Lighting Mode 设置为 Shadowmask 并且项目使用 Distance Shadowmask 质量设置时,混合光源的行为如下。

  • 混合光源照亮的动态游戏对象将接收:
    • 实时直接光照。
    • 烘焙间接光照(使用光照探针)。
    • 动态游戏对象的实时阴影(使用阴影贴图),不超过阴影距离 (Shadow Distance)。
    • 静态游戏对象的实时阴影(使用阴影贴图),不超过阴影距离 (Shadow Distance)。
    • 静态游戏对象的烘焙阴影(使用光照探针),超过阴影距离 (Shadow Distance)。
  • 混合光源照亮的静态游戏对象将接收:
    • 实时直接光照。
    • 烘焙间接光照(使用光照贴图)。
    • 动态游戏对象的实时阴影(使用阴影贴图),不超过阴影距离 (Shadow Distance)。
    • 静态游戏对象的实时阴影(使用阴影贴图),不超过阴影距离 (Shadow Distance)。
    • 静态游戏对象的烘焙阴影(使用阴影遮罩),超过阴影距离 (Shadow Distance)。

使用 Shadowmask 质量设置

将场景的 Lighting Mode 设置为 Shadowmask 并且项目使用 Shadowmask 质量设置时,混合光源的行为如下。

  • 混合光源照亮的动态游戏对象将接收:
    • 实时直接光照。
    • 烘焙间接光照(使用光照探针)。
    • 动态游戏对象的实时阴影(使用阴影贴图),不超过阴影距离 (Shadow Distance)。
    • 静态游戏对象的烘焙阴影(使用光照探针),不超过以及超过阴影距离 (Shadow Distance)。
  • 混合光源照亮的静态游戏对象将接收:
    • 实时直接光照。
    • 烘焙间接光照(使用光照贴图)。
    • 动态游戏对象的实时阴影(使用阴影贴图),不超过阴影距离 (Shadow Distance)。
    • 静态游戏对象的烘焙阴影(使用阴影遮罩),不超过以及超过阴影距离 (Shadow Distance)。

将场景的 Lighting Mode 设置为 Shadowmask

在内置渲染管线中:

  1. 为场景选择 Lighting Settings Asset
  2. 在 Inspector 中,导航到 Mixed Lighting
  3. 使用下拉菜单将 Lighting Mode 设置为 Shadowmask
  4. 打开 Quality Settings(菜单:Edit > Project Settings,然后选择 Quality 类别)。
  5. 使用 Shadowmask Mode 下拉菜单选择 ShadowmaskShadowmask Distance

在 HDRP 中:

按照 HDRP Shadowmask 光照模式文档中的说明进行操作。

阴影和运行时性能

可以使用 Shadow Distance 属性来限制 Unity 绘制实时阴影的最大距离。

阴影遮罩实现详细信息

在运行时,Unity 使用阴影遮罩来确定某个像素是否在阴影中。阴影遮罩纹理包含有关烘焙光源的遮挡信息。该纹理与相应的光照贴图共享相同的 UV 布局和分辨率。还针对每个纹素包含最多四个光源的遮挡信息(以 RGBA 格式存储)。

如果超过四个光源发生重叠,则多余光源会回退至烘焙光照 (Baked Lighting)。烘焙系统会决定哪个光源回退至烘焙光照,并在各烘焙之间保持一致,除非您修改其中某个重叠的光源。光照探针也会接收最多四个光源的相同信息。

Unity 将独立于接收阴影的对象来计算光源重叠。因此,一个对象可受到全部来自同一个阴影遮罩/探针通道的十个不同混合光源的影响,只要这些光照包围体在空间中的任何点都不重叠即可。如果某些光源重叠,则 Unity 会使用更多通道。如果某个光源确实发生重叠而所有四个通道都在使用中,则该光源将回退至完全烘焙。

Lighting Mode:Baked Indirect
Lighting Mode:Subtractive