XR 퍼포먼스 기능

다양한 XR 퍼포먼스 최적화 관련 정보입니다.

Choose your operating system:

Windows

macOS

Linux

XR의 높은 렌더링 요구사양으로 인해 새로운 XR 전용 렌더링 모드와 다수의 퍼포먼스 최적화가 언리얼 엔진(UE)에 도입되었습니다. 여기서는 관련 기능에 대해 알아보고 UE XR 프로젝트에서 각 기능을 사용하는 방법을 살펴보겠습니다.

가변 레이트 셰이딩 및 고정 포비티드 렌더링

가변 레이트 셰이딩(Variable Rate Shading, VRS) 은 신형 GPU에서 지원되는 기능으로, 렌더 타깃(또는 타깃)에서 픽셀의 셰이딩 레이트를 조정하기 위한 여러 메서드를 제공합니다. 모든 구성에서 디폴트 셰이딩 레이트는 1:1입니다. 즉, 픽셀 셰이더 호출 1개가 화면의 타깃 픽셀 1개에 적용됩니다. VRS를 사용하면 1x2, 2x1, 2x2, 2x4, 4x2, 4x4 등 다른 셰이딩 레이트를 지정할 수 있습니다. 예를 들어 2x2 셰이딩 레이트의 경우 단일 픽셀 셰이더 호출로 2x2 픽셀 그룹(픽셀 4개)이 표시되며, 4x4의 경우 단일 픽셀 셰이더 호출로 4x4 그룹(픽셀 16개)이 표시됩니다.

셰이딩 레이트는 머티리얼별로 적용되거나 셰이딩 레이트 이미지 어태치먼트(티어 2 VRS)를 통해 적용될 수 있습니다.

고정 포비티드 렌더링(Fixed Foveated Rendering) 은 VR 헤드셋에서 이미지 기반 VRS를 활용하여 타깃의 셰이딩 레이트를 조정하고 뷰 경계에 근접할수록 셰이딩 레이트를 줄이는 기술입니다. 광학 디스토션으로 인해 GPU는 이미지 모서리에 근접할수록 더 많은 양의 픽셀 디테일을 제거하게 됩니다. 따라서 이미지 중앙으로부터 멀어질수록 셰이딩 레이트를 줄이는 VRS 이미지를 적용하여 눈에 띄는 이미지 퀄리티 저하가 거의 없이 퍼포먼스를 향상할 수 있습니다.

고정 포비에이션은 다음과 같이 컴퓨트 셰이더를 통해 생성된 어태치먼트를 사용합니다.

FixedFoveation.jpg

양쪽의 중앙(검은색) 영역은 각 스테레오 뷰의 중앙에 해당하며, 어두운 영역일수록 셰이딩 레이트가 높습니다. 검은색은 풀 레이트(1x1, 픽셀당 1회의 픽셀 셰이더 호출), 진한 빨간색은 x와 y 양쪽에서 하프 레이트(2x2, 픽셀 4개당 1회의 픽셀 셰이더 호출), 연한 빨간색은 쿼터 레이트(4x4, 픽셀 16개당 1회의 픽셀 셰이더 호출)를 나타냅니다.

VRS 어태치먼트가 베이스 패스와 투명 패스에 적용된 초기 결과는 상당한 가능성을 보입니다. 현재 이 기능은 아직 개념 증명 단계에 있으며 베이스 패스와 투명 패스 외에 다른 곳에도 적용될 수 있습니다.

프로젝트 세팅

VRS 세팅에 액세스하려면 메인 메뉴에서 편집(Edit) > 프로젝트 세팅(Project Settings) 으로 이동합니다. 그런 다음 프로젝트 세팅 창에서 엔진(Engine) > 렌더링(Rendering) > VR 로 이동합니다.

vrs-settings.png

콘솔 변수

사용 가능한 콘솔 변수는 다음과 같습니다.

변수

설명

r.vrs.Enable

엔진 전체에서 VRS(머티리얼 기반 VRS 및 모든 활성 이미지 기반 VRS)를 활성화하거나 비활성화합니다.

