From 371743ca709ea8ecb780603f9c87c9a12b98325d Mon Sep 17 00:00:00 2001 From: Nico de Poel Date: Sun, 4 Aug 2024 00:44:08 +0200 Subject: [PATCH 1/2] Applied in-parameter for context and dispatch descriptions more consistently --- Runtime/FSR2/Fsr2Pass.cs | 18 +++++++++--------- Runtime/FSR3/Fsr3UpscalerPass.cs | 24 ++++++++++++------------ 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/Runtime/FSR2/Fsr2Pass.cs b/Runtime/FSR2/Fsr2Pass.cs index 7db9e42..dafa5e5 100644 --- a/Runtime/FSR2/Fsr2Pass.cs +++ b/Runtime/FSR2/Fsr2Pass.cs @@ -66,7 +66,7 @@ namespace FidelityFX.FSR2 { private readonly ComputeBuffer _spdConstants; - public Fsr2ComputeLuminancePyramidPass(Fsr2.ContextDescription contextDescription, Fsr2Resources resources, ComputeBuffer constants, ComputeBuffer spdConstants) + public Fsr2ComputeLuminancePyramidPass(in Fsr2.ContextDescription contextDescription, Fsr2Resources resources, ComputeBuffer constants, ComputeBuffer spdConstants) : base(contextDescription, resources, constants) { _spdConstants = spdConstants; @@ -92,7 +92,7 @@ namespace FidelityFX.FSR2 internal class Fsr2ReconstructPreviousDepthPass : Fsr2Pass { - public Fsr2ReconstructPreviousDepthPass(Fsr2.ContextDescription contextDescription, Fsr2Resources resources, ComputeBuffer constants) + public Fsr2ReconstructPreviousDepthPass(in Fsr2.ContextDescription contextDescription, Fsr2Resources resources, ComputeBuffer constants) : base(contextDescription, resources, constants) { InitComputeShader("Reconstruct & Dilate", contextDescription.Shaders.reconstructPreviousDepthPass); @@ -115,7 +115,7 @@ namespace FidelityFX.FSR2 internal class Fsr2DepthClipPass : Fsr2Pass { - public Fsr2DepthClipPass(Fsr2.ContextDescription contextDescription, Fsr2Resources resources, ComputeBuffer constants) + public Fsr2DepthClipPass(in Fsr2.ContextDescription contextDescription, Fsr2Resources resources, ComputeBuffer constants) : base(contextDescription, resources, constants) { InitComputeShader("Depth Clip", contextDescription.Shaders.depthClipPass); @@ -143,7 +143,7 @@ namespace FidelityFX.FSR2 internal class Fsr2LockPass : Fsr2Pass { - public Fsr2LockPass(Fsr2.ContextDescription contextDescription, Fsr2Resources resources, ComputeBuffer constants) + public Fsr2LockPass(in Fsr2.ContextDescription contextDescription, Fsr2Resources resources, ComputeBuffer constants) : base(contextDescription, resources, constants) { InitComputeShader("Create Locks", contextDescription.Shaders.lockPass); @@ -166,7 +166,7 @@ namespace FidelityFX.FSR2 private readonly LocalKeyword _sharpeningKeyword; #endif - public Fsr2AccumulatePass(Fsr2.ContextDescription contextDescription, Fsr2Resources resources, ComputeBuffer constants) + public Fsr2AccumulatePass(in Fsr2.ContextDescription contextDescription, Fsr2Resources resources, ComputeBuffer constants) : base(contextDescription, resources, constants) { InitComputeShader("Reproject & Accumulate", contextDescription.Shaders.accumulatePass); @@ -226,7 +226,7 @@ namespace FidelityFX.FSR2 { private readonly ComputeBuffer _rcasConstants; - public Fsr2SharpenPass(Fsr2.ContextDescription contextDescription, Fsr2Resources resources, ComputeBuffer constants, ComputeBuffer rcasConstants) + public Fsr2SharpenPass(in Fsr2.ContextDescription contextDescription, Fsr2Resources resources, ComputeBuffer constants, ComputeBuffer rcasConstants) : base(contextDescription, resources, constants) { _rcasConstants = rcasConstants; @@ -252,7 +252,7 @@ namespace FidelityFX.FSR2 { private readonly ComputeBuffer _generateReactiveConstants; - public Fsr2GenerateReactivePass(Fsr2.ContextDescription contextDescription, Fsr2Resources resources, ComputeBuffer generateReactiveConstants) + public Fsr2GenerateReactivePass(in Fsr2.ContextDescription contextDescription, Fsr2Resources resources, ComputeBuffer generateReactiveConstants) : base(contextDescription, resources, null) { _generateReactiveConstants = generateReactiveConstants; @@ -264,7 +264,7 @@ namespace FidelityFX.FSR2 { } - public void ScheduleDispatch(CommandBuffer commandBuffer, Fsr2.GenerateReactiveDescription dispatchParams, int dispatchX, int dispatchY) + public void ScheduleDispatch(CommandBuffer commandBuffer, in Fsr2.GenerateReactiveDescription dispatchParams, int dispatchX, int dispatchY) { commandBuffer.BeginSample(Sampler); @@ -284,7 +284,7 @@ namespace FidelityFX.FSR2 { private readonly ComputeBuffer _tcrAutogenerateConstants; - public Fsr2TcrAutogeneratePass(Fsr2.ContextDescription contextDescription, Fsr2Resources resources, ComputeBuffer constants, ComputeBuffer tcrAutogenerateConstants) + public Fsr2TcrAutogeneratePass(in Fsr2.ContextDescription contextDescription, Fsr2Resources resources, ComputeBuffer constants, ComputeBuffer tcrAutogenerateConstants) : base(contextDescription, resources, constants) { _tcrAutogenerateConstants = tcrAutogenerateConstants; diff --git a/Runtime/FSR3/Fsr3UpscalerPass.cs b/Runtime/FSR3/Fsr3UpscalerPass.cs index 44ae5c0..a5b3aa5 100644 --- a/Runtime/FSR3/Fsr3UpscalerPass.cs +++ b/Runtime/FSR3/Fsr3UpscalerPass.cs @@ -62,7 +62,7 @@ namespace FidelityFX.FSR3 internal class Fsr3UpscalerPrepareInputsPass : Fsr3UpscalerPass { - public Fsr3UpscalerPrepareInputsPass(Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants) + public Fsr3UpscalerPrepareInputsPass(in Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants) : base(contextDescription, resources, constants) { InitComputeShader("Prepare Inputs", contextDescription.Shaders.prepareInputsPass); @@ -90,7 +90,7 @@ namespace FidelityFX.FSR3 { private readonly ComputeBuffer _spdConstants; - public Fsr3UpscalerLumaPyramidPass(Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants, ComputeBuffer spdConstants) + public Fsr3UpscalerLumaPyramidPass(in Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants, ComputeBuffer spdConstants) : base(contextDescription, resources, constants) { _spdConstants = spdConstants; @@ -123,7 +123,7 @@ namespace FidelityFX.FSR3 { private readonly ComputeBuffer _spdConstants; - public Fsr3UpscalerShadingChangePyramidPass(Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants, ComputeBuffer spdConstants) + public Fsr3UpscalerShadingChangePyramidPass(in Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants, ComputeBuffer spdConstants) : base(contextDescription, resources, constants) { _spdConstants = spdConstants; @@ -155,7 +155,7 @@ namespace FidelityFX.FSR3 internal class Fsr3UpscalerShadingChangePass : Fsr3UpscalerPass { - public Fsr3UpscalerShadingChangePass(Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants) + public Fsr3UpscalerShadingChangePass(in Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants) : base(contextDescription, resources, constants) { InitComputeShader("Compute Shading Change", contextDescription.Shaders.shadingChangePass); @@ -173,7 +173,7 @@ namespace FidelityFX.FSR3 internal class Fsr3UpscalerPrepareReactivityPass : Fsr3UpscalerPass { - public Fsr3UpscalerPrepareReactivityPass(Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants) + public Fsr3UpscalerPrepareReactivityPass(in Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants) : base(contextDescription, resources, constants) { InitComputeShader("Prepare Reactivity", contextDescription.Shaders.prepareReactivityPass); @@ -201,7 +201,7 @@ namespace FidelityFX.FSR3 internal class Fsr3UpscalerLumaInstabilityPass : Fsr3UpscalerPass { - public Fsr3UpscalerLumaInstabilityPass(Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants) + public Fsr3UpscalerLumaInstabilityPass(in Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants) : base(contextDescription, resources, constants) { InitComputeShader("Compute Luminance Instability", contextDescription.Shaders.lumaInstabilityPass); @@ -234,7 +234,7 @@ namespace FidelityFX.FSR3 private readonly LocalKeyword _sharpeningKeyword; #endif - public Fsr3UpscalerAccumulatePass(Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants) + public Fsr3UpscalerAccumulatePass(in Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants) : base(contextDescription, resources, constants) { InitComputeShader("Accumulate", contextDescription.Shaders.accumulatePass); @@ -289,7 +289,7 @@ namespace FidelityFX.FSR3 { private readonly ComputeBuffer _rcasConstants; - public Fsr3UpscalerSharpenPass(Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants, ComputeBuffer rcasConstants) + public Fsr3UpscalerSharpenPass(in Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants, ComputeBuffer rcasConstants) : base(contextDescription, resources, constants) { _rcasConstants = rcasConstants; @@ -315,7 +315,7 @@ namespace FidelityFX.FSR3 { private readonly ComputeBuffer _generateReactiveConstants; - public Fsr3UpscalerGenerateReactivePass(Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer generateReactiveConstants) + public Fsr3UpscalerGenerateReactivePass(in Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer generateReactiveConstants) : base(contextDescription, resources, null) { _generateReactiveConstants = generateReactiveConstants; @@ -327,7 +327,7 @@ namespace FidelityFX.FSR3 { } - public void ScheduleDispatch(CommandBuffer commandBuffer, Fsr3Upscaler.GenerateReactiveDescription dispatchParams, int dispatchX, int dispatchY) + public void ScheduleDispatch(CommandBuffer commandBuffer, in Fsr3Upscaler.GenerateReactiveDescription dispatchParams, int dispatchX, int dispatchY) { commandBuffer.BeginSample(Sampler); @@ -347,7 +347,7 @@ namespace FidelityFX.FSR3 { private readonly ComputeBuffer _tcrAutogenerateConstants; - public Fsr3UpscalerTcrAutogeneratePass(Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants, ComputeBuffer tcrAutogenerateConstants) + public Fsr3UpscalerTcrAutogeneratePass(in Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants, ComputeBuffer tcrAutogenerateConstants) : base(contextDescription, resources, constants) { _tcrAutogenerateConstants = tcrAutogenerateConstants; @@ -380,7 +380,7 @@ namespace FidelityFX.FSR3 #if UNITY_EDITOR || DEVELOPMENT_BUILD internal class Fsr3UpscalerDebugViewPass : Fsr3UpscalerPass { - public Fsr3UpscalerDebugViewPass(Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants) + public Fsr3UpscalerDebugViewPass(in Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants) : base(contextDescription, resources, constants) { InitComputeShader("Debug View", contextDescription.Shaders.debugViewPass); From 43e0f15ab88471c98af795a8693ab28f890aa002 Mon Sep 17 00:00:00 2001 From: Nico de Poel Date: Sun, 4 Aug 2024 01:08:14 +0200 Subject: [PATCH 2/2] Made the pass classes sealed, which is a more sensible way to please the compiler about using virtual methods inside constructors. --- Runtime/Common/FfxPassBase.cs | 2 +- Runtime/FSR2/Fsr2Pass.cs | 16 ++++++++-------- Runtime/FSR3/Fsr3UpscalerPass.cs | 22 +++++++++++----------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/Runtime/Common/FfxPassBase.cs b/Runtime/Common/FfxPassBase.cs index af5a980..d4758a5 100644 --- a/Runtime/Common/FfxPassBase.cs +++ b/Runtime/Common/FfxPassBase.cs @@ -57,7 +57,7 @@ namespace FidelityFX Flags = flags; } - protected sealed override void InitComputeShader(string passName, ComputeShader shader, string kernelName = "CS") + protected override void InitComputeShader(string passName, ComputeShader shader, string kernelName = "CS") { base.InitComputeShader(passName, shader, kernelName); SetupShaderKeywords(); diff --git a/Runtime/FSR2/Fsr2Pass.cs b/Runtime/FSR2/Fsr2Pass.cs index dafa5e5..4d8df06 100644 --- a/Runtime/FSR2/Fsr2Pass.cs +++ b/Runtime/FSR2/Fsr2Pass.cs @@ -62,7 +62,7 @@ namespace FidelityFX.FSR2 } } - internal class Fsr2ComputeLuminancePyramidPass : Fsr2Pass + internal sealed class Fsr2ComputeLuminancePyramidPass : Fsr2Pass { private readonly ComputeBuffer _spdConstants; @@ -90,7 +90,7 @@ namespace FidelityFX.FSR2 } } - internal class Fsr2ReconstructPreviousDepthPass : Fsr2Pass + internal sealed class Fsr2ReconstructPreviousDepthPass : Fsr2Pass { public Fsr2ReconstructPreviousDepthPass(in Fsr2.ContextDescription contextDescription, Fsr2Resources resources, ComputeBuffer constants) : base(contextDescription, resources, constants) @@ -113,7 +113,7 @@ namespace FidelityFX.FSR2 } } - internal class Fsr2DepthClipPass : Fsr2Pass + internal sealed class Fsr2DepthClipPass : Fsr2Pass { public Fsr2DepthClipPass(in Fsr2.ContextDescription contextDescription, Fsr2Resources resources, ComputeBuffer constants) : base(contextDescription, resources, constants) @@ -141,7 +141,7 @@ namespace FidelityFX.FSR2 } } - internal class Fsr2LockPass : Fsr2Pass + internal sealed class Fsr2LockPass : Fsr2Pass { public Fsr2LockPass(in Fsr2.ContextDescription contextDescription, Fsr2Resources resources, ComputeBuffer constants) : base(contextDescription, resources, constants) @@ -158,7 +158,7 @@ namespace FidelityFX.FSR2 } } - internal class Fsr2AccumulatePass : Fsr2Pass + internal sealed class Fsr2AccumulatePass : Fsr2Pass { private const string SharpeningKeyword = "FFX_FSR2_OPTION_APPLY_SHARPENING"; @@ -222,7 +222,7 @@ namespace FidelityFX.FSR2 } } - internal class Fsr2SharpenPass : Fsr2Pass + internal sealed class Fsr2SharpenPass : Fsr2Pass { private readonly ComputeBuffer _rcasConstants; @@ -248,7 +248,7 @@ namespace FidelityFX.FSR2 } } - internal class Fsr2GenerateReactivePass : Fsr2Pass + internal sealed class Fsr2GenerateReactivePass : Fsr2Pass { private readonly ComputeBuffer _generateReactiveConstants; @@ -280,7 +280,7 @@ namespace FidelityFX.FSR2 } } - internal class Fsr2TcrAutogeneratePass : Fsr2Pass + internal sealed class Fsr2TcrAutogeneratePass : Fsr2Pass { private readonly ComputeBuffer _tcrAutogenerateConstants; diff --git a/Runtime/FSR3/Fsr3UpscalerPass.cs b/Runtime/FSR3/Fsr3UpscalerPass.cs index a5b3aa5..73b7a3c 100644 --- a/Runtime/FSR3/Fsr3UpscalerPass.cs +++ b/Runtime/FSR3/Fsr3UpscalerPass.cs @@ -60,7 +60,7 @@ namespace FidelityFX.FSR3 } } - internal class Fsr3UpscalerPrepareInputsPass : Fsr3UpscalerPass + internal sealed class Fsr3UpscalerPrepareInputsPass : Fsr3UpscalerPass { public Fsr3UpscalerPrepareInputsPass(in Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants) : base(contextDescription, resources, constants) @@ -86,7 +86,7 @@ namespace FidelityFX.FSR3 } } - internal class Fsr3UpscalerLumaPyramidPass : Fsr3UpscalerPass + internal sealed class Fsr3UpscalerLumaPyramidPass : Fsr3UpscalerPass { private readonly ComputeBuffer _spdConstants; @@ -119,7 +119,7 @@ namespace FidelityFX.FSR3 } } - internal class Fsr3UpscalerShadingChangePyramidPass : Fsr3UpscalerPass + internal sealed class Fsr3UpscalerShadingChangePyramidPass : Fsr3UpscalerPass { private readonly ComputeBuffer _spdConstants; @@ -153,7 +153,7 @@ namespace FidelityFX.FSR3 } } - internal class Fsr3UpscalerShadingChangePass : Fsr3UpscalerPass + internal sealed class Fsr3UpscalerShadingChangePass : Fsr3UpscalerPass { public Fsr3UpscalerShadingChangePass(in Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants) : base(contextDescription, resources, constants) @@ -171,7 +171,7 @@ namespace FidelityFX.FSR3 } } - internal class Fsr3UpscalerPrepareReactivityPass : Fsr3UpscalerPass + internal sealed class Fsr3UpscalerPrepareReactivityPass : Fsr3UpscalerPass { public Fsr3UpscalerPrepareReactivityPass(in Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants) : base(contextDescription, resources, constants) @@ -199,7 +199,7 @@ namespace FidelityFX.FSR3 } } - internal class Fsr3UpscalerLumaInstabilityPass : Fsr3UpscalerPass + internal sealed class Fsr3UpscalerLumaInstabilityPass : Fsr3UpscalerPass { public Fsr3UpscalerLumaInstabilityPass(in Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants) : base(contextDescription, resources, constants) @@ -226,7 +226,7 @@ namespace FidelityFX.FSR3 } } - internal class Fsr3UpscalerAccumulatePass : Fsr3UpscalerPass + internal sealed class Fsr3UpscalerAccumulatePass : Fsr3UpscalerPass { private const string SharpeningKeyword = "FFX_FSR3UPSCALER_OPTION_APPLY_SHARPENING"; @@ -285,7 +285,7 @@ namespace FidelityFX.FSR3 } } - internal class Fsr3UpscalerSharpenPass : Fsr3UpscalerPass + internal sealed class Fsr3UpscalerSharpenPass : Fsr3UpscalerPass { private readonly ComputeBuffer _rcasConstants; @@ -311,7 +311,7 @@ namespace FidelityFX.FSR3 } } - internal class Fsr3UpscalerGenerateReactivePass : Fsr3UpscalerPass + internal sealed class Fsr3UpscalerGenerateReactivePass : Fsr3UpscalerPass { private readonly ComputeBuffer _generateReactiveConstants; @@ -343,7 +343,7 @@ namespace FidelityFX.FSR3 } } - internal class Fsr3UpscalerTcrAutogeneratePass : Fsr3UpscalerPass + internal sealed class Fsr3UpscalerTcrAutogeneratePass : Fsr3UpscalerPass { private readonly ComputeBuffer _tcrAutogenerateConstants; @@ -378,7 +378,7 @@ namespace FidelityFX.FSR3 } #if UNITY_EDITOR || DEVELOPMENT_BUILD - internal class Fsr3UpscalerDebugViewPass : Fsr3UpscalerPass + internal sealed class Fsr3UpscalerDebugViewPass : Fsr3UpscalerPass { public Fsr3UpscalerDebugViewPass(in Fsr3Upscaler.ContextDescription contextDescription, Fsr3UpscalerResources resources, ComputeBuffer constants) : base(contextDescription, resources, constants)