호오 이게 된다고? 기대했던 내용
런타임에 조명을 변경하는 방법을 선택하세요
Adaptive Probe Volumes에서 객체가 구운 데이터를 사용하는 방식을 변경하여 런타임에 변경되는 조명을 만들 수 있습니다. 예를 들어, 장면에서 조명을 켜고 끌 수 있습니다. 또는 시간을 변경할 수 있습니다.
다음 프로세스 중 하나를 사용할 수 있습니다 :
- 조명 시나리오를 사용하여 다양한 조명 설정을 구울 수 있습니다 . 예를 들어, 낮-밤 주기로 각 단계에 대한 조명 시나리오를 구울 수 있습니다.
- 스카이 오클루전을 이용해 런타임에 하늘의 빛을 업데이트합니다 .
조명 시나리오에는 다음과 같은 장점이 있습니다.
- 조명 시나리오는 더 정확합니다. 조명 시나리오는 하늘의 빛이나 빛이 반사되는 물체의 색상을 근사 처리 (대충 처리) 하지 않습니다.
- 조명 시나리오는 장면의 모든 조명을 저장하므로 하늘 조명과 장면 조명 모두에서 조명을 업데이트할 수 있습니다.
스카이 오클루전에는 다음과 같은 장점이 있습니다.
- 설정이 더 쉽습니다. 예를 들어, 낮-밤 주기에 필요한 데이터를 설정하기 위해 한 번만 굽기만 하면 됩니다.
- 더 나은 성능.
- 서로 다른 데이터 집합 사이에서 스카이 오클루젼이 혼합될 필요가 없으므로 전환이 더 빠르고 매끄럽습니다.
스카이 오클루전과 조명 시나리오를 함께 사용할 수 있습니다. 예를 들어, 스카이 오클루전을 사용하여 하늘의 빛을 업데이트하고 조명 시나리오를 사용하여 태양의 위치나 실내 램프의 상태를 업데이트할 수 있습니다.
Lighting Scenarios 를 사용하여 다양한 조명 설정 만들기
조명 시나리오에는 장면 또는 베이킹 세트에 대한 베이크된 조명 데이터가 포함됩니다. 다양한 조명 설정을 다양한 조명 시나리오 에셋에 베이크하고, 런타임에 Universal Render Pipeline(URP)이 사용하는 것을 변경할 수 있습니다.
예를 들어, 조명이 켜진 조명 시나리오 하나와 조명이 꺼진 조명 시나리오 하나를 만들 수 있습니다. 런타임에 플레이어가 조명을 끄면 두 번째 조명 시나리오를 활성화할 수 있습니다.
Enable Lighting Scenarios 조명 시나리오 활성화
조명 시나리오를 사용하려면 활성된 URP Asset으로 이동하여 Lighting > Light Probe Lighting > Lighting Scenarios. 를 활성화합니다.
Add a Lighting Scenario 조명 시나리오 추가
베이킹 결과를 저장할 수 있는 새로운 조명 시나리오를 만들려면 다음을 수행하세요.
- 조명 창에서 Adaptive Probe Volumes panel 을 엽니다 .
- Lighting Scenarios 섹션 에서 Add ( + ) 버튼을 선택하여 조명 시나리오를 추가합니다.
Bake into a Lighting Scenario 조명 시나리오에 베이크하기
조명 시나리오에 베이크하려면 다음 단계를 따르세요.
- Lighting Scenarios 섹션 에서 활성화할 조명 시나리오를 선택합니다.
- Generate Lighting 을 선택합니다 . URP는 활성 조명 시나리오에 베이킹 결과를 저장합니다.
ProbeReferenceVolume API를 사용하여 런타임에 URP가 사용하는 조명 시나리오를 설정할 수 있습니다 .
런타임에 활성 조명 시나리오를 변경하는 경우 URP는 Light Probes의 간접 조명 데이터만 변경합니다. 지오메트리를 이동하거나 조명을 수정하거나 직접 조명을 변경하려면 여전히 스크립트를 사용해야 할 수 있습니다.
조명 시나리오 간 혼합
조명 시나리오 간 혼합을 활성화하려면 활성화된 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);
}
}
Preview blending between Lighting Scenarios 조명 시나리오 간 블렌딩 미리보기
렌더링 디버거를 사용하여 조명 시나리오 간의 전환을 미리 볼 수 있습니다. 다음 단계를 따르세요.
- Window > Analysis > Rendering Debugger 로 이동하여 렌더링 디버거를 엽니다.
- Scenario Blend Target 을 Lighting Scenario로 설정합니다 .
- Scenario Blending Factor 를 사용하여 씬뷰에서 조명 시나리오 간 혼합 효과를 확인합니다.
다양한 조명 시나리오에서 Light Probe를 동일하게 유지
베이크 사이에 정적 지오메트리를 이동하면 Light Probe 위치가 다를 수 있습니다. 즉, 조명 시나리오 간에 블렌딩할 수 없습니다. 블렌딩하는 각 조명 시나리오에서 Light Probe의 수와 위치가 동일해야 하기 때문입니다.
이를 방지하려면 베이크할 때 URP가 프로브 위치를 다시 계산하는 것을 방지할 수 있습니다. 다음 단계를 따르세요.
- 조명 시나리오 하나를 굽습니다.
- 다른 조명 시나리오를 활성 조명 시나리오로 설정합니다.
- 장면의 조명이나 지오메트리를 변경합니다.
- Probe Placement 섹션 에서 Probe Positions 를 Don’t Recalculate 으로 설정합니다 .
- 간접 조명만 다시 계산하고 프로브 배치 계산은 건너뛰려면 Generate Lighting 를 선택하세요 .
Update light from the sky at runtime with sky occlusion
런타임에 스카이 오클루전을 사용하여 하늘의 빛을 업데이트하기
Adaptive Probe Volumes를 사용하면 스카이 오클루전을 활성화할 수 있습니다. 스카이 오클루전은 GameObject가 하늘에서 색상을 샘플링할 때 Unity가 빛이 GameObject에 도달할 수 없는 경우 색상을 어둡게 한다는 것을 의미합니다.
Unity의 스카이 오클루전은 런타임에 업데이트되는 앰비언트 프로브의 하늘 색상을 사용합니다. 즉, 하늘 색상이 변경됨에 따라 GameObject에 동적으로 조명을 비출 수 있습니다. 예를 들어, 낮과 밤의 사이클 효과를 시뮬레이션하기 위해 하늘 색상을 밝은 색상에서 어두운 색상으로 변경할 수 있습니다.
스카이 오클루전을 활성화하면 Adaptive Probe Volumes 을 굽는 데 시간이 더 오래 걸릴 수 있으며 Unity는 런타임에 더 많은 메모리를 사용할 수 있습니다.
스카이 오클루전 작동 방식
스카이 오클루전을 활성화하면 Unity는 Adaptive Probe Volume의 각 프로브에 추가적인 정적 스카이 오클루전 값을 베이크합니다. 스카이 오클루전 값은 프로브가 하늘에서 받는 간접 조명의 양이며, 여기에는 정적 GamesObjects에서 반사된 조명도 포함됩니다
런타임 시 정적 또는 동적 GameObject가 Adaptive Probe Volume 프로브를 샘플링할 때 Unity는 두 가지 값을 사용하여 하늘의 빛을 근사합니다.
- 주변 탐사선에서 수집한 하늘색입니다. 하늘색이 바뀌면 업데이트됩니다.
- 고정된 스카이 오클루전 값입니다.
Enable sky occlusion 스카이 오클루전 활성화
먼저 GPU 라이트매퍼를 활성화합니다. Progressive CPU를 사용하면 Unity는 스카이 오클루전을 지원하지 않습니다.
- Window > Rendering > Lighting로 이동합니다.
- Scene 패널로 이동합니다
- Lightmapper를 Progressive GPU로 설정합니다.
스카이 오클루전을 사용하려면 다음 단계를 따르세요.
- Adaptive Probe Volumes 패널로 이동하세요
- Sky Occlusion을 활성화하세요
조명 데이터를 업데이트하려면 Sky Occlusion을 활성화하거나 비활성화한 후 Adaptive Probe Volumes도 베이크해야 합니다.
Update light at runtime 런타임에 라이트 업데이트하기
런타임에 하늘의 빛을 업데이트하려면 장면의 ambient light 색상을 사용해야 하며, 스카이박스가 아닙니다. 색상을 사용하려면 다음을 수행합니다.
- Window > Rendering > Lighting로 이동합니다.
- Environment 패널로 이동합니다
- Source 를 Gradient 나 Color로 해줍니다
런타임에 하늘의 빛을 업데이트하려면 다음 중 하나를 수행하세요.
- RenderSettings API의 속성을 사용하여 하늘 색상을 변경합니다(예: ambientSkyColor)
- Animation window를 사용하세요
Enable more accurate sky direction data 더 정확한 하늘 방향 데이터 사용 가능
객체가 주변 프로브를 샘플링할 때, 기본적으로 Unity는 객체의 표면 법선을 하늘 방향으로 사용합니다. 이 방향은 빛이 오는 방향과 일치하지 않을 수 있습니다. 예를 들어 객체가 내부에 있고 하늘 빛이 다른 객체에 반사되어 도달하는 경우입니다.
대신 Unity는 각 Adaptive Probe Volume 프로브에서 정확한 방향을 계산, 저장, 사용하고 반사 조명을 고려할 수 있습니다. 이를 통해 하늘 폐색이 더 정확해지며, 특히 프로브가 하늘을 직접 볼 수 없는 동굴과 같은 지역이나 하늘이 대조적인 색상을 띠고 빛이 창문과 같은 특정 방향에서 오는 경우에 그렇습니다.
이 기능을 활성화하려면 조명 창의 Adaptive Probe Volumes 에서 Sky Direction 을 활성화합니다 .
Sky Direction을 활성화하면 다음이 적용됩니다.
- 베이킹에 시간이 더 오래 걸리고 Unity는 런타임에 더 많은 메모리를 사용합니다.
- Unity가 프로브 간에 하늘 방향 데이터를 보간하지 않기 때문에 눈에 띄는 이음새가 있을 수 있습니다.
Unity가 사용하는 방향을 재정의하려면 Probe Adjustment Volume 구성 요소를 사용합니다 .
추가 자료
스카이 오클루젼 설정에 대한 자세한 내용은 Adaptive Probe Volumes 패널 속성을 참조하세요.
baked sky occlusion data 표시에 대한 정보를 위한 Rendering Debugger
댓글