December 19, 2017

4.19에서 이루어질 VR 해상도 구성의 획기적인 변화

저자: Sam Deiter

다가오는 언리얼 엔진 4.19 릴리즈에서, 언리얼 엔진 4 가상현실(VR) 프로젝트의 렌더링 해상도 설정에 사용되었던 콘솔 변수에 변경이 가해졌습니다. 이 새로운 변경 사항은 언리얼 엔진 4가 지원하는 모든 VR 플랫폼 전반에 걸친 VR 프로젝트의 해상도 조정을 간소화시켜주지만, 안타깝게도 지금껏 제작된 모든 언리얼 엔진 4 VR 프로젝트의 하위 호환성은 깨지게 됩니다. 다음은 이번 변경 사항이 VR 프로젝트에 어떻게 영향을 미치는지, 그리고 4.19로 업그레이드하면서 이 변경 사항이 일으킬 수 있는 퍼포먼스 하락은 어떻게 고칠 수 있는지에 대한 설명입니다.

4.18 및 그 이전 버전에서의 HMD 해상도 결정

언리얼 엔진 4의 이전 버전에서는 엔진이 VR 프로젝트를 주어진 HMD 화면에 렌더링 할 해상도를 결정하는 데 Screen Percentage 콘솔 변수(r.ScreenPercentage)를 사용했습니다. 이 변수가 VR 프로젝트의 해상도를 통제하는 타당한 방법이기는 했지만, 각 HMD에 필요한 서로 다른 스크린 퍼센티지의 양에 어느 정도의 숫자를 활용해야 할지는 약간 어림짐작을 해야 했습니다. 그 이유는 r.ScreenPercentage 콘솔 변수가 HMD에 이상적인 해상도가 아닌, 디스플레이 창의 해상도에 따른 퍼센티지를 사용해서 렌더링 해상도를 통제하고 있었기 때문이었습니다. 우리가 이런 방법을 선택했던 이유에 대해 더 자세히 알아보시려면, VR 및 AR 테크니컬 디렉터 닉 와이팅(Nick Whiting)의 프레젠테이션을 확인해 보시기 바랍니다.

지원 HMD는 각각 조금씩 다른 창 해상도와 왜곡 함수를 가지고 있기 때문에, r.ScreenPercentage의 설정은 기기에 따라 달라질 수 밖에 없습니다. 즉 어떤 값이 특정 HMD에서는 잘 작동할지 몰라도, 똑같은 값이 다른 HMD에서는 그렇게 좋아보이지 않을 수도 있다는 것입니다.

4.19 및 그 이후 버전에서의 HMD 해상도 설정

우리는 상황을 쉽게 만들기 위해서, 4.19 버전부터 vr.PixelDensity이라는 새 콘솔 변수를 추가했습니다. 이 변수는 현재 사용중인 HMD에게 이상적인 해상도의 값을 1로 설정해 정규화한 값으로 통제할 수 있습니다. 낮은 값은 더 빠른 퍼포먼스를 보여주지만 낮은 샘플링이 될 것이고(더 흐릿한 화면), 값이 1을 넘어가면 퍼포먼스는 더 느리지만 높은 샘플링(더욱 또렷한 화면)이 될 것입니다. 앞으로는 여러분의 VR 프로젝트의 HMD 컴포지터에 주어진 해상도 조절에 항상 vr.PixelDensity을 사용하고 r.ScreenPercentage는 100으로 설정하십시오. 다음 표는 예전의 r.ScreenPercentage 값들이 각각 새로운 vr.PixelDensity 콘솔 변수로 변환되었을 때, 다양한 HMD에서 이상적인 해상도로 보여지는 예입니다.
VRBlogScreenPerToVRPixel_1.jpg

PixelDensity_Chart.PNG

보시다시피 모든 HMD의 vr.PixelDensity 값은 1로 설정되어 있어, 각 HMD는 이 값에서 이상적인 해상도로 실행된다는 것을 알려줍니다. vr.PixelDensity 사용에 따르는 또 다른 장점은 논리적으로 이해가 되는 값들을 사용해 VR 프로젝트의 해상도를 쉽게 증가 혹은 감소시킬 수도 있다는 점입니다.

그려지는 픽셀의 숫자 = 2 x HMD의 이상적인 너비 x HMD의 이상적인 높이 x (vr.PixelDensity)²

예를 들어 VR 프로젝트를 렌더링하기 위한 픽셀의 숫자를 20% 만큼 줄이고 싶다면, vr.PixelDensity=1-0.2로 구성하면 됩니다. VR 프로젝트를 렌더링하기 위한 픽셀의 숫자를 20%만큼 늘리고 싶다면, vr.PixelDensity=1+0.2를 입력하면 됩니다.

r.ScreenPercentage에서 vr.PixelDensity로의 이전

r.ScreenPercentage 콘솔 변수를 조절하는 코드를 개발한 적이 있다면, 이 코드가 vr.PixelDensity을 대신 사용하고 r.ScreenPercentage 콘솔 변수는 기본값인 100으로 되돌려주어서, 4.19와 그 이후 버전으로 업그레이드 할 때 발생할 수도 있는 잠재적인 퍼포먼스 문제들을 피하시기 바랍니다. r.ScreenPercentage 콘솔 변수에 대한 레퍼런스를 vr.PixelDensity로 교체하는데 실패할 경우, 필요한 픽셀보다 더 많은 픽셀을 렌더링하게 되어 상당한 퍼포먼스 하락이라는 결과를 불러올 수 있습니다.(이것은 아무도 원하지 않는 결과입니다!)

이런 변경을 가할때는 기본 설정인 vr.PixelDensity=1이 4.18의 r.ScreenPercentage=100보다 큰 해상도를 지정하므로, 상당한 퍼포먼스 테스트가 필요하다는 사실을 염두에 두시기 바랍니다. 아래는 언리얼 엔진 4 프로젝트에 이런 변경을 가할 수 있는 다양한 방법들 중 몇가지 사레입니다.

블루프린트 구성:

VRPixelDensity_BP_Commandline.jpg

INI 구성: