aboutsummaryrefslogtreecommitdiff
path: root/externals/FidelityFX-SDK/shaders
diff options
context:
space:
mode:
Diffstat (limited to 'externals/FidelityFX-SDK/shaders')
-rw-r--r--externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_accumulate_pass.glsl75
-rw-r--r--externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_luma_instability_pass.glsl62
-rw-r--r--externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_luma_pyramid_pass.glsl65
-rw-r--r--externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_prepare_inputs_pass.glsl61
-rw-r--r--externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_prepare_reactivity_pass.glsl65
-rw-r--r--externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_rcas_pass.glsl59
-rw-r--r--externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_shading_change_pass.glsl55
-rw-r--r--externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_shading_change_pyramid_pass.glsl67
8 files changed, 509 insertions, 0 deletions
diff --git a/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_accumulate_pass.glsl b/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_accumulate_pass.glsl
new file mode 100644
index 0000000000..3b93575536
--- /dev/null
+++ b/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_accumulate_pass.glsl
@@ -0,0 +1,75 @@
+// This file is part of the FidelityFX SDK.
+//
+// Copyright (C) 2024 Advanced Micro Devices, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files(the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions :
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#version 450
+
+#extension GL_GOOGLE_include_directive : require
+#extension GL_EXT_samplerless_texture_functions : require
+// Needed for rw_upscaled_output declaration
+#extension GL_EXT_shader_image_load_formatted : require
+
+#define FSR3UPSCALER_BIND_SRV_INPUT_EXPOSURE 0
+#define FSR3UPSCALER_BIND_SRV_DILATED_REACTIVE_MASKS 1
+#if FFX_FSR3UPSCALER_OPTION_LOW_RESOLUTION_MOTION_VECTORS
+#define FSR3UPSCALER_BIND_SRV_DILATED_MOTION_VECTORS 2
+#else
+#define FSR3UPSCALER_BIND_SRV_INPUT_MOTION_VECTORS 2
+#endif
+#define FSR3UPSCALER_BIND_SRV_INTERNAL_UPSCALED 3
+#define FSR3UPSCALER_BIND_SRV_LANCZOS_LUT 4
+#define FSR3UPSCALER_BIND_SRV_FARTHEST_DEPTH_MIP1 5
+
+#define FSR3UPSCALER_BIND_SRV_CURRENT_LUMA 6
+#define FSR3UPSCALER_BIND_SRV_LUMA_INSTABILITY 7
+#define FSR3UPSCALER_BIND_SRV_INPUT_COLOR 8
+
+#define FSR3UPSCALER_BIND_UAV_INTERNAL_UPSCALED 9
+#define FSR3UPSCALER_BIND_UAV_UPSCALED_OUTPUT 10
+#define FSR3UPSCALER_BIND_UAV_NEW_LOCKS 11
+
+#define FSR3UPSCALER_BIND_CB_FSR3UPSCALER 12
+
+#include "fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h"
+#include "fsr3upscaler/ffx_fsr3upscaler_common.h"
+#include "fsr3upscaler/ffx_fsr3upscaler_sample.h"
+#include "fsr3upscaler/ffx_fsr3upscaler_upsample.h"
+#include "fsr3upscaler/ffx_fsr3upscaler_reproject.h"
+#include "fsr3upscaler/ffx_fsr3upscaler_accumulate.h"
+
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH
+#define FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH 8
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT
+#define FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT 8
+#endif // FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH
+#define FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH 1
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH
+#ifndef FFX_FSR3UPSCALER_NUM_THREADS
+#define FFX_FSR3UPSCALER_NUM_THREADS layout (local_size_x = FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH, local_size_y = FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT, local_size_z = FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH) in;
+#endif // #ifndef FFX_FSR3UPSCALER_NUM_THREADS
+
+FFX_FSR3UPSCALER_NUM_THREADS
+void main()
+{
+ Accumulate(FfxInt32x2(gl_GlobalInvocationID.xy));
+}
diff --git a/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_luma_instability_pass.glsl b/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_luma_instability_pass.glsl
new file mode 100644
index 0000000000..6d5db88e1c
--- /dev/null
+++ b/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_luma_instability_pass.glsl
@@ -0,0 +1,62 @@
+// This file is part of the FidelityFX SDK.
+//
+// Copyright (C) 2024 Advanced Micro Devices, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files(the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions :
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#version 450
+
+#extension GL_GOOGLE_include_directive : require
+#extension GL_EXT_samplerless_texture_functions : require
+
+#define FSR3UPSCALER_BIND_SRV_INPUT_EXPOSURE 0
+#define FSR3UPSCALER_BIND_SRV_DILATED_REACTIVE_MASKS 1
+#define FSR3UPSCALER_BIND_SRV_DILATED_MOTION_VECTORS 2
+#define FSR3UPSCALER_BIND_SRV_FRAME_INFO 3
+#define FSR3UPSCALER_BIND_SRV_LUMA_HISTORY 4
+#define FSR3UPSCALER_BIND_SRV_FARTHEST_DEPTH_MIP1 5
+#define FSR3UPSCALER_BIND_SRV_CURRENT_LUMA 6
+
+#define FSR3UPSCALER_BIND_UAV_LUMA_HISTORY 7
+#define FSR3UPSCALER_BIND_UAV_LUMA_INSTABILITY 8
+
+#define FSR3UPSCALER_BIND_CB_FSR3UPSCALER 9
+
+#include "fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h"
+#include "fsr3upscaler/ffx_fsr3upscaler_common.h"
+#include "fsr3upscaler/ffx_fsr3upscaler_luma_instability.h"
+
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH
+#define FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH 8
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT
+#define FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT 8
+#endif // FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH
+#define FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH 1
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH
+#ifndef FFX_FSR3UPSCALER_NUM_THREADS
+#define FFX_FSR3UPSCALER_NUM_THREADS layout (local_size_x = FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH, local_size_y = FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT, local_size_z = FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH) in;
+#endif // #ifndef FFX_FSR3UPSCALER_NUM_THREADS
+
+FFX_FSR3UPSCALER_NUM_THREADS
+void main()
+{
+ LumaInstability(FfxInt32x2(gl_GlobalInvocationID.xy));
+}
diff --git a/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_luma_pyramid_pass.glsl b/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_luma_pyramid_pass.glsl
new file mode 100644
index 0000000000..29f4c8f8dd
--- /dev/null
+++ b/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_luma_pyramid_pass.glsl
@@ -0,0 +1,65 @@
+// This file is part of the FidelityFX SDK.
+//
+// Copyright (C) 2024 Advanced Micro Devices, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files(the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions :
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#version 450
+
+#extension GL_GOOGLE_include_directive : require
+#extension GL_EXT_samplerless_texture_functions : require
+
+#define FSR3UPSCALER_BIND_SRV_CURRENT_LUMA 0
+#define FSR3UPSCALER_BIND_SRV_FARTHEST_DEPTH 1
+
+#define FSR3UPSCALER_BIND_UAV_SPD_GLOBAL_ATOMIC 2
+#define FSR3UPSCALER_BIND_UAV_FRAME_INFO 3
+#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_0 4
+#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_1 5
+#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_2 6
+#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_3 7
+#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_4 8
+#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_5 9
+#define FSR3UPSCALER_BIND_UAV_FARTHEST_DEPTH_MIP1 10
+
+#define FSR3UPSCALER_BIND_CB_FSR3UPSCALER 11
+#define FSR3UPSCALER_BIND_CB_SPD 12
+
+#include "fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h"
+#include "fsr3upscaler/ffx_fsr3upscaler_common.h"
+#include "fsr3upscaler/ffx_fsr3upscaler_luma_pyramid.h"
+
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH
+#define FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH 256
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT
+#define FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT 1
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH
+#define FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH 1
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH
+#ifndef FFX_FSR3UPSCALER_NUM_THREADS
+#define FFX_FSR3UPSCALER_NUM_THREADS layout (local_size_x = FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH, local_size_y = FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT, local_size_z = FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH) in;
+#endif // #ifndef FFX_FSR3UPSCALER_NUM_THREADS
+
+FFX_FSR3UPSCALER_NUM_THREADS
+void main()
+{
+ ComputeAutoExposure(gl_WorkGroupID, gl_LocalInvocationIndex);
+}
diff --git a/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_prepare_inputs_pass.glsl b/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_prepare_inputs_pass.glsl
new file mode 100644
index 0000000000..6e3c572233
--- /dev/null
+++ b/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_prepare_inputs_pass.glsl
@@ -0,0 +1,61 @@
+// This file is part of the FidelityFX SDK.
+//
+// Copyright (C) 2024 Advanced Micro Devices, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files(the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions :
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#version 450
+
+#extension GL_GOOGLE_include_directive : require
+#extension GL_EXT_samplerless_texture_functions : require
+
+#define FSR3UPSCALER_BIND_SRV_INPUT_MOTION_VECTORS 0
+#define FSR3UPSCALER_BIND_SRV_INPUT_DEPTH 1
+#define FSR3UPSCALER_BIND_SRV_INPUT_COLOR 2
+
+#define FSR3UPSCALER_BIND_UAV_DILATED_MOTION_VECTORS 3
+#define FSR3UPSCALER_BIND_UAV_DILATED_DEPTH 4
+#define FSR3UPSCALER_BIND_UAV_RECONSTRUCTED_PREV_NEAREST_DEPTH 5
+#define FSR3UPSCALER_BIND_UAV_FARTHEST_DEPTH 6
+#define FSR3UPSCALER_BIND_UAV_CURRENT_LUMA 7
+
+#define FSR3UPSCALER_BIND_CB_FSR3UPSCALER 8
+
+#include "fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h"
+#include "fsr3upscaler/ffx_fsr3upscaler_common.h"
+#include "fsr3upscaler/ffx_fsr3upscaler_prepare_inputs.h"
+
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH
+#define FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH 8
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT
+#define FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT 8
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH
+#define FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH 1
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH
+#ifndef FFX_FSR3UPSCALER_NUM_THREADS
+#define FFX_FSR3UPSCALER_NUM_THREADS layout (local_size_x = FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH, local_size_y = FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT, local_size_z = FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH) in;
+#endif // #ifndef FFX_FSR3UPSCALER_NUM_THREADS
+
+FFX_FSR3UPSCALER_NUM_THREADS
+void main()
+{
+ PrepareInputs(FfxInt32x2(gl_GlobalInvocationID.xy));
+}
diff --git a/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_prepare_reactivity_pass.glsl b/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_prepare_reactivity_pass.glsl
new file mode 100644
index 0000000000..e09d5d36df
--- /dev/null
+++ b/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_prepare_reactivity_pass.glsl
@@ -0,0 +1,65 @@
+// This file is part of the FidelityFX SDK.
+//
+// Copyright (C) 2024 Advanced Micro Devices, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files(the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions :
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#version 450
+
+#extension GL_GOOGLE_include_directive : require
+#extension GL_EXT_samplerless_texture_functions : require
+
+#define FSR3UPSCALER_BIND_SRV_RECONSTRUCTED_PREV_NEAREST_DEPTH 0
+#define FSR3UPSCALER_BIND_SRV_DILATED_MOTION_VECTORS 1
+#define FSR3UPSCALER_BIND_SRV_DILATED_DEPTH 2
+#define FSR3UPSCALER_BIND_SRV_REACTIVE_MASK 3
+#define FSR3UPSCALER_BIND_SRV_TRANSPARENCY_AND_COMPOSITION_MASK 4
+#define FSR3UPSCALER_BIND_SRV_ACCUMULATION 5
+#define FSR3UPSCALER_BIND_SRV_SHADING_CHANGE 6
+#define FSR3UPSCALER_BIND_SRV_CURRENT_LUMA 7
+#define FSR3UPSCALER_BIND_SRV_INPUT_EXPOSURE 8
+
+#define FSR3UPSCALER_BIND_UAV_DILATED_REACTIVE_MASKS 9
+#define FSR3UPSCALER_BIND_UAV_NEW_LOCKS 10
+#define FSR3UPSCALER_BIND_UAV_ACCUMULATION 11
+
+#define FSR3UPSCALER_BIND_CB_FSR3UPSCALER 12
+
+#include "fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h"
+#include "fsr3upscaler/ffx_fsr3upscaler_common.h"
+#include "fsr3upscaler/ffx_fsr3upscaler_prepare_reactivity.h"
+
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH
+#define FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH 8
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT
+#define FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT 8
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH
+#define FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH 1
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH
+#ifndef FFX_FSR3UPSCALER_NUM_THREADS
+#define FFX_FSR3UPSCALER_NUM_THREADS layout (local_size_x = FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH, local_size_y = FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT, local_size_z = FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH) in;
+#endif // #ifndef FFX_FSR3UPSCALER_NUM_THREADS
+
+FFX_FSR3UPSCALER_NUM_THREADS
+void main()
+{
+ PrepareReactivity(FfxInt32x2(gl_GlobalInvocationID.xy));
+}
diff --git a/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_rcas_pass.glsl b/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_rcas_pass.glsl
new file mode 100644
index 0000000000..112c2e5fbc
--- /dev/null
+++ b/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_rcas_pass.glsl
@@ -0,0 +1,59 @@
+// This file is part of the FidelityFX SDK.
+//
+// Copyright (C) 2024 Advanced Micro Devices, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files(the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions :
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#version 450
+
+#extension GL_GOOGLE_include_directive : require
+#extension GL_EXT_samplerless_texture_functions : require
+// Needed for rw_upscaled_output declaration
+#extension GL_EXT_shader_image_load_formatted : require
+
+#define FSR3UPSCALER_BIND_SRV_INPUT_EXPOSURE 0
+#define FSR3UPSCALER_BIND_SRV_RCAS_INPUT 1
+
+#define FSR3UPSCALER_BIND_UAV_UPSCALED_OUTPUT 2
+
+#define FSR3UPSCALER_BIND_CB_FSR3UPSCALER 3
+#define FSR3UPSCALER_BIND_CB_RCAS 4
+
+#include "fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h"
+#include "fsr3upscaler/ffx_fsr3upscaler_common.h"
+#include "fsr3upscaler/ffx_fsr3upscaler_rcas.h"
+
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH
+#define FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH 64
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT
+#define FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT 1
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH
+#define FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH 1
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH
+#ifndef FFX_FSR3UPSCALER_NUM_THREADS
+#define FFX_FSR3UPSCALER_NUM_THREADS layout (local_size_x = FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH, local_size_y = FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT, local_size_z = FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH) in;
+#endif // #ifndef FFX_FSR3UPSCALER_NUM_THREADS
+
+FFX_FSR3UPSCALER_NUM_THREADS
+void main()
+{
+ RCAS(gl_LocalInvocationID.xyz, gl_WorkGroupID.xyz, gl_GlobalInvocationID.xyz);
+}
diff --git a/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_shading_change_pass.glsl b/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_shading_change_pass.glsl
new file mode 100644
index 0000000000..539728f0a1
--- /dev/null
+++ b/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_shading_change_pass.glsl
@@ -0,0 +1,55 @@
+// This file is part of the FidelityFX SDK.
+//
+// Copyright (C) 2024 Advanced Micro Devices, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files(the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions :
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#version 450
+
+#extension GL_GOOGLE_include_directive : require
+#extension GL_EXT_samplerless_texture_functions : require
+
+#define FSR3UPSCALER_BIND_SRV_SPD_MIPS 0
+
+#define FSR3UPSCALER_BIND_UAV_SHADING_CHANGE 1
+
+#define FSR3UPSCALER_BIND_CB_FSR3UPSCALER 2
+
+#include "fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h"
+#include "fsr3upscaler/ffx_fsr3upscaler_common.h"
+#include "fsr3upscaler/ffx_fsr3upscaler_shading_change.h"
+
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH
+#define FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH 8
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT
+#define FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT 8
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH
+#define FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH 1
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH
+#ifndef FFX_FSR3UPSCALER_NUM_THREADS
+#define FFX_FSR3UPSCALER_NUM_THREADS layout (local_size_x = FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH, local_size_y = FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT, local_size_z = FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH) in;
+#endif // #ifndef FFX_FSR3UPSCALER_NUM_THREADS
+
+FFX_FSR3UPSCALER_NUM_THREADS
+void main()
+{
+ ShadingChange(FfxInt32x2(gl_GlobalInvocationID.xy));
+}
diff --git a/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_shading_change_pyramid_pass.glsl b/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_shading_change_pyramid_pass.glsl
new file mode 100644
index 0000000000..5e02d3da91
--- /dev/null
+++ b/externals/FidelityFX-SDK/shaders/fsr3upscaler/ffx_fsr3upscaler_shading_change_pyramid_pass.glsl
@@ -0,0 +1,67 @@
+// This file is part of the FidelityFX SDK.
+//
+// Copyright (C) 2024 Advanced Micro Devices, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files(the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and /or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions :
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#version 450
+
+#extension GL_GOOGLE_include_directive : require
+#extension GL_EXT_samplerless_texture_functions : require
+
+#define FSR3UPSCALER_BIND_SRV_CURRENT_LUMA 0
+#define FSR3UPSCALER_BIND_SRV_PREVIOUS_LUMA 1
+#define FSR3UPSCALER_BIND_SRV_DILATED_MOTION_VECTORS 2
+#define FSR3UPSCALER_BIND_SRV_INPUT_EXPOSURE 3
+
+
+#define FSR3UPSCALER_BIND_UAV_SPD_GLOBAL_ATOMIC 4
+#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_0 5
+#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_1 6
+#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_2 7
+#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_3 8
+#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_4 9
+#define FSR3UPSCALER_BIND_UAV_SPD_MIPS_LEVEL_5 10
+
+
+#define FSR3UPSCALER_BIND_CB_FSR3UPSCALER 11
+#define FSR3UPSCALER_BIND_CB_SPD 12
+
+#include "fsr3upscaler/ffx_fsr3upscaler_callbacks_glsl.h"
+#include "fsr3upscaler/ffx_fsr3upscaler_common.h"
+#include "fsr3upscaler/ffx_fsr3upscaler_shading_change_pyramid.h"
+
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH
+#define FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH 256
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT
+#define FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT 1
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT
+#ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH
+#define FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH 1
+#endif // #ifndef FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH
+#ifndef FFX_FSR3UPSCALER_NUM_THREADS
+#define FFX_FSR3UPSCALER_NUM_THREADS layout (local_size_x = FFX_FSR3UPSCALER_THREAD_GROUP_WIDTH, local_size_y = FFX_FSR3UPSCALER_THREAD_GROUP_HEIGHT, local_size_z = FFX_FSR3UPSCALER_THREAD_GROUP_DEPTH) in;
+#endif // #ifndef FFX_FSR3UPSCALER_NUM_THREADS
+
+FFX_FSR3UPSCALER_NUM_THREADS
+void main()
+{
+ ComputeShadingChangePyramid(gl_WorkGroupID, gl_LocalInvocationIndex);
+}