To clarify, in build the Auto setting needs to default to using Screenspace for platforms that don’t support it (like OpenGL), but it’s not. Was wondering why I was getting an error from the decal feature of the render pipeline on every Update cycle, even when my scene had zero decals.
It would also be great if Unity could seriously add some “only report this error once” de-spamming in their code now and then, but maybe they laid off that engineer.
Try these to fix this problem:
First, set the Quality in the Project Setting to “Ultra”.
Then, change the BatchRendererGroup Varients in the Project Setting To “Strip All”.
And set the settings:
I am using shader graph. Using the frame debugger I can see that the decals are being rendered to the DBUFFER in the build, but the regular lit shaders don’t get the DBUFFER keyword so the decals are never applied.
I still need to try updating my URP version (I’m on 14.0.8) but I found that commenting out StripUnusedFeatures_DecalsDbuffer in ShaderScriptableStripper.cs in the URP fixed the issue. As far as I can tell ShaderBuildPreprocessor.cs properly detected ShaderFeatures.DBufferMRT3 so I don’t know why it’s still stripping it, but I’ll look into this more later.
same here, 70-80% of my android users support vulkan, so it’s a no go to use the decal solution. It’s not documented, though that makes it stranger, it might be a bug, but layered decals aren’t working for OPENGL. I tried with a clean new project to test it, and I can confirm it. It might happen to people to develop with vulkan enabled in the editor, and then find out that opengl only android users see the decals projected to every layer. I don’t have time to report it. The issue was found with URP 14.0.11 and unity 2022.3.45f1
Besides the rendering layers (also called decal layers or light layers), URP also doesn’t support Deferred rendering path on OpenGL, and probably no one knows why.