[Unreal Engine] 7) Lumen
https://docs.unrealengine.com/5.0/ko/lumen-global-illumination-and-reflections-in-unreal-engine/
Lumen Lighting System
실시간 글로번 일루미네이션 : 빛의 반사 까지 표현하는 방식으로, 벽에 빛이 반사되어 그림자같은 어두운 부분까지 밝아지는 것
기존에는 움직이는 오브젝트의 음영이 빛의 반사가 표현이 되지 않았는데,
Lumen Lighting System은 움직이는 빛의 반사가 표현이 된다.
간접광에 대한 정보를 빠르게 얻기 위해 디스턴스 필드에이트레싱을 진행
루멘의 기본 레이 트레이싱 방식
- 스크린 트레이싱
- 표면 캐시에서 발생되는 불일치를 보완하기 위해 가능한 경우 스크린 트레이싱이 우선 적용
- 풀 트라이앵글 메시와 디스턴스 필드 사이의 불일치를 완화 (캐릭터 GI 지원)
- 스크린 스페이스 트레이싱이기 때문에 화면 밖 오브젝트는 표현이 불가능
- 디테일 트레이싱
- 부호화된 디스턴스 필드를 대상으로 레이 트레이싱
- 첫 2미터까지의 트레이싱에서 높은 퀄리티를 위해 메시의 디스턴스 필드를 트레이싱
- 글로벌 트레이싱
- 디테일 트레이싱이 아닌 경우 빠른 성능을 위해 글로벌 디스턴스 필드를 트레이싱(200미터 이내 거리)
- 디스턴스 씬
- 카메라에서 200m ~ 1km 거리까지 표면 캐시 너머의 먼 거리를 트레이스하기 위한 기능
- 야외 원거리 환경에서 태양광으로부터의 단일 바운스를 얻음
- 태양으로부터 저 해상도 리플렉티브 섀도 맵을 얻고 파이널 게더 과정에서 트레이싱
- 아직 실험기능
이러한 루멘은 특별한 하드웨어 없이도 글로벌 일루미네이션을 처리하지만 제한사항 존재
- 스태틱 메시, 나나이트가 사용된 인스턴스된 스테틱 메시와 계층구조 인스턴스드 스태틱 메시 지원
- 스켈레탈메시와 월드포지션 오프셋 미지원 (스크린 트레이스로 보완)
- 랜드스케이프는 현재 루멘씬에서 표현되지 않음
- 디스턴스 필드는 반투명 머티리얼을 무시하고, 마스크드 머티리얼을 불투명으로 취급
- 레이트레이싱은 모듈식 제작된 레벨을 필요로함. 벽, 바닥, 천장이 별도의 메시여야함
- 라이트 누수를 피하려면 벽 두께가 10cm 이상이여야함.
하드웨어 레이 트레이싱
반투명한 오브젝트 또는 거울과 같은 랜더링을 좀 더 사실적으로 하기위함
- 디스턴스 필드로 구성되는 표면캐시 대신 실제 삼각형을 트레이싱 하기 때문에 폴리곤 수가 많아지면 성능 저하
- 따라서 나나이트 메시의 경우 프록시 메시를 트레이싱
- RTX-2000 또는 RX 6000 이상의 카드 필요
- 인스턴스 개수 10만개 이하의 장면에서 사용 가능
디스턴스 필드란?
메시의 가장 가까운 표면으로의 거리값을 저장한 3D텍스처로,
스태틱 메시 지원, 나나이트 메시일 경우 HISM도 지원
형태가 변형되는 스켈레탈 메시 또는 월드포지션 오프셋 미지원
2미터 이내로 가까운 거리를 트레이싱할 때 사용됨
표면캐시 (루멘 씬)
루멘은 표면 캐시라는 주변 씬의 표면에 대한 파라미터를 자동으로 생성,
씬에서 레이가 닿는 지점의 라이팅을 빠르게 확인할 때 사용
루멘은 각 메시의 머티리얼 프로퍼티를 여러 각도에서 캡처하고,
표면 캐시가 머터리얼 프로퍼티로 채워진 뒤, 루멘이 패당 표면 위치의 직접광과 간접광을 계산한다.
표면캐시를 디스턴스필드에 담아 루멘씬을 만들고,
루멘씬을 여러 프레임에 거쳐 누적되어 사용
스크린 트레이스
저해상도의 디스턴스 필드에서의 트레싱 결과에서 나타나는 문제점을 보안함
카메라의 200미터 거리까지는 표면캐시와 스크린 트레이스가 함께 활성화
이외의 200미터 거리보다 먼 거리는 스크린 트레이스만 활성화
스켈레탈도 지원