Develop
Develop
Select your platform

PC-VR Testing and Performance Analysis

Updated: Sep 4, 2024
This guide describes basic testing and performance analysis for PC-VR development in Unreal.
VR application debugging is a matter of getting insight into how the application is structured and executed, gathering data to evaluate actual performance, evaluating it against expectation, then methodically isolating and eliminating problems.
When analyzing or debugging, it is crucial to proceed in a controlled way so that you know specifically what change results in a different outcome. Focus on bottlenecks first. Only compare apples to apples, and change one thing at a time (e.g., resolution, hardware, quality, configuration).
Always be sure to profile, as systems are full of surprises. We recommend starting with simple code, and optimizing as you go - don’t try to optimize too early.

Performance targets

Before debugging performance problems, establish clear targets to use as a baseline for calibrating your performance.
These targets can give you a sense of where to aim, and what to look at if you’re not making frame rate or are having performance problems.
Below you will find some general guidelines for establishing your baselines, given as approximate ranges unless otherwise noted.
PC
  • 90 FPS for Oculus Rift OR 80 FPS for Oculus Rift S
  • 500-1,000 draw calls per frame
  • 1-2 million triangles or vertices per frame
For more information, see:

Unreal Profiler Tool

The Unreal Editor provides a built-in Profiler Tool that provides performance metrics for your app.
Meta has added the ‘System Metrics’ section of the Profiler Tool to provide real-time VR specific metrics.
The following metrics are available-
  • App CPU Time (ms)
  • App GPU Time (ms)
  • Compositor CPU Time (ms)
  • Compositor Dropped Frames
  • Compositor GPU Time (ms)

Usage - CPU or GPU Bound

The first step of the performance optimization is often determining if the bottleneck is on the CPU or GPU. This can be difficult to determine on applications because of difficulty obtaining GPU timing. When the application is running with the Profiler Tool, you are able to read the GPU cost to both the application and the VR compositor. If the total GPU time is close or equal to the frame time, the application is likely GPU bound. Otherwise, the bottleneck is CPU.

PC-VR Performance HUD

The Performance Heads-Up Display (HUD) is an important, easy-to-use tool for viewing timings for render, latency, and performance headroom in real-time as you run an application in an Oculus Rift headset. The HUD is easily accessible through the Oculus Debug Tool provided with the PC SDK. You may activate it in the Viewport by pressing the ~ key.
For more details, see the Performance Heads-Up Display and Oculus Debug Tool sections of the Developers Guide.

PC-VR Performance Guide

For a deep discussion of performance optimization techniques with the native PC-SDK, which provides a lot of generally useful performance optimization information that can also apply to Unreal Engine applications, please seePerformance Optimization Guide.

PC-VR Compositor Mirror

The compositor mirror is an experimental tool for viewing exactly what appears in the headset, with Asynchronous TimeWarp and distortion applied.
The compositor mirror is useful for development and troubleshooting without having to wear the headset. Everything that appears in the headset will appear, including Home, Guardian boundaries, in-game notifications, and transition fades. The compositor mirror is compatible with any game or experience, regardless of whether it was developed using the native PC SDK or a game engine.
For more details, see the Compositor Mirror section of the PC SDK Guide.

Additional Third-Party Tools

ETW and GPUView
Event Tracing for Windows (ETW) is a trace utility provided by Windows for performance analysis. GPUView view provides a window into both GPU and CPU performance with DirectX applications. It is precise, has low overhead, and covers the whole Windows system.
In some cases ETW and GPUView may be useful for debugging problems such as system-level contention with background processes. For a detailed description of how to use ETW with our native Rift SDK, see VR Performance Optimization Guide in our PC SDK Developer Guide. Not all of the content will be relevant to the Unreal developer, but it contains a lot of applicable conceptual material that may be very useful.
Systrace
Reports complete Android system utilization. Available here: http://developer.android.com/tools/help/systrace.html
NVIDIA NSight
NSight is a CPU/GPU debug tool for NVIDIA users, available in a Visual Studio version and an Eclipse version.
Mac OpenGL Monitor
APITrace

Other Resources

For detailed information about Quest development, go to:

Contact

Our Support Center can be accessed at https://www.meta.com/help/quest/.
Did you find this page helpful?