光照场景包含场景或烘焙集的烘焙光照数据。您可以将不同的光照设置烘焙到不同的光照场景资源中,并在运行时更改通用渲染管线 (URP) 使用的光照设置。
例如,可以创建一个打开光源的照明场景,以及另一个关闭光源的照明场景。在运行时,在玩家关闭光源时,可以启用第二个光照场景。
要使用光照场景,请转到活动状态的 URP 资源,然后启用光照 (Lighting) > 光探针光照 (Light Probe Lighting) > 光照场景 (Lighting Scenarios)。
要创建新的照明场景并将烘焙结果存储在其中,请执行以下操作:
要烘焙到光照场景中,请执行以下步骤:
您可以使用 ProbeReferenceVolume API 设置 URP 在运行时使用的光照场景。
如果在运行时更改活动状态的光照场景,URP 仅更改光照探针中的间接光照数据。您可能仍然需要使用脚本来移动几何体、修改光源或更改直接照明。
要启用光照场景之间的混合,请转到活动状态的 URP 资源,然后启用光探针照明 (Light Probe Lighting) > 场景混合 (Scenario Blending)。
您可以使用 BlendLightingScenario API 在运行时在光照场景之间进行混合。
例如,以下脚本会执行以下操作:
scenario01 设置为活动的光照场景。scenario01 和 scenario02 之间进行混合。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);
}
}
您可以使用渲染调试器预览光照场景之间的过渡。请遵循以下步骤:
在烘焙之间移动静态几何体时,光探针的位置可能会不同。这意味着无法在光照场景之间进行混合,因为在混合的每个光照场景中,光照探针的数量及其位置必须相同。
为了避免这种情况,在烘焙时可以阻止 URP 重新计算探针位置。请遵循以下步骤: