diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/PostProcessResources.asset b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/PostProcessResources.asset
index 36cc0e2..8aa70bb 100644
--- a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/PostProcessResources.asset
+++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/PostProcessResources.asset
@@ -160,6 +160,11 @@ MonoBehaviour:
activate: {fileID: 7200000, guid: d7de362950af6fe4e90da7d6e32f9826, type: 3}
upscale: {fileID: 7200000, guid: 5d28d29787492b74aa736a21f70572c7, type: 3}
asrUpscalerShaders:
- fragmentShader: {fileID: 4800000, guid: 147cc2cffac69ef4eb3ea8addafc9d10, type: 3}
- computeLuminancePyramidPass: {fileID: 7200000, guid: 57220d870cb441c8a6df8a9e15a74283, type: 3}
- lockPass: {fileID: 7200000, guid: a6e1d5d5372d467790fcf2d089b50ef7, type: 3}
+ legacyShaders:
+ fragmentShader: {fileID: 4800000, guid: 42e5314e46109a441a4527349d8df6e4, type: 3}
+ computeLuminancePyramidPass: {fileID: 7200000, guid: 41d0c3a77d97a904e96ebc2bf18129f6, type: 3}
+ lockPass: {fileID: 7200000, guid: a09277df48840a84196b3bac299544ea, type: 3}
+ modernShaders:
+ fragmentShader: {fileID: 4800000, guid: 147cc2cffac69ef4eb3ea8addafc9d10, type: 3}
+ computeLuminancePyramidPass: {fileID: 7200000, guid: 57220d870cb441c8a6df8a9e15a74283, type: 3}
+ lockPass: {fileID: 7200000, guid: a6e1d5d5372d467790fcf2d089b50ef7, type: 3}
diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Runtime/Asr.cs b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Runtime/Asr.cs
index c9a5511..9c414b1 100644
--- a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Runtime/Asr.cs
+++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Runtime/Asr.cs
@@ -33,7 +33,7 @@ namespace ArmASR
///
/// Creates a new ASR context with standard parameters that are appropriate for the current platform.
///
- public static AsrContext CreateContext(Variant variant, Vector2Int displaySize, Vector2Int maxRenderSize, AsrShaders shaders, InitializationFlags flags = 0)
+ public static AsrContext CreateContext(Variant variant, Vector2Int displaySize, Vector2Int maxRenderSize, AsrShaderBundle shaders, InitializationFlags flags = 0)
{
if (SystemInfo.usesReversedZBuffer)
flags |= InitializationFlags.EnableDepthInverted;
@@ -52,7 +52,7 @@ namespace ArmASR
Variant = variant,
DisplaySize = displaySize,
MaxRenderSize = maxRenderSize,
- Shaders = shaders,
+ Shaders = shaders.GetShadersForCurrentPlatform(),
};
var context = new AsrContext();
diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Runtime/AsrAssets.cs b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Runtime/AsrAssets.cs
index b44859c..3a910a0 100644
--- a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Runtime/AsrAssets.cs
+++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Runtime/AsrAssets.cs
@@ -19,6 +19,7 @@
// THE SOFTWARE.
using UnityEngine;
+using UnityEngine.Rendering;
namespace ArmASR
{
@@ -29,16 +30,25 @@ namespace ArmASR
[CreateAssetMenu(fileName = "ASR Assets", menuName = "ARM/ASR Assets", order = 1102)]
public class AsrAssets : ScriptableObject
{
- public AsrShaders shaders;
+ public AsrShaderBundle shaderBundle;
#if UNITY_EDITOR
private void Reset()
{
- shaders = new AsrShaders
+ shaderBundle = new AsrShaderBundle
{
- fragmentShader = FindFragmentShader("ffxm_fsr2_fs"),
- computeLuminancePyramidPass = FindComputeShader("ffxm_fsr2_compute_luminance_pyramid_pass"),
- lockPass = FindComputeShader("ffxm_fsr2_lock_pass"),
+ legacyShaders = new AsrShaders
+ {
+ fragmentShader = FindFragmentShader("ffxm_fsr2_fragment_legacy"),
+ computeLuminancePyramidPass = FindComputeShader("ffxm_fsr2_luma_pyramid_legacy"),
+ lockPass = FindComputeShader("ffxm_fsr2_lock_legacy"),
+ },
+ modernShaders = new AsrShaders
+ {
+ fragmentShader = FindFragmentShader("ffxm_fsr2_fragment_modern"),
+ computeLuminancePyramidPass = FindComputeShader("ffxm_fsr2_luma_pyramid_modern"),
+ lockPass = FindComputeShader("ffxm_fsr2_lock_modern"),
+ },
};
}
@@ -63,6 +73,30 @@ namespace ArmASR
}
#endif
}
+
+ [System.Serializable]
+ public class AsrShaderBundle
+ {
+ public AsrShaders legacyShaders;
+
+ public AsrShaders modernShaders;
+
+ public AsrShaders GetShadersForCurrentPlatform()
+ {
+ switch (SystemInfo.graphicsDeviceType)
+ {
+ case GraphicsDeviceType.Direct3D12:
+ case GraphicsDeviceType.Vulkan:
+ case GraphicsDeviceType.Metal:
+ case GraphicsDeviceType.PlayStation5:
+ case GraphicsDeviceType.PlayStation5NGGC:
+ case GraphicsDeviceType.GameCoreXboxSeries:
+ return modernShaders;
+ default:
+ return legacyShaders;
+ }
+ }
+ }
///
/// All the compute shaders used by ASR.
diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_fragment_legacy.shader b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_fragment_legacy.shader
new file mode 100644
index 0000000..236b507
--- /dev/null
+++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_fragment_legacy.shader
@@ -0,0 +1,122 @@
+Shader "TND/ASR/ffxm_fsr2_fragment_legacy"
+{
+ SubShader
+ {
+ Cull Off ZWrite Off ZTest Always
+
+ Pass // 0
+ {
+ Name "Auto-Generate Reactive Mask"
+
+ HLSLPROGRAM
+ #pragma vertex VertMain
+ #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"
+ #include "shaders/ffxm_fsr2_autogen_reactive_pass_fs.hlsl"
+
+ ENDHLSL
+ }
+
+ Pass // 1
+ {
+ Name "Reconstruct Previous Depth"
+
+ HLSLPROGRAM
+ #pragma vertex VertMain
+ #pragma fragment main
+ #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"
+
+ ENDHLSL
+ }
+
+ Pass // 2
+ {
+ Name "Depth Clip"
+
+ HLSLPROGRAM
+ #pragma vertex VertMain
+ #pragma fragment main
+ #pragma target 4.5
+ //#pragma enable_d3d11_debug_symbols
+
+ #pragma multi_compile __ FFXM_HALF
+ #pragma multi_compile __ FFXM_FSR2_OPTION_SHADER_OPT_BALANCED
+ #pragma multi_compile __ FFXM_FSR2_OPTION_SHADER_OPT_PERFORMANCE
+ #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"
+
+ ENDHLSL
+ }
+
+ Pass // 3
+ {
+ Name "Accumulate"
+
+ HLSLPROGRAM
+ #pragma vertex VertMain
+ #pragma fragment main
+ #pragma target 4.5
+ //#pragma enable_d3d11_debug_symbols
+
+ #pragma multi_compile __ FFXM_HALF
+ #pragma multi_compile __ FFXM_FSR2_OPTION_SHADER_OPT_BALANCED
+ #pragma multi_compile __ FFXM_FSR2_OPTION_SHADER_OPT_PERFORMANCE
+ #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"
+
+ ENDHLSL
+ }
+
+ Pass // 4
+ {
+ Name "Sharpen"
+
+ HLSLPROGRAM
+ #pragma vertex VertMain
+ #pragma fragment main
+ #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"
+
+ ENDHLSL
+ }
+ }
+}
diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_fragment_legacy.shader.meta b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_fragment_legacy.shader.meta
new file mode 100644
index 0000000..4fc6554
--- /dev/null
+++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_fragment_legacy.shader.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 42e5314e46109a441a4527349d8df6e4
+ShaderImporter:
+ externalObjects: {}
+ defaultTextures: []
+ nonModifiableTextures: []
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_fragment_modern.shader b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_fragment_modern.shader
index 9ab1cb9..ec7f5a8 100644
--- a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_fragment_modern.shader
+++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_fragment_modern.shader
@@ -134,4 +134,6 @@ Shader "TND/ASR/ffxm_fsr2_fragment_modern"
ENDHLSL
}
}
+
+ Fallback "TND/ASR/ffxm_fsr2_fragment_legacy"
}
diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_lock_legacy.compute b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_lock_legacy.compute
new file mode 100644
index 0000000..660b922
--- /dev/null
+++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_lock_legacy.compute
@@ -0,0 +1,12 @@
+#pragma kernel main
+
+#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_lock_pass.hlsl"
diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_lock_legacy.compute.meta b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_lock_legacy.compute.meta
new file mode 100644
index 0000000..2bfe598
--- /dev/null
+++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_lock_legacy.compute.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: a09277df48840a84196b3bac299544ea
+timeCreated: 1742417134
\ No newline at end of file
diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_luma_pyramid_legacy.compute b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_luma_pyramid_legacy.compute
new file mode 100644
index 0000000..0aeae34
--- /dev/null
+++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_luma_pyramid_legacy.compute
@@ -0,0 +1,15 @@
+#pragma kernel main
+
+#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"
+
+// Disable wave operations altogether
+#define FFXM_SPD_NO_WAVE_OPERATIONS
+
+#include "shaders/ffxm_fsr2_compute_luminance_pyramid_pass.hlsl"
diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_luma_pyramid_legacy.compute.meta b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_luma_pyramid_legacy.compute.meta
new file mode 100644
index 0000000..e102c9d
--- /dev/null
+++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_luma_pyramid_legacy.compute.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 41d0c3a77d97a904e96ebc2bf18129f6
+timeCreated: 1742416757
\ No newline at end of file
diff --git a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/PostProcessResources.cs b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/PostProcessResources.cs
index 867095e..ef3feaa 100644
--- a/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/PostProcessResources.cs
+++ b/Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/PostProcessResources.cs
@@ -297,7 +297,7 @@ namespace UnityEngine.Rendering.PostProcessing
///
/// Shaders used by the Arm Accuracy Super Resolution (ASR) Upscaler.
///
- public AsrShaders asrUpscalerShaders;
+ public AsrShaderBundle asrUpscalerShaders;
#if UNITY_EDITOR
///