diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/SuperResolution.cs b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/SuperResolution.cs index e80ab93..a6a9f0c 100644 --- a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/SuperResolution.cs +++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/SuperResolution.cs @@ -107,7 +107,7 @@ namespace UnityEngine.Rendering.PostProcessing private Fsr2Context _fsrContext; private Vector2Int _renderSize; private Vector2Int _displaySize; - private bool _reset; + private bool _resetHistory; private IFsr2Callbacks _callbacks; private float _appliedBiasOffset; @@ -138,7 +138,7 @@ namespace UnityEngine.Rendering.PostProcessing public void ResetHistory() { - _reset = true; + _resetHistory = true; } public void ConfigureJitteredProjectionMatrix(PostProcessRenderContext context) @@ -192,15 +192,11 @@ namespace UnityEngine.Rendering.PostProcessing _dispatchDescription.Reactive = Fsr2ShaderIDs.UavAutoReactive; } - cmd.GetTemporaryRT(Fsr2ShaderIDs.UavUpscaledOutput, _displaySize.x, _displaySize.y, 0, default, context.sourceFormat, default, 1, true); - _fsrContext.Dispatch(_dispatchDescription, cmd); - cmd.BlitFullscreenTriangle(Fsr2ShaderIDs.UavUpscaledOutput, context.destination); - cmd.ReleaseTemporaryRT(Fsr2ShaderIDs.UavUpscaledOutput); cmd.EndSample("FSR2"); - _reset = false; + _resetHistory = false; } private void CreateFsrContext(PostProcessRenderContext context) @@ -282,7 +278,7 @@ namespace UnityEngine.Rendering.PostProcessing if (reactiveMask != null) _dispatchDescription.Reactive = reactiveMask; if (transparencyAndCompositionMask != null) _dispatchDescription.TransparencyAndComposition = transparencyAndCompositionMask; - _dispatchDescription.Output = null; + _dispatchDescription.Output = context.destination; _dispatchDescription.PreExposure = preExposure; _dispatchDescription.EnableSharpening = performSharpenPass; _dispatchDescription.Sharpness = sharpness; @@ -295,7 +291,7 @@ namespace UnityEngine.Rendering.PostProcessing _dispatchDescription.CameraFar = camera.farClipPlane; _dispatchDescription.CameraFovAngleVertical = camera.fieldOfView * Mathf.Deg2Rad; _dispatchDescription.ViewSpaceToMetersFactor = 1.0f; // 1 unit is 1 meter in Unity - _dispatchDescription.Reset = _reset; + _dispatchDescription.Reset = _resetHistory; _dispatchDescription.EnableAutoReactive = autoGenerateTransparencyAndComposition; if (autoGenerateTransparencyAndComposition) diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/PostProcessLayer.cs b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/PostProcessLayer.cs index 1b3ac4b..b01f276 100644 --- a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/PostProcessLayer.cs +++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/PostProcessLayer.cs @@ -1181,7 +1181,7 @@ namespace UnityEngine.Rendering.PostProcessing var fsrTarget = m_TargetPool.Get(); var finalDestination = context.destination; - context.GetScreenSpaceTemporaryRT(cmd, fsrTarget, 0, context.sourceFormat); + context.GetScreenSpaceTemporaryRT(cmd, fsrTarget, 0, context.sourceFormat, enableRandomWrite: true); context.destination = fsrTarget; superResolution.colorOpaqueOnly = m_opaqueOnly; superResolution.Render(context); diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/PostProcessRenderContext.cs b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/PostProcessRenderContext.cs index 76db951..bc6f560 100644 --- a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/PostProcessRenderContext.cs +++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/PostProcessRenderContext.cs @@ -372,9 +372,10 @@ namespace UnityEngine.Rendering.PostProcessing /// The texture filtering mode /// Override the display width; use 0 to disable the override /// Override the display height; use 0 to disable the override + /// Enable random access write into this render texture public void GetScreenSpaceTemporaryRT(CommandBuffer cmd, int nameID, int depthBufferBits = 0, RenderTextureFormat colorFormat = RenderTextureFormat.Default, RenderTextureReadWrite readWrite = RenderTextureReadWrite.Default, - FilterMode filter = FilterMode.Bilinear, int widthOverride = 0, int heightOverride = 0) + FilterMode filter = FilterMode.Bilinear, int widthOverride = 0, int heightOverride = 0, bool enableRandomWrite = false) { var desc = GetDescriptor(depthBufferBits, colorFormat, readWrite); if (widthOverride > 0) @@ -386,6 +387,9 @@ namespace UnityEngine.Rendering.PostProcessing if (stereoActive && desc.dimension == Rendering.TextureDimension.Tex2DArray) desc.dimension = Rendering.TextureDimension.Tex2D; + if (enableRandomWrite) + desc.enableRandomWrite = true; + #if UNITY_2019_1_OR_NEWER cmd.GetTemporaryRT(nameID, desc, filter); #elif UNITY_2017_3_OR_NEWER