Copy-pasting a message I left yesterday on the SideQuest developers’ Discord:
Following unexplainable cases of bad performance I’ve been having for a couple months, I’ve been running experiments on my game for the last three hours or so with Unity 2019.4, Unity 2020.2, URP, OpenGL and Vulkan, all on Quest 1. Turns out URP in Unity 2020.2 (which I updated to two months ago) performs way worse than URP in Unity 2019.4- nothing more, that’s it.
I tested the same scene multiple times, initially on 2020.2 then downgrading to 2019.4. The scene only uses built-in URP shaders. Average results: Unity 2020.2 + OpenGL: CPU level 3, ~45% | GPU level 5, ~90% | 72fps mostly stable Unity 2020.2 + Vulkan: CPU level 2, ~45% | GPU level 4, ~85% | 72fps unstable, random dips Unity 2019.4 + OpenGL: CPU level 2, ~45% | GPU level 4, ~80% | 72fps stable Unity 2019.4 + Vulkan: CPU level 2, ~50% | GPU level 4, ~95% | 72fps unstable, random dips
Previous tests on Unity 2020.2 with OpenGL, using only ShaderGraph shaders, resulted in bad framerate and lots of stale frames, but I don’t have test data for it. I still haven’t tried ShaderGraph shaders with Unity 2019 but I will do it in the next days.
I have no idea if this is something specific to my case, but during my time spent on 2020.2 I kept optimizing every single bit out of the game and I still couldn’t make it run as smooth as it was before. I thought it was slow because I was using many custom ShaderGraphs (despite 90% of the fillrate was by Unlit stuff), but I’ve been having this feeling that the issue was just having upgraded to 2020.2 for some time.
I’m glad I decided to try a downgrade. I liked 2020.2, but at this point I will stick to 2019.4 LTS + OpenGL for the time being with this project. I don’t really feel like doing further tests with this, I’ve spent too many hours already on performance debugging.
I’m very glad I found this post, because I was starting to go a bit mad here doing exactly this. I’m working on a desktop VR app using OpenVR and I’ve also seen a massive performance regression on newer versions of URP, with "Late start"s (CPU bottleneck, manifests as stuttering) being reported all over the place by OpenVR. Performance in the editor is particularly bad. I’ve tested lowering my 2020 engine version to get back to URP 9.x and I did see some perf regained. Will try going back to 2019 and see if that improves it further.
Yep, OVR Metrics Tool shows me maxing out GPU at level 4 and struggling with around 65fps using URP and Unity 2020 for Oculus Quest in an empty scene. Switching to Built-In has framerate shooting back up to a stable 90fps and GPU level 2.
Hi guys,
Thanks for sharing! For the openVR/SteamVR performance issue, that is a known regression and we already put up a fix(Unity Issue Tracker - [OpenXR][SteamVR][URP] Performance regression when using URP 11+).
For the Quest performance regression issue, please feel free to submit bug and we will look into it. We have Quest performance test suite running against URP that supposed to catch Quest perf regression issues. I am more than happy to add your use case to the test suite if that is not being covered yet.
Thank you for the reply! Regarding the OpenXR bug, does the staging status on the tracker mean it is not available yet or can one test it via beta/alpha already? I’d love to check it out and see if it helps my case ASAP.
Hi @ThomasZeng I just wanted to bump this discussion and hoping you might be able to help us because it looks like the referenced issue has stalled with no fix making its way back into a 2020 LTS release so far. I think there are several VR devs now that are queuing up hoping for this to be fixed before we can migrate from Unity 2019.4.
same issue here, will a fix be backported to 2020 LTS. we are really suffering from many bugs not being backported. please please … please turn (LTS) Long Term Suffering back to Long Term Support
Lmao thanks for the laugh, I am going to call LTS this way forever. Reflects well how’s been lately with LTS, especially for crucial bigfixes not making into the supported version, but magically making it into experimental versions.
Hey all, dropping a comment here as I was the one who filed the original issue report mentioned on this threads issue tracker link (case 1312513) . Knowing the original issue quite well, I don’t think that issue was in any way related to the issues people are discussing on this thread.
What my original issue report was about (and what was fixed) was that somehow URP frame timing got totally destroyed by some Quest hack in URP’s VR code and they did this quick fix for it: [2021.2] Fixed fogbugz case 1312513 by thomas-zeng · Pull Request #3708 · Unity-Technologies/Graphics · GitHub. This wasn’t some 10-20% perf degrade people are talking on this thread but game literally going from 90 fps to 30 fps crawl while gpu and cpu sat still.
I’ve personally tested (by the time I reported the issue) that URP 10 didn’t have this issue, it was first introduced in UPR 11 (so there’s nothing to backport to 2020.3 LTS regarding this issue). Unity has fixed the reported issue on 2021.1 and 2021.2.
One thing that happened when I upgraded from 2019.4 to 2020.3 was that I needed to update Oculus Integration to work with 2020.3.30.
When updating this it prompted me to use the OpenXR backend in the Oculus Integration instead of the legacy LibOVR and VRAPI backends.
Using the OpenXR backend in the Oculus Integration disabled the extra latency mode (you can see if it’s enabled using OVR Metrics) which caused performance to be worse, switching back to the legacy backends brings me similar performance as in 2019.4.
Not saying that this is the cause for the issues reported above, but just wanted to leave this here in case somebody comes across the thread while googling, I thought it may be helpful to know that.
@Daniiii Thanks man, that really worked for me. I could see the change in the performance.
It’s a lot smoother when switched to the legacy backend.
But for passthrough to work, it requires the OpenXR backend:(
Have you figured out a way to achieve the same performance with OpenXR backend as well with a few changes/tweaks in the settings?
I think that something is limiting the framerate to the half, maybe the new AplicationSpaceWarp? could it be that oculus is forcing the framerate to be half because it things the ASW is enabled, or maybe its in fact enabled but not interpolating?
i say this because it seems to me that its limiting the framerate always to the half
also want to say that the game runs at 120 stable fps on Quest 2 on 2020.1.0f1 (the one im using)
once i update to 2020LTS its keeps the framerate between 30 and 60 which is unaceptable
and i just can not build a debug version on 2020.1.0f1 because seems to be a bug that doesnt let me to build debug builds just release, i could send the profiling data of the build made with 2020LTS, but i can not compare both builds wich is my main problem for identifying this slow down
If you see your framerate splitting to half, it can be just perf regression (if it can’t render at full speed, you get half the framerate with a VR headset).