원문 : Lumen Technical Details | 언리얼 엔진 문서 (unrealengine.com)
[ ] : 역자 코멘트
공식 한국어 번역이 진행되기 전이라 개인적으로 파악 겸 번역했습니다.
루멘은 글로벌 일루미네이션과 리플렉션을 솔브하기 위해 여러 레이트레이싱을 사용합니다. 스크린 트레이스가 먼저 진행되고, 믿을만한 다른 방법들이 뒤따릅니다.
루멘은 소프트웨어 레이트레이싱을 사용하는데, Signed Distance Field(이하 SDF)를 기본으로 사용하지만 하드웨어 레이트레이싱이 활성화되면 RT가 지원되는 GPU에서는 더 높은 퀄리티를 얻을 수 있습니다.
[ SDF 에 대한 설명은 포스트 하단 참고 링크를 확인하세요. ]
메모
루멘의 글로벌 일루미네이션과 리플렉션의 주된 목표는 차세대 콘솔에서 대규모 오픈 월드를 60프레임으로 구현하기 위함입니다. 엔진의 High 옵션은 루멘의 60프레임을 위한 설정이 포함되어있습니다.
루멘의 두번째 주안사항은 차세대 콘솔에서 깔끔한 인도어 라이팅을 30프레임으로 유지하는 것입니다. 엔진의 Epic 옵션은 차세대 콘솔에서 글로벌 일루미네이션과 리플렉션은 내부 해상도를 1080p로 렌더링하고 Temporal Super Resolution으로 네이티브 4K 퀄리티로 업샘플링 할 때, 프레임 당 대략 8 밀리세컨드(ms)의 시간이 걸립니다.
서피스 캐시
루멘은 서피스 캐시라고 부르는 씬 표면 근처의 파라미터그룹을 자동으로 생성합니다. 이는 씬 안에 레이가 맞은 포인트에서의 라이팅을 빠르게 룩업하기 위해 사용됩니다. 루멘은 메시마다 여러 각도에서 머티리얼 프로퍼티를 캡쳐합니다. 이 캡쳐 위치들(Cards라고 부릅니다.) 각각의 메시마다 오프라인으로 생성됩니다. (미리 생성) r.Lumen.Visualize.CardPlacement 1 콘솔 커맨드로 시각화해 볼 수 있습니다.
나나이트는 메시 캡쳐를 가속화하는데 이는 서피스 캐시가 트라이앵글 베이스의 씬과 동기화되는 것을 유지시켜줍니다. 특히, 하이 폴리 메시인 경우 효율적으로 캡쳐하기 위해 나나이트 메시를 사용해야 합니다.
서피스 캐시가 머티리얼 프로퍼티로 채워진 다음, 루멘은 이 서피스 포지션들에 대해 직접광과 간접광을 계산합니다. 이 업데이트는 여러 프레임에 걸쳐서 분할되어 상환되는데, 많은 다이나믹 라이트와 멀티 바운스 글로벌 일루미네이션을 효율적으로 지원합니다.
[ 여러 프레임에 나누어 계산하고 적용된다는 뜻입니다. ]
메모
언리얼 엔진은 서피스 캐시와 Cards 표현을 위한 시각화 도구를 제공합니다. 하단의 루멘 시각화 옵션 부분을 참고하세요.
경고
간단한 인테리어 메시만 적용됩니다. 벽이나 바닥, 천장은 따로따로 분리된 메시여야합니다. 큰 단일 메시를 임포트하면 루멘의 장점을 살리지 못하고 의도대로 동작하지 않을것입니다.
스크린 트레이싱
루멘은 먼저 스크린으로 레이들을 날려봅니다. ( 스크린 트레이싱 또는 스크린 스페이스 트레이싱이라고 부릅니다.) 이 때 히트가 감지되지 않거나, 표면 뒤쪽으로 레이가 지나갈 경우에 더 믿을만한 메서드들을 사용하지 않습니다. 스크린 트레이싱은 어떤 지오메트리 유형도 지원하고, 루멘 씬과 트라이앵글 씬의 싱크 깨짐을 커버하는데 유용하게 쓰입니다.
스크린 트레이싱을 사용할 때의 단점은 이미시브 부스트나 간접과아 스케일을 위한 라이팅 프로퍼티같이 간접광에만 영향을 주는 아트 디렉션을 구체화하는데 큰 제약이 있다는 것입니다.
아래 장면에서 소프트웨어 레이트레이싱은 스크린 트레이싱을 먼저 사용한 후, 믿을만한 높은 비용의 트레이싱 옵션을 사용하게 됩니다. 만약 글로벌 일루미네이션과 리플렉션을 위한 스크린 트레이싱이 꺼져있다면, 루멘 씬만을 볼 수 있습니다. 스크린 트레이싱은 루멘씬과 트라이앵글 씬의 싱크 깨짐을 해결하는데 도움을 줍니다.
[ 루멘을 위한 씬은 저해상도로 그려지기 때문에 리플렉션에 바로 사용하면 러프니스가 0에 가까워도 뭉개진 듯한 반사를 관찰할 수 있습니다. 그래서 루멘 씬(라이팅용 서피스캐시)과 실제 렌더링되는 씬을 동기화해 정교하게 보이도록 보정해주는 기능에 대한 설명입니다. ]
[ 아래 그림에서는 중앙에 위치한 조형물의 반사를 관찰하시면 차이를 느낄 수 있습니다. ]
루멘 레이 트레이싱
루멘은 언리얼 엔진 5에서 2가지 레이트레이싱 옵션을 지원합니다. 하나는 소프트웨어 레이트레이싱이고, 다른 하나는 하드웨어 레이트레이싱입니다. 소프트웨어 레이트레이싱은 다양한 하드웨어와 플랫폼에서 사용이 가능하고, 하드웨어 레이트레이싱은 RT가 가능한(RT코어 보유 또는 RTX2000 번대 이상의 비디오 카드) 비디오 카드가 있어야 사용가능합니다.
소프트웨어 레이트레이싱
루멘은 SDF를 기본으로하는 소프트웨어 레이트레이싱을 사용합니다. 이 트레이싱 표현은 셰이더 모델 5(SM5)을 지원하는 아무 하드웨어서나 지원되며, 프로젝트 설정에서 메시 디스턴스 필드 생성(Generate Mesh Distance Field) 옵션만 켜주면 사용가능합니다.
렌더러는 메시 디스턴스 필드를 글로벌 디스턴스 필드에 병합해서 트레이싱을 가속화합니다. 기본으로, 루멘은 정확도를 위해 첫 2m는 각 메시의 디스턴스 필드를 이용해 트레이스하고, 나머지 레이는 병합된 글로벌 디스턴스 필드를 사용해 트레이스합니다. 극도로 많은 인스턴스가 오버래핑된 프로젝트에서는 루멘이 소프트웨어 레이트레이싱을 사용해 트레이스하도록 프로젝트 설정에서 조절할 수 있습니다.
루멘의 소프트웨어 레이트레이싱은 두 가지 옵션이 있습니다.
- 디테일 트레이싱은 기본적으로 사용되는 방법입니다. 첫 2m는 정확도를 위해 개별 메시의 디스턴스 필드를 트레이스해 높은 퀄리티를 얻고, 나머지 레이는 글로벌 디스턴스 필드를 사용해 트레이스합니다.
- 글로벌 트레이싱은 빠른 트레이싱을 위해 글로벌 디스턴스 필드를 사용해서 트레이싱합니다.
메시 디스턴스 필드는 카메라가 월드를 따라 움직이면서 거리에 따라 안과 밖으로 스트리밍됩니다. 메시 디스턴스 필드들은 레이트레이싱을 위해 하나의 아틀라스로 패킹되어있고, r.DistanceFields.LogAtlasStats 1 콘솔 커맨드를 사용해서 결과 스탯을 볼 수 있습니다.
루멘의 소프트웨어 레이트레이싱 퀄리티는 종종 메시 디스턴스 필드의 퀄리티에 따라 달라질 수 있습니다. 메시 디스턴스 필드와 글로벌 디스턴스 필드의 시각화 옵션은 뷰포트 보기 > 시각화 메뉴에서 확인할 수 있습니다.
어떤 메시들은, 얇은 표면이 좋은 디스턴스 필드를 만들지 못해 빛샘을 일으킬 수 있습니다. 메시 디스턴스 필드 시각화를 통해 이런 문제들을 발견해 낼 수 있습니다.
디스턴스 필드 표현을 개선하는 방법에는 2가지가 있습니다. 프로젝트들은 프로젝트 전체에 영향을 미치는 디스턴스 필드 복셀 밀도(Distance Field Voxel Density) 옵션 수치를 올려 개선을 도모할 수 있습니다. 또한, 스태틱 메시 에디터에 있는 디스턴스 필드 해상도 스케일(Distance Field Resolution Scale)을 조절하여 소프트웨어 레이트레이싱에서 문제를 일으키는 메시들에 대해서만 옵션을 지정할 수 있습니다. 디스턴스 필드의 해상도나 밀도를 올리는 것은 프로젝트의 크기를 키우게 될 것입니다.
소프트웨어 레이트레이싱의 한계
소프트웨어 레이트레이싱은 프로젝트를 어떻게 작업해야만 할지에 관련해서 가끔 제약사항이 있습니다. 어떤 지오메트리 유형을 사용해야 하고, 머티리얼이 지원되는지를 확인해야하기 때문입니다.
메모
이것은 알려진 문제나 제약의 전체 큐레이션은 아닙니다. 그러나 언리얼 엔진 5 얼리 액세스에서 루멘 소프트웨어 레이트레이싱과 함께 작업할 때 고려해야 할 사항을 주로 나열한 것입니다.
[ 이외에도 제약사항이 다수 있을 수 있음에 대한 경고입니다. ]
지오메트리 제약사항
- 스태틱 메시, 인스턴스트 스태틱 메시, 계층형 인스턴스드 스태틱 메시(Hierarchical SM)만 루멘 씬에서 표현됩니다.
- 랜드스케이프(터레인) 지오메트리는 현재 루멘 씬에서 표현되지 않습니다. 그러므로 라이팅을 반사하지도 않고, 이는 엔진 버전이 업데이트 되면서 추가될 예정입니다.
머티리얼 제약사항
- 월드 포지션 오프셋은 지원되지 않습니다. [ 머티리얼 마스터 노드의 월드 포지션 오프셋 ]
- 트랜스패런트 머티리얼은 디스턴스 필드에 의해 무시됩니다. Masked 머티리얼은 Opaque로 취급됩니다. 이것은 폴리지 같은 유형에서 잎의 넓은 부분이 가려져 있으면 그림자를 그릴 때 상당한 오버섀도우를 일으킵니다.
- 디스턴스 필드는 오버라이드 컴포넌트보다는 스태틱 메시 에셋에 할당된 머티리얼의 프로퍼티에 의해 빌드됩니다. 다른 블렌드 모드를 사용하거나 2사이드(양면) 프로퍼티의 활성화는 트라이앵글 씬과 디스턴스필드의 동기화를 깨트리게 됩니다.
워크플로 제약사항
- 소프트웨어 레이트레이싱은 모듈러 방식으로 메시들이 제작되어야 합니다. 벽과 천장, 바닥은 분리된 메시로 만들어져야만 합니다. 산 처럼 큰 메시는 보기에 꽤 별로인 셀프 오클루전 아티팩트를 발생시킬 것입니다.
- 벽은 10cm 보다 얇아서는 안됩니다. 빛샘현상이 발생할 것입니다.
- 메시 디스턴스 필드 해상도는 임포트되는 스태틱 메시의 스케일에 기반하여 지정됩니다. 작은 크기로 임포트한 메시를 스케일을 키워 월드에 배치하면 적절한 해상도의 메시 디스턴스 필드를 갖지 못하게 될 것입니다. 눈에 띌 정도로 유의미하게 인스턴스의 스케일을 조절하여 월드에 배치했다면 해상도 스케일을 바꾸어 적당히 조절하세요.
- 디스턴스 필드는 과하게 얇거나 단면 메시의 뒷면을 파악해서 표현하지 못합니다. 단면 메시에서 아티팩트를 피하려면 뷰어가 반드시 트라이앵글의 뒷면을 보지 못하게 하세요.
하드웨어 레이트레이싱
하드웨어 레이트레이싱은 소프트웨어 레이트레이싱보다 더 큰 범위의 지오메트리 타입을 지원합니다. 특히, 스켈레탈 메시도 포함합니다. 또한 하드웨어 레이트레이싱은 높은 퀄리티를 위해 스케일업하는데도 유리합니다. 실제 삼각형의 교차하며 레이가 맞은 부분에서 라이팅을 이밸류에이션하는 옵션을 갖고 있습니다. 소프트웨어 레이트레이싱에서는 서피스 캐시에서 낮은 퀄리티의 빠른 룩업을 사용했던 것을 대체합니다. 그러나, 하드웨어 레이트레이싱은 씬 셋업 비용이 꽤 유의미하게 느껴지며, 현재는 인스턴스가 10만개 이상인 씬에서는 사용할 수 없습니다. 스킨드 메시(스켈레탈 메시)처럼 다이나믹하게 디폼되는 메시들 역시 매 프레임 레이 트레이싱 가속 구조를 업데이트 하는데 스킨데시의 트라이앵글 숫자에 비례한 큰 비용이 듭니다.
나나이트를 사용하는 스태틱 메시의 경우, 하드웨어 레이트레이싱은 생성된 나나이트의 프록시 메시에 대해서만 작동합니다. 이 프록시 메시는 스태틱 메시 에디터의 프록시 트라이앵글 퍼센티지 옵션에 의해 생성됩니다. 이 프록시 메시들은 r.Nanite 0 콘솔 커맨드로 시각화 될 수 있습니다.
스크린 트레이싱은 나나이트와 프록시메시로 그려진 풀 트라이앵글 씬과, 레이트레이싱된 루멘 씬과의 미스매치를 가리는데 사용됩니다. 그러나 몇몇 경우에서는 이 미스매치 간극이 숨기기에는 너무나 커지기도 합니다. 이런 경우는 프록시 트라이앵글 퍼센트 옵션을 올려서 이런 부정확한 교차 아티팩트를 줄일 수 있습니다.
[ 프록시 메시가 원본 하이폴 메시와 외형 차이가 크게 나게되면 티가 많이 날 수 있어 정교함 수치를 조금 올려 눈속임을 해야한다는 얘기입니다. ]
루멘은 다음과 같은상황에서 하드웨어 레이트레이싱을 사용합니다.
- 프로젝트의 하드웨어 레이트레이싱 지원 옵션이 활성화 되어 있고, 루멘의 프로젝트 설정에서 하드웨어 레이트레이싱이 사용 가능할 때 사용(Use Hardware Ray Tracing when available) 옵션이 켜져 있어야 합니다. 이 설정은 프로젝트 설정의 렌더링(Rendering) 카테고리에 있고, 바꾼 다음에는 엔진을 재시작해야합니다.
- 프로젝트가 하드웨어 레이트레이싱이 지원되는 RHI, 비디오카드를 갖춘 시스템에서 실행되고 있어야 합니다.
- 윈도우 10과 다이렉트X 12가 설치되어 있어야 합니다.
- 플레이스테이션 5
- 엑스박스 시리즈 S 와 엑스박스 시리즈 X
- 비디오 카드는 반드시 RTX-2000 시리즈나 그 상위 호환 모델, 또는 AMD RX 6000 시리즈나 상위 호환 모델
대규모 월드
루멘 씬은 월드 전체 보다는 카메라 근처의 월드를 중심으로 동작하고, 대규모 월드와 스트리밍을 가능케 합니다. 루멘은 빠른 씬 캡쳐와 서피스 캐시를 관리하기 위해 나나이트의 LOD와 멀티뷰 래스터라이제이션에 의존하며, 모든 작업을 적당히 조절하여 hitches가 발생하지 않도록 합니다. 루멘은 동작하기 위해 나나이트를 필요로 하지 않지만, 나나이트가 활성화 되지 않은 하이폴리메시가 많은 씬에서는 루멘의 씬 캡쳐가 매우 느려질 수 있습니다. 이것은 특히 LOD 설정이 제대로 되어 있지 않는 씬에서 더욱 확실히 발생합니다.
빠른 카메라 움직임은 루멘 씬 업데이트가 실제 카메라가 보는 것보다 뒤처지게 되고, 카메라 움직임이 줄어들어 따라잡히게 되면 간접광이 갑자기 튀어나오게 됩니다.
[ 과도한 모션블러가 적용되었을 때 의도치 않은 급작스러운 움직임이 발생할 때와 비슷한 현상이 관측될 것으로 추측됩니다. ]
루멘 서피스 캐시는 카메라의 위치로부터 200미터 정도를 커버할 수 있습니다. 이를 넘어서면 스크린 트레이싱은 글로벌 일루미네이션만을 위해 동작하게 됩니다.
루멘은 실험적인 서피스 캐시를 지나쳐 트레이스하는 디스턴트 씬 표현이 가능합니다. 이것은 언리얼 엔진 5 테크데모 '나나이트 세계의 루멘'에서 깊은 협곡의 간접조명을 구현하기 위해 사용되었습니다. 이것은 카메라에서 200미터 거리부터 1 킬로미터까지 커버합니다(아래 그림 참조). 태양으로부터의 낮은 해상도의 리플렉티브 섀도우맵을 나나이트를 이용해서 렌더링 하고, Final Gather가 태양의 간접광을 한 번의 바운스를 수집하는 동안 헤이트 필드를 트레이싱 하는 방식으로 동작합니다. 이 디스턴트 씬 표현은 중요하지만, 아직까지는 프로젝트에서 적극 사용하기 위해 많은 추가 개발이 필요합니다.
루멘의 다른 제약사항
- 루멘의 글로벌 일루미네이션은 라이트맵의 정적 조명과 함께 사용할 수 없습니다. 루멘 리플렉션은 라이트맵에서 글로벌 일루미네이션과 함께 작업될 수 있도록 확장될 것이고, 렌더 퀄리티를 올릴 수 있는 방법을 제공할 것입니다.
- 폴리지는 얼리액세스 단계에서 제대로 지원되지 않습니다. 렌더링 할 때 다운 샘플 렌더링과 임시 필터에 대한 의존도가 높아 제외되었습니다.
- 루멘의 Final Gather는 움직이는 물체 근처에 노이즈와 아티팩트를 유발할 수 있고, 계속해서 개선 작업 중입니다.
- Translucent 머티리얼은 루멘 리플렉션이 지원되지 않습니다.
- Translucent 머티리얼은 높은 퀄리티의 다이나믹 글로벌 일루미네이션을 지원하지 않을 것입니다.
성능
루멘은 기본적으로 Epic 옵션으로 차세대 콘솔 플랫폼에서 1080p 해상도 30 프레임을 기준으로 잡고 (글로벌 일루미네이션과 리플렉션에 8ms사용) 개발되었습니다. 루멘은 언리얼 엔진 4의 Temporal Upsampling과 4k 아웃풋을 뽑아내기 위한 언리얼 엔진 5의 새로운 Temporal Super Resolution 알고리즘에 꽤나 크게 의존하고 있습니다. High 옵션 이하에서는 루멘은 기본적으로 60fps를 타겟으로 하며, Medium이나 Low 옵션에서는 Lumen이 비활성화됩니다.
러프니스가 0.4 이하인 머티리얼은 루멘이 라이팅을 구성할 때 높은 코스트를 요구합니다. 루멘 리플렉션을 제공하기 위해 여분의 레이를 사용하여 트레이싱을 해야 하기 때문입니다.
루멘 지원 플랫폼
- 루멘은 현 세대 콘솔을 지원하지 않습니다. 플레이스테이션 4나 엑스박스 원은 지원 대상이 아닙니다.
- 현 세대 콘솔이나 레거시 PC 하드웨어서 프로젝트들이 동적 조명에 의존하는 경우 Distance Field Ambient Occlusion과 Screen Space Global Illumination의 조합을 사용할 수 있습니다.
- 루멘은 차세대 콘솔(플레이스테이션 5, 엑스박스 시리즈 S / X)와 하이엔드 PC를 위해 개발되었습니다. 루멘은 두 가지 레이트레이싱 옵션을 제공하며 다른 요구사항이 있습니다.
- 소프트웨어 레이트레이싱
- 셰이더 모델 5 이상을 지원하는 DX11를 탑재한 비디오 카드
메모
현재 얼리액세스를 위해 NVIDIA GeForce GTX-1070이나 그 이상 그래픽카드가 요구됩니다. 루멘은 스케일 다운을 위한 많은 옵션이 있지만, 사용을 위해선 아직 많은 개발이 필요합니다.
- 하드웨어 레이트레이싱
- 윈도우 10과 다이렉트 X 12 지원
- NVIDIA RTX-2000 번대 시리즈 또는 상위 호환 모델
- AMD RX-6000 시리즈 또는 상위 호환 모델
- 루멘은 모바일 플랫폼을 지원하지 않습니다. 또한 아직까지는 모바일 렌더러를 위한 동적 글로벌 일루미네이션 시스템을 개발할 계획이 없습니다. 모바일에서 동적 조명을 사용하는 게임들은 섀도우를 캐스팅하지 않는 스카이 라이트를 사용해야합니다.
루멘 시각화 옵션
<이하 생략> 원문 참조
참고 자료 사이트
SDF : Signed Distance Fields :: IT개발노트 (tistory.com)
'Unreal > Articles' 카테고리의 다른 글
언리얼: 튜링 메시 셰이더 블로그 번역 (0) | 2021.06.01 |
---|---|
언리얼: 에인션트의 협곡 골렘 구현 방식 간단 살펴보기 (0) | 2021.05.31 |
언리얼: 언리얼 엔진 5 개인 공부 자료 및 해석 (0) | 2021.05.31 |
언리얼: 메타 휴먼 크리에이터 EA 신청 및 소스 파일 다운로드(MAYA) (0) | 2021.05.31 |
언리얼: Vault Cache 경로 변경하기 (0) | 2021.05.30 |