게임 개발/Unreal Engine

[UE5] 루멘(Rumen)

지노윈 2023. 3. 23. 22:17
반응형

루멘은 특별한 하드웨어 가속 없이도 실시간으로 사용 가능한 완전한 다이나믹 글로벌 일루미네이션 기능을 제공합니다. 이전에는 사실적인 간접광 표현에 큰 제약이 있었습니다. 정적인 GI를 위해 라이트 맵 베이킹을 하거나 인위적인 보조광을 배치해야 했습니다. 하지만 이제 루멘을 사용하면 현실과 같은 방식으로 빛을 다룰 수 있습니다.

 

루멘에서는 스카이 라이트를 사용하여 대기에서 산란되는 태양광으로 지상 전체를 골고루 밝혀주는 느낌을 낼 수 있습니다. 스카이 라이트는 그림자도 지원하기 때문에 동굴에 뚫린 틈으로 동굴을 비추는 GI 효과를 구현할 수 있습니다.

볼륨 메트릭 포그와 반투명 재질의 GI를 지원하며, Emissive 머터리얼에서 발생되는 라이팅의 GI도 지원합니다. 

반사된 표면에도 동적인 GI가 적용됩니다.

기존의 박스라든지 스피어 리플렉션 캡처는 필요하지 않게 되었습니다.

 

Rumen 사용하기

정교한 간접광이 필요한 경우 : Detail Tracing

성능을 좀 더 중요시 여길 때는 : Global Tracing

밀도를 조절할 수 있습니다.

 

메시 디스턴스 필드

루멘에서 사용되는 기본적인 트레이싱 방식은 소프트웨어 레이 트레이싱 방식입니다. 간접광 정보를 빠르게 얻기 위해 디스턴스 필드를 사용하는데, 이는 메쉬의 가장 가까운 평면까지의 거리값을 가지는 3D 텍스쳐입니다. 이전 버전의 UE4에서도 디스턴스 필드는 엠비언트 어클루젼을 위해 사용되었습니다.

하지만 UE5에서는 디스턴스 필드의 해상도와 캐시 효율성, 빌드 타임 등이 크게 향상되었습니다. 현재는 스태틱 메쉬만이 지원되기 때문에, 캐릭터에 반사되는 간접광은 다른 방식으로 처리되고 있습니다.

메시 디스턴스 필드는 Project Setting에서 트레이싱 모드가 Detail Tracing으로 설정되었을 경우 짧은 거리에서 사용되며, 글로벌 디스턴스 필드는 메시 디스턴스 필드보다 좀 더 단순화된 형태로 하나로 합쳐져 있습니다. 정식 출시 시에는 랜드스케이프에 대한 디스턴스 필드도 지원될 예정입니다.

 

표면 캐시(루멘 씬)

디스턴스 필드에는 단순히 거리 정보만 있기 때문에, 주변 표면의 파라미터 정보를 담아서 표면 케시를 만들어 간접광 계산을 합니다.

표면 캐시를 얻기 위해서는 인스턴스마다, 오브젝트를 감싸는 가상의 카드를 만들어 파라미터 정보를 캡처하고 직접광과 간접광을 계산합니다. 이렇게 구한 정보를 표면 캐시에 저장하게 됩니다.

이 과정에서 나나이트의 멀티 랜더링 덕분에, 각 오브젝트 마다 6방향으로 렌더링을 해야 하는데 빠르게 처리가 가능했습니다.

하지만, 너무 큰 오브젝트는 표면 캐시가 생성되지 않으므로 건물과 같은 경우에는 여러개의 메쉬로 사용해야 합니다.

디스턴스 필드는 루멘 씬을 만들기 위해 표면 캐시 정보를 담아서 저장하며, 글로벌 디스턴스 필드는 정밀한 간접광이 필요하지 않은 경우에 사용할 수 있습니다.

 

메쉬의 디스턴스 필드를 시각화

'표시 > 시각화 > 메시디스턴스 필드'를 통해 메시 디스턴스 필드를 시각화 할 수 있습니다.

다음은 시각화된 모습입니다.

필드는 '표시 > 시각화 > 글로벌 디스턴스 필드'를 통화 시각화 할 수 있습니다.

오브젝트의 낮은 해상도를 쉽게 찾아볼 수 있습니다.
해상도가 낮아 보이는 의자의 스태틱 메쉬를 열어서 조절할 수 있습니다.

 

스크린 트레이스

스크린 트레이스는 저해상도의 디스턴스 필드에서 발생하는 트레이싱 결과의 문제를 보완하는 데 사용됩니다. 카메라에서 200m 거리까지는 표면 캐시와 스크린 트레이스가 함께 사용됩니다. 그 이상 먼 거리에서는 스크린 트레이스만 활성화됩니다. 또한 스크린 트레이스는 디스턴스 필드가 적용되지 않는 스켈레탈 메쉬에도 적용이 가능합니다.

 

다음 이미지는 강한 직접광을 캐릭터에서 반사된 빛이 주변에 분홍색으로 물드는 컬러 브리딩 현상을 볼 수 있습니다.

스크린 트레이스의 단점으로는, 화면 밖에 있거나 화면 내에 있지만 보이지 않는 오브젝트에 대해서는 계산이 불가능 하다는 것이 있습니다.

 

