Version: Unity 6.0 (6000.0)
语言 : 中文
选择如何在运行时更改光照
在运行时使用天空遮挡更新天空光照

使用光照场景烘焙不同的光照设置

光照场景包含场景或烘焙集的烘焙光照数据。您可以将不同的光照设置烘焙到不同的光照场景资源中,并在运行时更改通用渲染管线 (URP) 使用的光照设置。

例如,可以创建一个打开光源的照明场景,以及另一个关闭光源的照明场景。在运行时,在玩家关闭光源时,可以启用第二个光照场景。

启用光照场景

要使用光照场景,请转到活动状态的 URP 资源,然后启用光照 (Lighting) > 光探针光照 (Light Probe Lighting) > 光照场景 (Lighting Scenarios)

添加照明场景

要创建新的照明场景并将烘焙结果存储在其中,请执行以下操作:

  1. 在光照窗口中打开自适应探针体积 (Adaptive Probe Volumes) 面板
  2. 光照场景 (Lighting Scenarios) 部分中,选择添加 (+) 按钮以添加光照场景。

烘焙到照明场景

要烘焙到光照场景中,请执行以下步骤:

  1. 光照场景 (Lighting Scenarios) 部分中,选择一个光照场景以使其处于活动状态。
  2. 选择生成照明 (Generate Lighting)。URP 会将烘焙结果存储在活动状态的照明场景中。

您可以使用 ProbeReferenceVolume API 设置 URP 在运行时使用的光照场景。

如果在运行时更改活动状态的光照场景,URP 仅更改光照探针中的间接光照数据。您可能仍然需要使用脚本来移动几何体、修改光源或更改直接照明。

光照场景之间的混合

要启用光照场景之间的混合,请转到活动状态的 URP 资源,然后启用光探针照明 (Light Probe Lighting) > 场景混合 (Scenario Blending)

您可以使用 BlendLightingScenario API 在运行时在光照场景之间进行混合。

例如,以下脚本会执行以下操作:

  1. scenario01 设置为活动的光照场景。
  2. 设置每帧要混合的单元格数量,这对于优化非常有用。
  3. 每帧更新自适应探针体积混合因子以在 scenario01scenario02 之间进行混合。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BlendLightingScenarios : MonoBehaviour
{
    UnityEngine.Rendering.ProbeReferenceVolume probeRefVolume;
    public string scenario01 = "Scenario01Name";
    public string scenario02 = "Scenario02Name";
    [Range(0, 1)] public float blendingFactor = 0.5f;
    [Min(1)] public int numberOfCellsBlendedPerFrame = 10;

    void Start()
    {
        probeRefVolume = UnityEngine.Rendering.ProbeReferenceVolume.instance;
        probeRefVolume.lightingScenario = scenario01;
        probeRefVolume.numberOfCellsBlendedPerFrame = numberOfCellsBlendedPerFrame;
    }

    void Update()
    {
        probeRefVolume.BlendLightingScenario(scenario02, blendingFactor);
    }
}

预览光照场景之间的混合效果

您可以使用渲染调试器预览光照场景之间的过渡。请遵循以下步骤:

  1. 转到窗口 (Window) > 分析 (Analysis) > 渲染调试器 (Rendering Debugger) 以打开渲染调试器
  2. 场景混合目标 (Scenario Blend Target) 设置为光照场景 (Lighting Scenario)。
  3. 使用场景混合系数 (Scenario Blending Factor) 可在场景视图中检查光照场景之间的混合效果。

在不同光照场景中保持光照探针相同

在烘焙之间移动静态几何体时,光探针的位置可能会不同。这意味着无法在光照场景之间进行混合,因为在混合的每个光照场景中,光照探针的数量及其位置必须相同。

为了避免这种情况,在烘焙时可以阻止 URP 重新计算探针位置。请遵循以下步骤:

  1. 烘焙一个照明场景。
  2. 将另一个光照场景设置为活动的光照场景。
  3. 更改场景照明或几何形状。
  4. 探针放置 (Probe Placement) 部分中,将探针位置 (Probe Positions) 设置为不重新计算 (Don’t Recalculate)
  5. 选择生成照明 (Generate Lighting) 仅重新计算间接照明,并跳过探针放置计算。

其他资源

选择如何在运行时更改光照
在运行时使用天空遮挡更新天空光照