조명 시나리오에는 씬 또는 베이킹 세트에 대해 베이크된 광원 데이터가 포함되어 있습니다. 다양한 조명 설정을 서로 다른 조명 시나리오 에셋에 베이크하고 런타임 시점에 URP(유니버설 렌더러 파이프라인)가 사용하는 설정을 변경할 수 있습니다.
예를 들어 광원이 켜져 있는 조명 시나리오 하나와 광원이 꺼져 있는 다른 조명 시나리오 하나를 생성할 수 있습니다. 런타임 시점에 플레이어가 광원을 끌 때 두 번째 조명 시나리오를 활성화할 수 있습니다.
조명 시나리오를 사용하려면 활성 URP 에셋으로 이동하여 Lighting > Light Probe Lighting > Lighting Scenarios를 활성화합니다.
베이크 결과를 저장할 수 있도록 새로운 조명 시나리오를 생성하려면 다음을 수행합니다.
조명 시나리오로 베이크하려면 다음 단계를 따르십시오.
ProbeReferenceVolume API를 사용하여 런타임 시 URP가 사용하는 조명 시나리오를 설정할 수 있습니다.
런타임 시 활성 조명 시나리오를 변경하면 URP는 라이트 프로브의 간접 조명 데이터만 변경합니다. 지오메트리를 옮기거나 조명을 수정하거나 직접 조명을 변경하려면 여전히 스크립트를 사용해야 할 수 있습니다.
조명 시나리오 블렌딩을 활성화하려면 활성 URP Asset으로 이동하여 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가 프로브 위치를 다시 계산하지 못하게 만들 수 있습니다. 다음 과정을 따르십시오.