Updating from 6000.0.63f1 to 6000.0.71f1: Big performance regressions and shader error related to UnityTexture3D

As the title says, we observed two things after updating Unity from 6000.0.63f1 to 6000.0.71f1 in our production project (DX11 / URP):

  1. shader code using UnityTexture3D did not compile anymore (in this case from Unity’s hair package)
  2. we observed a big performance hit (GPU time) on same package after fixing the compile issue (by initializing “hdrDecode” zero values).

Whatever has been fixed in one of the updates between 6000.0.64 and 6000.0.71 completely destroyed GPU performance in our project, and we are struggling to find the reason, as the release notes don’t indicate any breaking changes.

Furthermore, we see even more severe compute performance issues when trying to update to 6000.3.12f1, see this thread:

Edit: Update: DX12 seems to have the same issue, at least regarding the big performance regression, did not test the shader compile issue.

So it turned out the issue is prefab related. Somehow the update messed up our core prefab, and did change multiple properties to default values (in hair package). Even better, I cannot change the values back, after a save they turn back to old values. We had bad issues with Prefab before, and I saw there was a fix for prefabs, but turned out it’s now even worse…

Also this probably does not explain the shader error…

This is a thing. It’s especially a thing with prefab variants if the variant changes a property that got renamed / deprecated by the update.

The best defense is always good source control, then text-diffing the changes made to your prefabs to at least know them and be able to reason about them.

For instance, Unity changed how the dimensions of a box collider are serialized between Unity5 and Unity2018, and this broke how the scene-overrides for my prefab worked, breaking parts of my game with incorrectly-sized colliders, eg, the scene overrides “missed” the properties now that the prefab had been updated.

Sometimes it may be worthwhile to rebuild a prefab completely from scratch, just in case something got tangled in there.

Glad you’re sorted. Source control FTW always!

We use source control of course (Git), but the changes inside the Prefab are so fundamental that it’s impossible to compare! That’s the thing: The “minor” update completely restructured some nested Prefabs. Should not happen without warning.

So this topic is resolved, as the issue is a different one from what I described in the title / first post. It’s basically a mess up of Prefabs by the Unity update. I saw in release notes several fixes for prefab issues; which was indeed a reason why we wanted to update in the first place (as we had issues in updating some prefabs). But apparently, the update did a) not resolve the prefab issues they were supposed to solve and b) messed up our prefabs, resetting some values to values from nested prefabs…