r.VRS.EnableImage

이미지 기반 VRS만 활성화하거나 비활성화합니다. 머티리얼 기반 VRS는 활성화되어 있고 지원되는 경우 계속 작동합니다.

vr.VRS.HMDFixedFoveationLevel

HMD 고정 포비티드 렌더링 퀄리티 및 퍼포먼스 세팅입니다.

vr.VRS.HMDFixedFoveationDynamic

고정 포비에이션 레벨이 GPU 활용도에 따라 조정되는지 여부를 활성화하거나 비활성화합니다.

알려진 제한 사항

  • DirectX 12 및 VRS 티어 2가 지원되는 Windows 디바이스, Vulkan 및 VK_KHR_fragment_shading_rate 익스텐션이 지원되는 Windows 디바이스, Oculus Quest에서만 사용 가능합니다.

  • NVIDIA의 DLSS와 호환되지 않습니다.

  • 아이 트래킹된 포비티드 렌더링은 현재 지원되지 않습니다.

인스턴스드 스테레오

인스턴스드 스테레오 렌더링(Instanced Stereo Rendering)은 UE에서 XR의 퍼포먼스 영향을 줄이도록 돕기 위해 도입되었습니다. 이 기능은 편집(Edit) > 프로젝트 세팅(Project Settings) > 엔진(Engine) > 렌더링(Rendering) > VR 에 있는 인스턴스드 스테레오(Instanced Stereo) 옵션을 체크하면 활성화됩니다.

VR 세팅에서 활성화된 인스턴스드 스테레오

이미지를 클릭하면 전체 크기로 표시됩니다.

인스턴스드 스테레오(Instanced Stereo) 렌더링을 활성화한 후에는 엔진을 재시작하고 셰이더를 다시 컴파일해야 합니다. 베이스 패스(pass) 및 얼리-z 패스(pass)는 이 기능이 켜진(직렬 및 병렬 렌더링 패스(path) 둘 다) 스태틱 메시, 스켈레탈 메시, 스프라이트 파티클, 메시 파티클에서 작동합니다. 인스턴스드 스테레오 는 현재 PC(DirectX)와 PS4에서 작동하며 다른 플랫폼은 4.11 초기 릴리즈 이후 지원될 예정입니다. 다음은 VR에서 표준 스테레오 렌더링과 인스턴스드 스테레오 렌더링을 비교하는 비디오입니다.

모바일용 멀티 뷰 지원

지원되는 특정 모바일 디바이스에서는 이제 VR 멀티 뷰(VR Multiview)를 사용할 수 있습니다. 모바일 멀티 뷰(Mobile Multiview)는 데스크톱 PC에서 사용할 수 있는 인스턴스드 스테레오 렌더링과 비슷하며, 모바일 디바이스의 CPU에서 스테레오 렌더링에 최적화된 패스를 제공하는 방식으로 작동합니다. 이 기능을 활성화하는 방법은 다음과 같습니다.

이 기능은 실험단계 기능이므로 최신 Mali 기반 GPU에서만 작동합니다. 이 기능의 완성도가 높아짐에 따라 온라인에서 지원되는 모바일 디바이스가 늘어나면 이 경고가 없어질 것입니다.

  1. 메인 툴바에서 편집(Edit) > 프로젝트 세팅(Projects Settings) 으로 이동하여 에디터의 프로젝트 세팅을 엽니다.

  2. 그런 다음 엔진(Engine) > 렌더링(Rendering) > VR 로 이동하여 모바일 멀티 뷰(Mobile Multi-View) 옵션을 찾습니다.

  3. 모바일 멀티 뷰 옵션을 활성화하고 언리얼 엔진을 재시작하여 변경 사항을 적용합니다.

    VR 세팅에서 모바일 멀티 뷰 활성화하기

