WinCNT

VR기기(Oculus Quest 2)에서 GPU Utilization(GPU U)가 FinalBlit에서 급격히 오르는 이슈 본문

Unity/Unity 개발 중 발생한 이슈 정리

VR기기(Oculus Quest 2)에서 GPU Utilization(GPU U)가 FinalBlit에서 급격히 오르는 이슈

WinCNT_SSS 2023. 7. 4. 14:05

발생한 이슈

처음 VR기기(Oculus Quest 2)로 간단한 테스트용 씬을 만들었을 때 발생한 이슈를 정리해봤다

딱히 무거운 처리가 없는데도 불구하고 VR기기에서 실행해보면 GPU Utilization(GPU U)가 95 언저리에, FPS도 상당히 떨어진 상태였다


이슈 상세

프레임 디버그를 살펴보면 FinalBlit 이전까지는 GPU 사용량이 정상적이지만, FinalBlit에서 갑자기 90퍼 이상으로 급증했다

FinalBlit 이전

FinalBlit 단계


발생 원인

Oculus XR Plugin의 OptimizeBufferDiscards라는 설정이 있는데

이 설정에 체크를 안 한 것이 원인인 것 같다

 

왜 체크를 안 해서 해당 이슈가 발생했는지까지는 아직 조사하지 않았다

참고로 해당 설정에 대한 설명은 다음과 같다(유니티에서 발췌)

💡 Optimize Buffer Discards If enabled, the depth buffer contents will be discarded rather than resolved and the MSAA color buffer will be resolved rather than stored after rendering. This is a performance optimization that can possibly break rendering effects that sample from the depth buffer, such as camera stacking. Vulkan only.

대충 깊이 버퍼도 해상도에 맞추기 전에 삭제하고, MSAA 색상 버퍼도 렌더링하고 삭제한다는 말인가?

URP의 기능 중 하나인 Camera Stacking을 못 쓸 수 있다는 건 좀 걸리는데…


해결법

아무튼 프로젝트 세팅의 OptimizeBufferDiscards을 체크하니 이슈가 해결되긴 했다

 

FinalBlit 이전

 

FinalBlit 단계

FinalBlit에서도 GPU 사용량이 올라가지 않은 것을 볼 수 있었다

그런데 성능 최적화를 통해서 해결된 건 맞긴 한데, 이게 근본적인 원인이었을까?

OptimizeBufferDiscards를 사용하면 URP의 Camera Stacking이 안 될 수도 있다고 하던데…

일단 염두는 해두자


마무리

어떻게 해결은 했지만 찜찜함은 남는다…

더 조사한다면 Oculus XR Plugin나 VR에서의 깊이 버퍼, MSAA를 조사하면 되려나?


참고 자료

About the Oculus XR Plugin | Oculus XR Plugin | 3.2.2

 

About the Oculus XR Plugin | Oculus XR Plugin | 3.2.3

About the Oculus XR Plugin The Oculus XR Plugin enables you to build applications for a variety of Oculus devices including the Rift, Rift S, Quest, Quest 2, and Quest Pro. Supported XR plugin subsystems Display The display subsystem provides stereo render

docs.unity3d.com