#Missing Forward Passes

1 messages · Page 1 of 1 (latest)

void shale
#

HI all!

We recently upgraded a project from 6000.1.8f1 to 6000.2.13f1 and are now encountering a really strange issue in our builds (across multiple platforms).

Some of our shaders are not being drawn in the normal draw opaque/transparent phase of rendering. I have confirmed the correct shader variants are compiled at build time, but for whatever reason only some of them get compiled at runtime. And if I make a build with only a single object which uses a single shader that is known to be faulty, the opaque drawing phase of rendering is just completely skipped, as if Unity thinks there is nothing to draw. However the shader rendering and depth drawing phases work, and Shadow Caster/Depth Normals variants are compiled at runtime.

I have tried creating a new project on the same version of Unity, but it does not exhibit the same issue, even after doing the following:

  1. Exporting the URP asset and Universal Renderer Data asset from the faulty project into the working project.
  2. Matching Player, Graphics, and Quality settings between the two projects.
  3. Exporting a prefab whose shader is known to be missing in the faulty project to the working project (displays fine there with correct passes included).
  4. Using Addressables on both projects to make sure it wasn't some new addressable related issue. In any case, there are shaders which are included with the player build which are also not working, and shaders which are included with addressables that are working.
#

What else can we try? It can't be a shader specific issue because even the standard URP/Lit shader does not work correctly. It's not a 3rd party renderer feature issue, because we have matched those between projects, and also tried completely disabling them all in the faulty project. Addressables have been fully rebuilt after most changes to ensure their shaders are re-created.

It doesn't seem to be something related to URP or project settings, unless I've missed some. Next I will probably try doing dif compares between these settings to see if there isn't some hidden setting that was left behind in the faulty project's settings after the upgrade. I will also try re-creating the URP assets from scratch, however I am not hopeful that either of these actions will help.

#

_ _
If anyone has experienced this before, or has an idea on what could be going on, please let me know!!

Thank you.

void shale
#

More information:

I created a test scene in the faulty project using a single rock asset which I know is not getting the correct shader variants in the build. The rock shows fine in editor but is not showing in builds. I confirmed that the variants are correctly being included in the build.

Using Frame Debugger, the issue is evident. The Draw Opaque objects pass is simply not being executed!! How can this be?

normal zinc
#

This is all in package code. You can look at the source code and set breakpoints wherever the render graph is supposed to execute this pass

#

That is really weird though

void shale
maiden burrow
void shale
# maiden burrow First I'd double check that the build is using the same quality settings as the ...

Hey, thank you for your suggestion.

I have just discovered that I was wrong about the shader variants not being stripped.

My confusion was due to the fact that Unity reports the shader stripping for each shader in multiple different places in the build log.

The message I was looking at was just a report on how many variants were left after the built in stripping processed the shader.

There was another message in the log that showed the final count after scriptable build stripping, and that count was 0.

Form that I debugged and found a 3rd party asset which had been sitting in our project unused for months, but which must have somehow been "re-activated" automatically after the upgrade.

I am still testing but I have confirmed this asset was stripping variants and the cause of at least some of the issues.

distant dragon
#

In my experience upgrading especially from tech stream versions breaks stuff in mysterious ways
Render pipeline assets can get corrupted internally also
And 6.1. and 6.2. in particular have just been nightmarishly buggy