Unity 라이트 프로브 및 씬 로딩 가이드
이 문서는 Unity의 라이트 프로브와 씬 로딩에 대한 내용을 다룹니다. 라이트 프로브는 게임 오브젝트에 조명을 적용하는 데 중요한 역할을 하며, 씬을 로드하고 언로드하는 과정에서 데이터가 어떻게 업데이트되는지를 설명합니다.
라이트 프로브란?
라이트 프로브는 Unity의 C# 오브젝트로, 현재 로드된 모든 씬에 대한 라이트 프로브 데이터를 저장합니다. Unity는 사면체화된 테셀레이션이라는 내부 데이터 구조를 사용하여 게임 오브젝트에 빛을 비추는 방법을 계산합니다.
씬 로딩 방식 따라 달라지는 라이트 프로브 업데이트
Unity는 씬을 로드하거나 언로드할 때 라이트 프로브 데이터를 다음과 같은 방식으로 업데이트합니다.
- LoadSceneMode.Single: 씬이 새로 로드될 경우 이전의 라이트 프로브 데이터를 완전히 대체하므로, Unity는 자동으로 사면체 테셀레이션을 업데이트합니다.
- LoadSceneMode.Additive 또는 UnloadSceneAsync: 새로운 라이트 프로브 데이터가 추가되거나 제거될 경우, Unity는 사면체 테셀레이션을 자동으로 업데이트하지 않습니다. 이는 계산 자원 소모가 큰 작업이기 때문입니다.
따라서, Unity는 needRetrasemorization
이벤트를 통해 라이트 프로브 데이터를 재사면체화할 시점을 결정합니다.
데이터 재사면체화 필요
여러 씬을 한 번에 로드할 때, 각 씬마다 데이터를 재사면체화하지 않고 모든 씬이 로드된 후에만 한 번 재사면체화하는 것이 효율적입니다. 예를 들어, 5개의 씬을 로드한다면, 각 씬을 로드할 때마다 계산하는 것보다 모든 씬이 로드된 후에 계산하는 것을 선호합니다.
데이터 업데이트 강제화
Unity가 최신이 아닌 사면체화된 테셀레이션을 통해 계산을 수행하면, 새로 로드된 라이트 프로브가 게임 오브젝트에 제대로 적용되지 않을 수 있습니다. 이런 경우, LightProbes.Tetrahedralize()
또는 LightProbes.TetrahedralizeAsync()
를 호출하여 업데이트를 강제로 수행할 수 있습니다.
성능 관리
라이트 프로브의 수가 많을수록 CPU에 미치는 영향이 커집니다. 이는 여러 씬을 로드하거나 언로드할 때 성능 저하를 일으킬 수 있습니다. 따라서 콘텐츠를 특정량 로드 또는 언로드할 때까지 업데이트를 미루는 것이 권장됩니다.
주요 메서드 요약
메서드 | 설명 |
---|---|
LightProbes.CalculateInterpolatedLightAndOcclusionProbes() | 라이트 프로브의 조명 및 가림 효과를 계산 |
LightProbes.GetInterpolatedProbe() | 인터폴레이션된 프로브 정보를 반환 |
LightProbes.Tetrahedralize() | 사면체화를 강제로 수행 |
LightProbes.TetrahedralizeAsync() | 비동기 사면체화를 강제로 수행 |
결론
Unity의 라이트 프로브와 씬 로딩 시스템은 게임의 조명 품질을 높이는 데 중요합니다. 효율적인 데이터 업데이트와 성능 관리를 통해 최적의 비주얼 경험을 제공할 수 있습니다. 이 가이드를 참조하여 효과적으로 라이트 프로브를 활용해 보세요.