From 34598f39008485fc92f7167ba73aaf4d865b2509 Mon Sep 17 00:00:00 2001 From: Nico de Poel Date: Thu, 23 Feb 2023 16:12:34 +0100 Subject: [PATCH] Moved default exposure and reactive resources to Fsr2Context --- Assets/Scripts/Fsr2Context.cs | 16 +++++++++++++++- Assets/Scripts/Fsr2Controller.cs | 20 ++------------------ 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/Assets/Scripts/Fsr2Context.cs b/Assets/Scripts/Fsr2Context.cs index 7925591..c01be74 100644 --- a/Assets/Scripts/Fsr2Context.cs +++ b/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]; @@ -90,6 +92,14 @@ namespace FidelityFX _lanczosLutResource = new Texture2D(lanczos2LutWidth, 1, GraphicsFormat.R16_SFloat, TextureCreationFlags.None) { name = "FSR2_LanczosLutData" }; _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 }; @@ -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); @@ -172,7 +184,9 @@ 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); diff --git a/Assets/Scripts/Fsr2Controller.cs b/Assets/Scripts/Fsr2Controller.cs index 5139eeb..3655d67 100644 --- a/Assets/Scripts/Fsr2Controller.cs +++ b/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;