Android 빌드 세팅을 다음과 같이 구성해야 이 기능을 사용할 수 있습니다.

  • Android > 빌드(Build) 섹션에서 OpenGL ES2 지원(Support OpenGL ES2) 을 활성화합니다.

  • 모바일 HDR(Mobile HDR)인스턴스드 스테레오 렌더링(Instanced Stereo Rendering) 을 모두 비활성화합니다.

  • 현재 모바일 멀티 뷰는 최신 Mali 기반 GPU에서만 작동합니다.

  • 이 기능을 켜고 프로젝트를 패키징했는데 호환 GPU가 없으면 런타임에서 해당 기능이 비활성화됩니다.

포워드 렌더링

ForwardRenderingBanner.png

기본적으로 언리얼 엔진 4 는 Deferred Renderer (디퍼드 렌더러)를 사용하는데, 유연성이 높고 보다 많은 렌더링 기능을 소화할 수 있기 때문입니다. 하지만 그에 따르는 디퍼드 렌더러의 단점으로 인해 모든 VR 체험에 적합하지는 않을 수도 있습니다. Forward Rendering (포워드 렌더링)은 보다 빠른 렌더링 패스로 보다 빠른 기반을 제공하기에 VR 플랫폼에서 더 나은 퍼포먼스를 보일 수 있습니다. 포워드 렌더링은 빠를 뿐만 아니라, 디퍼드 렌더러보다 나은 안티에일리어싱 옵션이 제공되어 보다 산뜻한 비주얼을 낼 수 있습니다.

이 기능에 관한 자세한 내용은 포워드 셰이딩 렌더러 문서를 참고하세요.

퍼포먼스 프로파일링

VR에 사용하기에는 너무 비싼 에셋을 트래킹하려면 프로젝트 진행 기간에 CPU와 GPU에서 프로젝트가 무슨 작업을 하는지 최대한 많이 프로파일링해야 합니다.

  • GPU 프로파일링(GPU Profiling) - GPU 프로파일러를 활성화하려면 프로젝트가 실행 중일 때 Ctrl + Shift + ,(쉼표 키) 를 누르기만 하면 됩니다. 이렇게 키를 누르면 아래 이미지와 비슷한 새 창이 표시됩니다. GPU 시각화 툴

  • CPU 프로파일러(CPU Profiler) - CPU에서 프로젝트가 무슨 작업을 하는지 프로파일링하는 것은 GPU 프로파일링보다 조금 복잡합니다. 자세한 방법은 퍼포먼스 프로파일러 문서를 참조하세요.

포스트 프로세스 세팅

VR의 높은 렌더링 요구사양으로 인해 기본적으로 활성화된 고급 포스트 프로세싱 기능 다수를 비활성화하지 않으면 프로젝트에 퍼포먼스 문제가 발생할 수 있습니다. 프로젝트에서 고급 기능을 비활성화하는 방법은 다음과 같습니다.

  1. 포스트 프로세스(Post Process, PP) 볼륨이 없으면 레벨에 추가합니다.

  2. PP 볼륨을 선택하고 포스트 프로세스 볼륨(Post Process Volume) 섹션에서 무한 규모(언바운드)(Infinite Extent (Unbound)) 옵션을 활성화하면 PP 볼륨의 세팅이 전체 레벨에 적용됩니다.

    포스트 프로세스 볼륨의 언바운드 옵션 활성화하기

  3. 포스트 프로세스 볼륨세팅(Settings) 을 펼친 다음 각 섹션을 살펴보며 해당 프로퍼티를 활성화하여 모든 활성 PP 세팅을 비활성화합니다. 프로퍼티를 클릭한 다음 디폴트값(보통 1.0)을 0 으로 설정하여 기능을 비활성화하면 됩니다.

    렌즈 플레어 강도를 활성화하고 0으로 설정하기

    이 작업을 수행할 때 각 섹션에서 모든 프로퍼티를 0으로 설정할 필요는 없습니다. 그보다는 렌즈 플레어, 스크린 스페이스 리플렉션, 템포럴 AA, SSAO, 블룸 등 퍼포먼스에 심각한 영향을 미칠 수도 있는 기능부터 비활성화하는 것이 좋습니다.

태그