(Oculus Quest) Enabling URP Opaque Texture makes transparent shaders and UI disappear

Unity 2019.4.16 LTS, URP 7.5.1

I have a transparent ShaderGraph shader which uses the Scene Color node to make a simple distorted transparency effect. Once I enable “Opaque Texture” in the URP settings, the shader works as expected in the editor (first pic) but when compiled to Oculus Quest (either model 1 or 2) it is totally invisible- plus all the UI is invisible, which is the same issue in this thread . Also, all the standard transparent shaders are invisible, in my case Lit, Simple Lit, Baked Lit- none of that shows up anymore.
About the UI, I only use the integrated one without any custom shader.

Once I untick Opaque Texture in the URP settings, everything is back to normal, UI and default shaders work again, but of course the shader using Scene Color node doesn’t look as it is meant to be (but it still works).

As far as I can remember, this bug was already here since 2019.3. I also tested 2020.1 and 2020.2, and the same identical thing happens. In case of 2020.2, enabling Opaque Texture totally killed the framerate and made UI look like a glitchy mess (second pic).

EDIT: turns out if I disable MSAA from the URP settings, UI and transparent shaders render fine, even those with Opaque Texture… Performance takes a huge hit though, even on Quest 2. I definitely need MSAA in my game so this doesn’t look like a solution.

2 Likes

Did you find a solution?

Nope. I ended up never using Opaque Texture and Depth Texture, and kept my project on Unity 2019.4 due to performance issues with later versions.

1 Like

Same here, Unity 2021.3.14f1. At least I’m glad to hear that the problem is not just on my side.

On Quest hardware, you REALLY don’t want to do this, anyways. The depth and opaque textures require doing a full screen blit (and a resolve) which are both very expensive due to the tiled architecture of mobile hardware. Depending on resolution and format, you’ll likely lose a ms or two just in the creation of these textures.

IIRC this issue is resolved as won’t fix because it is a driver issue. Issuetracker link here: Unity Issue Tracker - [XR][Oculus GO][Oculus Quest][URP] Shader doesn't render when MSAA is enabled on Multiview

It only manifests when using GLES + MSAA + Multiview + Pipeline switches to other RTs after targeting the eye textures, such as the opaque texture blit case. Recommendation is to avoid this use case on Quest.

3 Likes