From f35b63f292ab37596e067979ce95b8604e38e1a0 Mon Sep 17 00:00:00 2001 From: Nico de Poel Date: Wed, 28 Jun 2023 11:34:28 +0200 Subject: [PATCH] Made undoing of mipmap bias a distinct separate callback, so that it can be overridden by client apps. Skip textures that don't have mipmaps and thus don't have any use for a mipmap bias. --- .../Runtime/Effects/SuperResolution.cs | 4 ++-- .../PostProcessing/Runtime/FSR2/Fsr2Callbacks.cs | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/SuperResolution.cs b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/SuperResolution.cs index 0c8aa39..a053cc7 100644 --- a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/SuperResolution.cs +++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/SuperResolution.cs @@ -240,9 +240,9 @@ namespace UnityEngine.Rendering.PostProcessing } // Undo the current mipmap bias offset - if (!float.IsNaN(_appliedBiasOffset) && !float.IsInfinity(_appliedBiasOffset) && _appliedBiasOffset != 0f) + if (_appliedBiasOffset != 0f && !float.IsNaN(_appliedBiasOffset) && !float.IsInfinity(_appliedBiasOffset)) { - _callbacks.ApplyMipmapBias(-_appliedBiasOffset); + _callbacks.UndoMipmapBias(_appliedBiasOffset); _appliedBiasOffset = 0f; } } diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/FSR2/Fsr2Callbacks.cs b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/FSR2/Fsr2Callbacks.cs index cc384f9..c3c06e1 100644 --- a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/FSR2/Fsr2Callbacks.cs +++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/FSR2/Fsr2Callbacks.cs @@ -42,6 +42,8 @@ namespace FidelityFX /// You may also want to store the bias offset value and apply it to any assets that are loaded in on demand. /// void ApplyMipmapBias(float biasOffset); + + void UndoMipmapBias(float biasOffset); } /// @@ -76,10 +78,23 @@ namespace FidelityFX { CurrentBiasOffset += biasOffset; + if (Mathf.Approximately(CurrentBiasOffset, 0f)) + { + CurrentBiasOffset = 0f; + } + foreach (var texture in Resources.FindObjectsOfTypeAll()) { + if (texture.mipmapCount <= 1) + continue; + texture.mipMapBias += biasOffset; } } + + public virtual void UndoMipmapBias(float biasOffset) + { + ApplyMipmapBias(-biasOffset); + } } }