TLDR: Per bug #1246818, lodBias values defined in QualitySettings.asset are still consumed by HDRP projects, but the reciprocal of the value appears to be used. This is bad for people upgrading to HDRP 7.2, since those people probably now have incompatible lodBias values in their QualitySettings.asset.
Edit: I also opened #1247000: HDRP LOD Bias Mode of “Override Quality Settings” actually multiplies by Quality LOD bias. It seems that even when you choose “Override Quality Settings”, for LOD Bias Mode, it still divides the value entered by whatever is set in lodBias in QualitySettings.asset.
I’m running into two serious problems with LOD in a project I’ve recently migrated from Unity 2019.1 to 2019.3. I’m also confused by some of the recent changes to LOD in HDRP.
The patch notes for HDRP 7.2 include the following: “Hide unused LOD settings in Quality Settings legacy window.”
However, under Rendering section of the HDRP Default Settings, I see the following:
So, these default settings allow me to use the LOD Bias specified in the Quality settings, yet the LOD Bias was removed from Quality settings? I don’t understand that. The LOD Bias is still stored in my QualitySettings.asset file. If I edit it, I can see the lodBias values ranging from 0.3 for worst settings to 2 for Ultra. And if I switch between Quality settings, I can see the LOD Bias on the HDRP Default Settings change to match that value.
So, if the LOD Bias value from Quality is still being used by the system, why can we no longer edit it? Are we supposed to edit it somewhere else? For a brand new project, the LOD Bias still appears in QualitySettings.asset, but it’s just set to 1 for all quality levels.
So, what’s going on here, and how are we supposed to be editing LOD bias per-quality level in 7.2+?
It also seems that having “legacy” LOD values in the Quality settings of anything other that “1” really hoses LOD. An easy way to see this is to set up an object with LOD, then (with the project closed) edit the LOD value in the QualitySettings.asset to some value other than 1. Reopen the project, and you should find that the LOD mesh swap occurs at highly unexpected values that don’t see particularly related to the specific bias that I picked. For example, a bias of “2” feels more like how a bias of 0.2 should probably feel. I made a video of this. It shows LOD work normally when the Quality level’s lodBias is “1”. But when the lodBias is “2”, everything goes wonky with the LOD:
What I’ve noticed is that the lodBias value in the Quality settings appears to cause it to try to swap meshes at the given percentage times the lodBias, which seems to be the inverse of how lodBias is supposed to work. So, in my video I have the LOD steps set to LOD1 at 51%, LOD2 at 30%, and Culled at 10%. But with lodBias at “2”, I believe the result is that it’s doubling these values for the transitions. That is, it’s trying to go to LOD1 at 102%, LOD 2 at 60%, and culled at 20%.
So, it seems that the system still has some dependencies on the current Quality level’s lodBias. But other than manually editing the QualitySettings.asset file outside of Unity (while Unity is closed), there’s no way to change the lodBias for the various quality levels. I ended up reporting the issue with inverted use of LOD bias as bug #1246818.
Another problem: If I add a new Quality level to my project, it adds it with a lodBias of “2”, which means it adds it in a broken state, since any LOD bias other than “1” doesn’t work correctly in HDRP right now. Also, if I delete QualitySettings.asset, then open the project, Unity will recreate the default Quality settings, with 6 quality levels, with lodBiases ranging from 0.3 to 2. So, in other words, Unity is still trying to create non-1 lodBiases in the Quality settings.