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