From 9733de70677c90160d0200bc4064077850a9c367 Mon Sep 17 00:00:00 2001 From: Nico de Poel Date: Sun, 26 Feb 2023 12:45:36 +0100 Subject: [PATCH] Added some quick hacks to allow the shaders to compile for Metal. These "interlocked" functions are not interlocked anymore now, but it's good enough for an initial test on MacOS. --- .../FSR2/ffx_fsr2_compute_luminance_pyramid_pass.compute | 4 ++++ .../FSR2/ffx_fsr2_reconstruct_previous_depth_pass.compute | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/Assets/Resources/FSR2/ffx_fsr2_compute_luminance_pyramid_pass.compute b/Assets/Resources/FSR2/ffx_fsr2_compute_luminance_pyramid_pass.compute index c1346ca..b18636d 100644 --- a/Assets/Resources/FSR2/ffx_fsr2_compute_luminance_pyramid_pass.compute +++ b/Assets/Resources/FSR2/ffx_fsr2_compute_luminance_pyramid_pass.compute @@ -12,4 +12,8 @@ #define FFX_HLSL // Compile for plain HLSL #define SPD_NO_WAVE_OPERATIONS // Wave operations require shader model 6.0; this works with #pragma use_dxc but only on D3D12 +#if SHADER_API_METAL +#define InterlockedAdd(dest, val, orig) { (orig) = (dest); (dest) += (val); } +#endif + #include "shaders/ffx_fsr2_compute_luminance_pyramid_pass.hlsl" diff --git a/Assets/Resources/FSR2/ffx_fsr2_reconstruct_previous_depth_pass.compute b/Assets/Resources/FSR2/ffx_fsr2_reconstruct_previous_depth_pass.compute index 1cad881..3bb6e5a 100644 --- a/Assets/Resources/FSR2/ffx_fsr2_reconstruct_previous_depth_pass.compute +++ b/Assets/Resources/FSR2/ffx_fsr2_reconstruct_previous_depth_pass.compute @@ -11,4 +11,9 @@ #define FFX_GPU // Compiling for GPU #define FFX_HLSL // Compile for plain HLSL +#if SHADER_API_METAL +#define InterlockedMin(dest, val) { (dest) = min((dest), (val)); } +#define InterlockedMax(dest, val) { (dest) = max((dest), (val)); } +#endif + #include "shaders/ffx_fsr2_reconstruct_previous_depth_pass.hlsl"