루멘의 기본 레이 트레이싱 방식

UE5의 루멘은 스크린 트레이싱, 디테일 트레이싱, 글로벌 트레이싱, 디스턴스 씬 등 다양한 방식을 선택적으로 사용하고 있습니다. 이는 성능과 퀄리티 사이의 균형을 맞추기 위한 것입니다. 각 방식은 서로 부족한 부분을 상호 보완하며, 최종적으로 우수한 그래픽 퀄리티를 제공합니다.. 

 

소프트웨어 트레이싱 제한사항

아주 빠른 GI 처리를 가능하게 하는 소프트웨어 트레이싱은 특별한 하드웨어 없이도 사용할 수 있어 편리합니다. 하지만 아직 개발이 진행 중이며 개선이 필요한 부분도 있어 주의가 필요합니다.

스태틱 메시는 나나이트가 없어도 사용할 수 있지만, 인스턴스드 스테틱 메시는 나나이트 없이는 성능 이슈 때문에 사용이 불가능합니다.


메시 디스턴스 필드의 해상도는 임포트 당시의 스케일에 따라 할당되기 때문에, 레벨에 배치된 이후에 스케일이 조절될 경우 충분한 해상도를 갖지 못할 수 있습니다. 이러한 문제는 대부분 스크린 트레이스로 보완됩니다.

 

하드웨어 레이 트레이싱

루멘의 하드웨어 레이 트레이싱 방식은 반투명한 오브젝트와 거울 같은 반사를 더욱 사실적으로 렌더링할 수 있습니다. 하지만, 하드웨어 레이 트레이싱에서는 폴리곤 수가 많아지면 성능이 저하될 수 있으므로 주의가 필요합니다.

나나이트가 적용된 하이 폴리곤 메쉬를 그대로 사용하면 비용이 많이 들기 때문에 하드웨어 레이 트레이싱에서는 나나이트 프록시 메시를 대상으로 트레이싱합니다.

또한, 인스턴스 개수의 제약이 있는데 그 수가 10만 개 이하의 장면에서만 사용 가능합니다. 프록시 메시에서 부정확한 셀프 오클루전 문제가 발생할 경우, 스태틱 메시에서 Proxy Triangle Percent 값을 올리면 해결할 수 있습니다.

루멘에서 하드웨어 레이 트레이싱을 사용하려면 '사용 가능한 경우 하드웨어 레이 트레이싱' 옵션을 선택해야 합니다. 이 방식은 표면 캐시를 대신하여 실제 삼각형을 트레이싱하므로 반사와 같은 요소를 보다 사실적으로 렌더링할 수 있습니다.

Lumen Reflections의 퀄리티를 "마법의 숫자"라고 할 수 있는 4로 설정하면, 루멘 씬 대신 히트 쉐이더가 사용되며, 머터리얼과 직접 광이 샘플링된 결과가 반사 표면에 나타나게 됩니다.

다음과 같이 좀더 사실적인 리플렉션을 볼 수 있습니다.

  • 루멘 리플렉션 퀄리티 3 : 히트 셰이더 사용, 머티리얼 샘플링
  • 루멘 리플렉션 퀄리티 4 : 히트 셰이더 사용, 머티리얼 + 직접광 샘플링
  • 러프니스가 0.4 미만인 머티리얼은 루멘 리플렉션 트레이싱에 추가 레이가 필요

특정 오브젝트의 간접광을 끄고 싶다면 다음의 옵션을 해제하여 제외 시킬 수 있습니다.

하드웨어 레이 트레이스는 Affect Dynamic Indirect Lighting을, 소프트웨어 레이 트레이스는 Affect Distance Field Lighting을 on/off할 수 있습니다.

 

간접광이 보이지 않거나 너무 강할 경우, 알베도 맵의 'RGB Curve'를 수정하여 그 정도를 조절할 수 있습니다. 이를 통해 텍스처를 직접 수정하지 않고도 원하는 결과를 얻을 수 있습니다.

파이널 게더

이번에는 루멘 씬에서 최종적으로 화면으로 빛이 전파되는 과정, 즉 파이널 게더에 대해 알아보겠습니다. 하드웨어 레이 트레이싱과 소프트웨어 레이 트레이싱 모두 불투명한 재질에 대해서는 동일한 파이널 게더를 사용합니다. 그러나 대규모 장면에서 노이즈가 발생하는 경우가 있으며, 이는 계속해서 개발이 진행되며 개선될 예정입니다.

루멘 씬은 여러 프레임에 걸쳐 계산되기 때문에 15프레임으로 강제로 낮출 경우 잔상이나 노이즈가 발생할 수 있습니다. 따라서 프레임이 안정적으로 유지될 수 있도록 신경 써야하며, 갑작스러운 장면 전환의 경우 페이드인 처리가 필요할 수 있습니다. 또한 프로젝트의 퀄리티를 조절하기 위해 파이널 게더 퀄리티 옵션을 사용할 수 있습니다. 이 값을 높일수록 퍼포먼스 비용이 증가하므로, 퀄리티와 비용 사이에서 적절한 값을 찾는 것이 중요합니다.

 

 

https://www.youtube.com/watch?v=laCeIFasZsg