From c8eebd63ed3a234b3c91c161f72356e7915573a5 Mon Sep 17 00:00:00 2001 From: Nico de Poel Date: Wed, 19 Mar 2025 22:04:40 +0100 Subject: [PATCH] Added multi-compile keywords for all fragment shaders, and added Metal workaround for texture atomics --- .../ASR/Shaders/ffxm_fsr2_common.cginc | 7 +++++ .../Upscaling/ASR/Shaders/ffxm_fsr2_fs.shader | 26 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_common.cginc b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_common.cginc index 11f4edd..4d8ce66 100644 --- a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_common.cginc +++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_common.cginc @@ -2,3 +2,10 @@ #pragma warning(disable: 3203) // Signed/unsigned mismatch #pragma warning(disable: 3205) // Conversion from larger type to smaller, possible loss of data #pragma warning(disable: 3556) // Integer divides might be much slower, try using uints if possible + +// Work around the lack of texture atomics on Metal +#if defined(SHADER_API_METAL) +#define InterlockedAdd(dest, val, orig) { (orig) = (dest); (dest) += (val); } +#define InterlockedMin(dest, val) { (dest) = min((dest), (val)); } +#define InterlockedMax(dest, val) { (dest) = max((dest), (val)); } +#endif diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_fs.shader b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_fs.shader index 4e1e847..9066d1e 100644 --- a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_fs.shader +++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_fs.shader @@ -13,6 +13,9 @@ Shader "TND/ASR/ffx_fsr2_fs" #pragma fragment main #pragma target 4.5 //#pragma enable_d3d11_debug_symbols + + #pragma multi_compile __ FFXM_HALF + #pragma multi_compile __ UNITY_FFXM_TEXTURE2D_X_ARRAY #include "ffxm_fsr2_common.cginc" #include "shaders/ffxm_fsr2_vs.hlsl" @@ -31,6 +34,13 @@ Shader "TND/ASR/ffx_fsr2_fs" #pragma target 4.5 //#pragma enable_d3d11_debug_symbols + #pragma multi_compile __ FFXM_HALF + #pragma multi_compile __ FFXM_FSR2_OPTION_HDR_COLOR_INPUT + #pragma multi_compile __ FFXM_FSR2_OPTION_LOW_RESOLUTION_MOTION_VECTORS + #pragma multi_compile __ FFXM_FSR2_OPTION_JITTERED_MOTION_VECTORS + #pragma multi_compile __ FFXM_FSR2_OPTION_INVERTED_DEPTH + #pragma multi_compile __ UNITY_FFXM_TEXTURE2D_X_ARRAY + #include "ffxm_fsr2_common.cginc" #include "shaders/ffxm_fsr2_vs.hlsl" #include "shaders/ffxm_fsr2_reconstruct_previous_depth_pass_fs.hlsl" @@ -48,6 +58,12 @@ Shader "TND/ASR/ffx_fsr2_fs" #pragma target 4.5 //#pragma enable_d3d11_debug_symbols + #pragma multi_compile __ FFXM_HALF + #pragma multi_compile __ FFXM_FSR2_OPTION_LOW_RESOLUTION_MOTION_VECTORS + #pragma multi_compile __ FFXM_FSR2_OPTION_JITTERED_MOTION_VECTORS + #pragma multi_compile __ FFXM_FSR2_OPTION_INVERTED_DEPTH + #pragma multi_compile __ UNITY_FFXM_TEXTURE2D_X_ARRAY + #include "ffxm_fsr2_common.cginc" #include "shaders/ffxm_fsr2_vs.hlsl" #include "shaders/ffxm_fsr2_depth_clip_pass_fs.hlsl" @@ -65,6 +81,14 @@ Shader "TND/ASR/ffx_fsr2_fs" #pragma target 4.5 //#pragma enable_d3d11_debug_symbols + #pragma multi_compile __ FFXM_HALF + #pragma multi_compile __ FFXM_FSR2_OPTION_REPROJECT_USE_LANCZOS_TYPE + #pragma multi_compile __ FFXM_FSR2_OPTION_HDR_COLOR_INPUT + #pragma multi_compile __ FFXM_FSR2_OPTION_LOW_RESOLUTION_MOTION_VECTORS + #pragma multi_compile __ FFXM_FSR2_OPTION_JITTERED_MOTION_VECTORS + #pragma multi_compile __ FFXM_FSR2_OPTION_APPLY_SHARPENING + #pragma multi_compile __ UNITY_FFXM_TEXTURE2D_X_ARRAY + #include "ffxm_fsr2_common.cginc" #include "shaders/ffxm_fsr2_vs.hlsl" #include "shaders/ffxm_fsr2_accumulate_pass_fs.hlsl" @@ -82,6 +106,8 @@ Shader "TND/ASR/ffx_fsr2_fs" #pragma target 4.5 //#pragma enable_d3d11_debug_symbols + #pragma multi_compile __ UNITY_FFXM_TEXTURE2D_X_ARRAY + #include "ffxm_fsr2_common.cginc" #include "shaders/ffxm_fsr2_vs.hlsl" #include "shaders/ffxm_fsr2_rcas_pass_fs.hlsl"