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 ///