From 8ca48e06efa6f6c6e94ba5396fb09831de83116f Mon Sep 17 00:00:00 2001 From: Nico de Poel Date: Wed, 5 Jul 2023 13:00:12 +0200 Subject: [PATCH] Refactored mipmap bias callbacks such that the render pipeline integration does not need to maintain any bias offset state. Added NaN/Infinity/Zero checks to the standard mipmap bias callback implementations. --- Assets/Scripts/Core/Fsr2Callbacks.cs | 12 +++++++++--- Assets/Scripts/Fsr2ImageEffect.cs | 12 +----------- .../Runtime/Effects/SuperResolution.cs | 14 ++++---------- .../PostProcessing/Runtime/FSR2/Fsr2Callbacks.cs | 12 +++++++++--- 4 files changed, 23 insertions(+), 27 deletions(-) diff --git a/Assets/Scripts/Core/Fsr2Callbacks.cs b/Assets/Scripts/Core/Fsr2Callbacks.cs index c3c06e1..ad41d98 100644 --- a/Assets/Scripts/Core/Fsr2Callbacks.cs +++ b/Assets/Scripts/Core/Fsr2Callbacks.cs @@ -43,7 +43,7 @@ namespace FidelityFX /// void ApplyMipmapBias(float biasOffset); - void UndoMipmapBias(float biasOffset); + void UndoMipmapBias(); } /// @@ -76,6 +76,9 @@ namespace FidelityFX public virtual void ApplyMipmapBias(float biasOffset) { + if (float.IsNaN(biasOffset) || float.IsInfinity(biasOffset)) + return; + CurrentBiasOffset += biasOffset; if (Mathf.Approximately(CurrentBiasOffset, 0f)) @@ -92,9 +95,12 @@ namespace FidelityFX } } - public virtual void UndoMipmapBias(float biasOffset) + public virtual void UndoMipmapBias() { - ApplyMipmapBias(-biasOffset); + if (CurrentBiasOffset == 0f) + return; + + ApplyMipmapBias(-CurrentBiasOffset); } } } diff --git a/Assets/Scripts/Fsr2ImageEffect.cs b/Assets/Scripts/Fsr2ImageEffect.cs index 4475ebd..7daeb60 100644 --- a/Assets/Scripts/Fsr2ImageEffect.cs +++ b/Assets/Scripts/Fsr2ImageEffect.cs @@ -105,7 +105,6 @@ namespace FidelityFX private Fsr2Context _context; private Vector2Int _maxRenderSize; private Vector2Int _displaySize; - private float _appliedBiasOffset; private bool _resetHistory; private readonly Fsr2.DispatchDescription _dispatchDescription = new Fsr2.DispatchDescription(); @@ -238,22 +237,13 @@ namespace FidelityFX if (!float.IsNaN(biasOffset) && !float.IsInfinity(biasOffset)) { Callbacks.ApplyMipmapBias(biasOffset); - _appliedBiasOffset = biasOffset; - } - else - { - _appliedBiasOffset = 0f; } } private void UndoMipmapBias() { // Undo the current mipmap bias offset - if (_appliedBiasOffset != 0f && !float.IsNaN(_appliedBiasOffset) && !float.IsInfinity(_appliedBiasOffset)) - { - Callbacks.UndoMipmapBias(_appliedBiasOffset); - _appliedBiasOffset = 0f; - } + Callbacks.UndoMipmapBias(); } private void Update() diff --git a/com.unity.postprocessing/PostProcessing/Runtime/Effects/SuperResolution.cs b/com.unity.postprocessing/PostProcessing/Runtime/Effects/SuperResolution.cs index a053cc7..1de3b14 100644 --- a/com.unity.postprocessing/PostProcessing/Runtime/Effects/SuperResolution.cs +++ b/com.unity.postprocessing/PostProcessing/Runtime/Effects/SuperResolution.cs @@ -110,7 +110,6 @@ namespace UnityEngine.Rendering.PostProcessing private bool _resetHistory; private IFsr2Callbacks _callbacks; - private float _appliedBiasOffset; private readonly Fsr2.DispatchDescription _dispatchDescription = new Fsr2.DispatchDescription(); private readonly Fsr2.GenerateReactiveDescription _genReactiveDescription = new Fsr2.GenerateReactiveDescription(); @@ -223,11 +222,6 @@ namespace UnityEngine.Rendering.PostProcessing if (!float.IsNaN(biasOffset) && !float.IsInfinity(biasOffset)) { _callbacks.ApplyMipmapBias(biasOffset); - _appliedBiasOffset = biasOffset; - } - else - { - _appliedBiasOffset = 0f; } } @@ -239,11 +233,11 @@ namespace UnityEngine.Rendering.PostProcessing _fsrContext = null; } - // Undo the current mipmap bias offset - if (_appliedBiasOffset != 0f && !float.IsNaN(_appliedBiasOffset) && !float.IsInfinity(_appliedBiasOffset)) + if (_callbacks != null) { - _callbacks.UndoMipmapBias(_appliedBiasOffset); - _appliedBiasOffset = 0f; + // Undo the current mipmap bias offset + _callbacks.UndoMipmapBias(); + _callbacks = null; } } diff --git a/com.unity.postprocessing/PostProcessing/Runtime/FSR2/Fsr2Callbacks.cs b/com.unity.postprocessing/PostProcessing/Runtime/FSR2/Fsr2Callbacks.cs index c3c06e1..ad41d98 100644 --- a/com.unity.postprocessing/PostProcessing/Runtime/FSR2/Fsr2Callbacks.cs +++ b/com.unity.postprocessing/PostProcessing/Runtime/FSR2/Fsr2Callbacks.cs @@ -43,7 +43,7 @@ namespace FidelityFX /// void ApplyMipmapBias(float biasOffset); - void UndoMipmapBias(float biasOffset); + void UndoMipmapBias(); } /// @@ -76,6 +76,9 @@ namespace FidelityFX public virtual void ApplyMipmapBias(float biasOffset) { + if (float.IsNaN(biasOffset) || float.IsInfinity(biasOffset)) + return; + CurrentBiasOffset += biasOffset; if (Mathf.Approximately(CurrentBiasOffset, 0f)) @@ -92,9 +95,12 @@ namespace FidelityFX } } - public virtual void UndoMipmapBias(float biasOffset) + public virtual void UndoMipmapBias() { - ApplyMipmapBias(-biasOffset); + if (CurrentBiasOffset == 0f) + return; + + ApplyMipmapBias(-CurrentBiasOffset); } } }