Quest 2 Performance loss 2020.3 -> 2021.3

Is there any known performance regression in URP v12 with Quest builds?

Same scene from 2020.3 urp 10.9 to 2021.3 urp v12 uses 15% more gpu with nothing else changed. Toggled off additional items added in v11 / v12 as well.

Using Oculus XR Plugin, OpenGL and Vulkan both don’t matter, same issue.

1 Like

Just patched URP 10.9 into 2021.3.4 and the performance came back. So definitely a URP 11 or 12 issue.

I have seen others with similar experiences. A bug report might help

Yes definitely make a bug report and include a project where it’s happening so they can reproduce it.

1 Like

Any news on this?

In my brief testing URP 14 is even more sluggish comparison to URP10… I have a project where it’s literally 100% more costly on URP14 than URP10 on Quest 2 while using stripped down URP settings - using same 2022.2 engine version.

This is totally bonkers. Wish Unity would do device perf testing with Quest in general.

How did you manage to get 10.9 running on 2021.3? Setting the package in manifest reverts the core and shadergraph packages back to 12.1.6

You can, for example, remove the packages from the manifest and add them manually in the Packages folder.

You can make older versions work on newer engine versions by manually placing the package file into your project folders Packages folder. Some change are required to make the thing work properly due to API change so it’s not always just direct swap. As example when running 10.9 on 2021.2+ you need to do vsync fix for Quest for example, otherwise you just get like 33fps on build.

Btw any packages you put in packages folder always override the manifest, so editing manifest to remove the other versions isn’t mandatory step (altho it’s cleaner that there are no duplicates even if they aren’t loaded).

Due to horrible perf on newer URP versions on Quest, I’ve started just backporting select features to URP10 to see which ones are still feasible to use with it. I have for example backported reflection probe blending + box projection PRs to it and it seems to have negative impact on perf even if you don’t use the feat. I can only imagine there are plenty of similar things on newer URP versions that just degrade the perf despite you never setting the new features enabled from URP asset etc.

4 Likes

I have similar issues on my URP builds. Would you be willing to share a repo of your implementation of URP?

My repo is currently quite WIP since I still keep experimenting with things here and it also has application spacewarp which adds extra if you don’t use it, sharing it in current state isn’t ideal. Also API fixes vary from version to another meaning the version I’ve set to work for 2022.2 wouldn’t necessarily work out of the box in 2021.3.

I can share the steps how to make 10.9 run on any newer Unity version though:

  • Close Unity editor and wipe whole Library folder from your project to clean the previous shader etc cache
  • Get SRP packages for 10.9. You need ALL of the SRP packages you plan to use, not just URP because PM probably can’t install old dependencies for you. This means you need core, urp and sg packages and potentially vfx graph if you use it (but this one has extra things to fix on newest Unity so would avoid it for now if going with URP10)
  • Put the packages on Packages -folder (or put file ref to manifest that points to your local git repo holding the graphics packages)
  • Do this change to fix vsync on Quest:
  • open project again and hit “yes” to all prompts from Unity, be it for upgrading materials or for updating API changes
  • there will be some warnings of some API deprecation but things will still work, you don’t have to update all these unless you really want to

and of course if you need application spacewarp, you also need to merge the oculus provided branch for it

4 Likes

Thanks, I’m also using SpaceWarp in my current branch pulled from Oculus-VR/Unity.Graphics/2021-spacewarp (if I remember correctly) and I think the vsync problem is already addressed in their branch; correct me if I’m wrong. By the way, did you manage to run any XR plugin other than 2.0.0-pre.1 and 3.0.0-preview.1? Those 2 are the only ones that work for me but they don’t support symmetric projection which has caused my app to freeze if I use more than one camera (strangely)

I noticed that you are setting framerate here @ 300. I’m wondering if that will help me with my issue where in the newer unity versions ( > 2019.x) the FPS is locked for rift as well. Thanks for the screenshot!

Edit: didn’t work. I’m on a newer version and it’s already set to 0 and 300. Man, why else would it be locked to 90?

Just to be clear this wasn’t my own code, it’s based on similar change Unity made on newer URP versions.

Bump.

Can we get someone from Unity to respond?

This is crazy that we just removed URP completly from our game and just that bosted the game performance to a 100%
literally twice framerate than we got with URP on quest, and even using postprocessing and more things

seems that unity is just making everything slower each time, we also downgraded to unity 2020.1.0f1 and got like another 80% performance increase

just downgrading
so in total we got like a +260% wich is like a x3.6 in performance

so so crazy, not using URP anymore, and with a big fear of updating unity because of this :confused:

2 Likes

An update from my end, somehow FPS has gone back to 90 on URP 12 (2021.3 LTS). Don’t know exactly what caused it as I have made lots of changes + switched to custom shaders. Performance on a custom render pipeline was much better than URP, but I’ll be sticking with URP for the while.

Also like to add that I can only run Vulkan, OpenGL never worked for me on URP.
I’d consider Vulkan and URP very experimental at this point for VR.

Hello, could you shade the exact urp version and unity version you have currently? it would help to know also what version of Input system you do have, thanks!

I’ve tried the latest

I’ve tried the latest one from package manager which shows as (12.1.7) but I’ve shifted to the Oculus SpaceWarp branch (12.1.6) and both are working well. Unity version is 2021.3.5f1 LTS, but it was working with 2021.1.16 as well, and might with some others. Important thing to note is that I can only run Oculus XR plugin 2.0.0-preview.1 and 3.0.0-pre.1. No other version works for me. Input system is 1.3.0 but is not used in my project.

Urp 12 does work on quest, but uses more gpu cycles with the same feature set enabled as urp 10. Don’t let the illusion of it “working” fool you. You’re losing gpu budget if you’re on 2021.