URP performance on quest and can we have a core VR template for URP?

Hi,

When creating a new project, there’s a VR template that uses the standard pipeline.
Because I want to use URP I used the 3D URP Core template and then added the xr related plugins and set up the settings to run on quest 2 but even with an empty scene with nothing but a plan I can’t get to even 60FPS.
I tried changing a lot of graphics settings to increase performance including deleting post processing volume, changing to multiview, but didn’t succeed yet to get to 70 or even 60FPS yet.

I am sure I can find the settings causing this lag, but if we can have an optimized core VR template for URP, it would help reduce time to start creating a lot.

Thank you for advance.

1 Like

Any updates on this?

bumping thread

VR template does sound like a good idea. There’s VR samples for HDRP and URP, but no templates yet. I imagine in a world where Unity’s upper management doesn’t constantly fire people, that there would be a staff member available to repurpose to do that.

Sadly doesn’t seem like it.

5 Likes

That was surprisingly and refreshingly HONEST.

There’s a ton of default settings that will wreck performance on quest 2. Some things to watch out for:

  • don’t bother using any URP shader. they’re all too slow. make your own, from scratch. it’s seriously the only way.
  • don’t use shadows, just give up on this front, accept it.
  • if you bake shadows, accept that you can only have very simple shaders and work around it. You should not be sampling more than 4 textures per material, max. baking lighting = 2 of those textures already used up (lightmap + shadowmap).
  • turn off all post processing. by default, having any at all will disable foveated rendering, which will immediately destroy performance even on empty scenes.
  • ensure render scale = 1.0. do not touch this at runtime. this will destroy foveated rendering otherwise
  • do not use clip()/discard in any shader, it will destroy the low res z rejection stuff on quest hardware (a big optimization if you can keep this working)
  • do not use transparency, period. if you absolutely need it, ensure it’s 1 object that never overlaps another transparent object, and ensure it’s unlit.
  • ensure all your shaders are SRP batching compliant.

there’s a lot more, but this is the gist of it.

3 Likes