Browse Source

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.

master
Nico de Poel 3 years ago
parent
commit
9911642947
  1. 9
      Assets/Scripts/Core/Fsr2Callbacks.cs
  2. 12
      Assets/Scripts/Fsr2ImageEffect.cs

9
Assets/Scripts/Core/Fsr2Callbacks.cs

@ -43,7 +43,7 @@ namespace FidelityFX
/// </summary>
void ApplyMipmapBias(float biasOffset);
void UndoMipmapBias(float biasOffset);
void UndoMipmapBias();
}
/// <summary>
@ -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);
}
}
}

12
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()

Loading…
Cancel
Save