Browse Source

Moved default exposure and reactive resources to Fsr2Context

mac-autoexp
Nico de Poel 3 years ago
parent
commit
34598f3900
  1. 14
      Assets/Scripts/Fsr2Context.cs
  2. 20
      Assets/Scripts/Fsr2Controller.cs

14
Assets/Scripts/Fsr2Context.cs

@ -24,6 +24,8 @@ namespace FidelityFX
private Fsr2Pipeline _generateReactivePipeline;
private Fsr2Pipeline _tcrAutogeneratePipeline;
private Texture2D _defaultExposureResource;
private Texture2D _defaultReactiveResource;
private Texture2D _lanczosLutResource;
private RenderTexture _autoExposureResource;
private readonly RenderTexture[] _dilatedMotionVectorResources = new RenderTexture[2];
@ -91,6 +93,14 @@ namespace FidelityFX
_lanczosLutResource.SetPixelData(lanczos2Weights, 0);
_lanczosLutResource.Apply();
_defaultExposureResource = new Texture2D(1, 1, GraphicsFormat.R32G32_SFloat, TextureCreationFlags.None) { name = "FSR2_DefaultExposure" };
_defaultExposureResource.SetPixel(0, 0, Color.black);
_defaultExposureResource.Apply();
_defaultReactiveResource = new Texture2D(1, 1, GraphicsFormat.R8_UNorm, TextureCreationFlags.None) { name = "FSR2_DefaultReactivityMask" };
_defaultReactiveResource.SetPixel(0, 0, Color.black);
_defaultReactiveResource.Apply();
// Resource FSR2_AutoExposure: FFX_RESOURCE_USAGE_UAV, FFX_SURFACE_FORMAT_R32G32_FLOAT, FFX_RESOURCE_FLAGS_NONE
_autoExposureResource = new RenderTexture(1, 1, 1, GraphicsFormat.R32G32_SFloat) { name = "FSR2_AutoExposure", enableRandomWrite = true };
_autoExposureResource.Create();
@ -142,6 +152,8 @@ namespace FidelityFX
DestroyResource(ref _dilatedMotionVectorResources[1]);
DestroyResource(ref _dilatedMotionVectorResources[0]);
DestroyResource(ref _autoExposureResource);
DestroyResource(ref _defaultReactiveResource);
DestroyResource(ref _defaultExposureResource);
DestroyResource(ref _lanczosLutResource);
DestroyConstantBuffer(ref _rcasConstantsBuffer);
@ -173,6 +185,8 @@ namespace FidelityFX
bool resetAccumulation = dispatchParams.Reset || _firstExecution;
_firstExecution = false;
if (dispatchParams.Exposure == null) dispatchParams.Exposure = _defaultExposureResource;
if (dispatchParams.Reactive == null) dispatchParams.Reactive = _defaultReactiveResource;
Fsr2Pipeline.RegisterResources(_commandBuffer, _contextDescription, dispatchParams);
SetupConstants(dispatchParams, resetAccumulation);

20
Assets/Scripts/Fsr2Controller.cs

@ -39,7 +39,6 @@ public class Fsr2Controller : MonoBehaviour
private RenderTexture _colorRT, _depthRT, _motionVectorsRT;
private RenderTexture _outputRT;
private Texture2D _defaultExposure, _defaultReactive;
private Material _copyDepthMat;
private Material CopyDepthMaterial
@ -92,25 +91,10 @@ public class Fsr2Controller : MonoBehaviour
// TODO: do we need a depth buffer for the output? We will need depth & motion vectors for subsequent post-FX. How should FSR2 output these?
_outputRT = new RenderTexture(DisplaySize.x, DisplaySize.y, 24, RenderTextureFormat.ARGBHalf) { enableRandomWrite = true };
_outputRT.Create();
// TODO: move these defaults to Fsr2Context, provide nulls in dispatch
_defaultExposure = new Texture2D(1, 1, GraphicsFormat.R32G32_SFloat, TextureCreationFlags.None) { name = "FSR2 Default Exposure" };
_defaultExposure.SetPixel(0, 0, Color.black);
_defaultExposure.Apply();
_defaultReactive = new Texture2D(1, 1, GraphicsFormat.R8_UNorm, TextureCreationFlags.None) { name = "FSR2 Default Reactive Mask" };
_defaultReactive.SetPixel(0, 0, Color.black);
_defaultReactive.Apply();
}
private void OnDisable()
{
if (_defaultExposure != null)
{
Destroy(_defaultExposure);
_defaultExposure = null;
}
if (_outputRT != null)
{
_outputRT.Release();
@ -156,8 +140,8 @@ public class Fsr2Controller : MonoBehaviour
_dispatchDescription.Depth = _depthRT;
_dispatchDescription.MotionVectors = _motionVectorsRT;
_dispatchDescription.Output = _outputRT;
_dispatchDescription.Exposure = _defaultExposure;
_dispatchDescription.Reactive = _defaultReactive;
_dispatchDescription.Exposure = null;
_dispatchDescription.Reactive = null;
_dispatchDescription.PreExposure = 1.0f;
_dispatchDescription.EnableSharpening = performSharpenPass;
_dispatchDescription.Sharpness = sharpness;

Loading…
Cancel
Save