I have been experiencing confounding performance issues when transitioning a VR project from UE4 to UE5. We have managed to get the project operable on high end hardware. (Hardware in Question) However, this is not a realistic hardware requirement to ask of our users, especially given the comparatively simple content in our project.
Recently I ran a series of tests using the VR template from 4.19 and I wanted to share my results here. I am hoping that this might be useful for others, and that others might be able to provide some insights into the issues I have been experiencing. The goal of these tests where to determine if UE5 (5.4 specifically) is suitable for VR development.
I wanted to replicate what I have done with my active project while eliminating as many variables as possible. In order to do this I took the VR template from 4.19 and updated it to 5.4. (The actual project I am working on was gradually brought up version by version throughout the years, but I don’t have the time or hard drive space to replicate this exactly.) Here is a screenshot of the settings at project creation.
After building this project in 4.19 it preformed very well. It capped out at 11ms according to the frontend profiler and Steam VR performance was reporting around 4ms. The hardware for our test device is as follows:
- Intel(R) Xeon(R) W-2125 CPU @ 4.00GHz
- Samsung MZVLB512HBJQ-000L7 SSD
- NVIDIA Quadro RTX 6000 GPU
- 32GB of RAM
On the other hand, when this project has been updated to 5.4 the performance drops significantly. Unreal insights puts it at about 22ms per frame and Steam VR puts it at around 20ms.
On the other hand the 5.4 VR template runs at around according to unreal insights and reads 5.6ms on the Steam VR performance readout.
From this we can assume that even if 5.4 is slightly less performant than 4.19 the difference is negligible and 5.4 should have the capacity to run well enough. One can assume that there is likely something in the project settings for VR that has changed from 4.19 to 5.4 that is preventing the migrated project from performing well.
I decided to go through the project settings to identify any differences. In the project settings to see if there was anything unexpected. Predictably there are some innocuous differences in the setup such as the game mode and input:
Unsurprisingly most differences are in the rendering section. Most differences are unsurprising and simply align with most general VR performance advice, such as the use of forward rendering, the lack of mobile HDR, and the use of MSAA for anti aliasing. Others I’m not sure are consequential like the lack of motion blur, auto exposure, and the separate translucency.
Lastly the D3D12 Targeted Shader Formats are different under the windows platform settings.
I was hoping to spot something unexpected here, but unfortunately I did not. Unless I am overlooking something, most differences here can already be found in the VR best practices or can easily be found while researching optimization. In other words they are things that I have already implemented on my active project.
So I am left wondering, is there something I am missing here? I would love to know if anyone is able to replicate these results. Better yet if anyone as taken a VR project from UE4 to UE5 and of they experienced any similar issues. If so how have they navigated them? Beyond that what is your opinion on using UE5 for VR? We are currently considering an attempt to return to UE4 as our attempts to optimize in UE5 have been met with failure. As you can imagine this is not something I would like to attempt, so any advice or perspective would be appreciated.