From 9911642947014ecbfe1e5a27c28a2472ee6484e0 Mon Sep 17 00:00:00 2001 From: Nico de Poel Date: Wed, 5 Jul 2023 12:42:08 +0200 Subject: [PATCH] Refactored undo mipmap bias callback such that the RP integration does not need to maintain any bias offset state. Added NaN/Infinity check to the standard apply mipmap bias callback implementation. --- Assets/Scripts/Core/Fsr2Callbacks.cs | 9 ++++++--- Assets/Scripts/Fsr2ImageEffect.cs | 12 +----------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/Assets/Scripts/Core/Fsr2Callbacks.cs b/Assets/Scripts/Core/Fsr2Callbacks.cs index c3c06e1..552632f 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,9 @@ namespace FidelityFX } } - public virtual void UndoMipmapBias(float biasOffset) + public virtual void UndoMipmapBias() { - ApplyMipmapBias(-biasOffset); + ApplyMipmapBias(-CurrentBiasOffset); } } } diff --git a/Assets/Scripts/Fsr2ImageEffect.cs b/Assets/Scripts/Fsr2ImageEffect.cs index 6e41abe..bf1cc16 100644 --- a/Assets/Scripts/Fsr2ImageEffect.cs +++ b/Assets/Scripts/Fsr2ImageEffect.cs @@ -104,7 +104,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(); @@ -253,22 +252,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()