There is a new beta feature that introduces mipmap streaming. This allows Unity to unload higher resolutions of textures incase you run out of VRAM (or if you exceed the configured budget).
This is beneficial, since it allows it to unload textures it doesn't need, similar to how LODs work for meshes.
The "priority" feature allows you to override the mipmap level. For example, if you set the priority to "1", it will prioritize those textures and lower others until the budget is met. For Avatars, this is disabled and defaults to "0" to prevent abuse.
> Unity removes a mipmap level of a lower-priority texture every time it considers textures at that priority or higher. For example, if you set one texture to a Priority of 1 and another texture to a Priority of 5, Unity might remove four mipmap levels [of a lower-priority texture] before it considers the second texture.
Earlier today, I found that someone made a script that not only allows you to automatically enable mipmap streaming on all of your world's textures (good), it also sets their priority to
1
(not good).
I hope I don't really need to explain why that's a bad thing. But basically: If the World is set to priority 1, it will bias ALL world textures before it makes adjustments to avatars.
As an extreme example: If you have 6 GB of VRAM and the world uses 3 GB, that means you have a 3 GB budget for avatars. If you have 80 avatars at 100 MB each, that means it will drop all those avatars down until it fits into the budget. Given the rule of 1/4 (where each drop in resolution is 1/4 the size of the previous higher res), it means we'd need to drop the avatars down by 1 resolution step from where they are intended to be. Now imagine all of the unoptimized avatars that have 200-500 MB+ of texture memory, not including mesh memory or other VRAM usage.
If all of the priorities were set to "0", mipmap streaming would work as intended, regardless of the scenario or context. It would load the higher resolutions if you are closer to an object, and unload further away ones.
Please consider disabling priority to be managed by creators for worlds as well, and set the default of all to 0.