Browse Source

Added Legacy variants of the ASR shaders, without DXC, Native16Bit or wave operations. Separated them into an AsrShaderBundle that can be selected from at run-time based on the current graphics device.

armasr
Nico de Poel 10 months ago
parent
commit
facfd037d2
  1. 5
      Packages/com.unity.postprocessing@3.2.2/PostProcessing/PostProcessResources.asset
  2. 4
      Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Runtime/Asr.cs
  3. 44
      Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Runtime/AsrAssets.cs
  4. 122
      Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_fragment_legacy.shader
  5. 9
      Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_fragment_legacy.shader.meta
  6. 2
      Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_fragment_modern.shader
  7. 12
      Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_lock_legacy.compute
  8. 3
      Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_lock_legacy.compute.meta
  9. 15
      Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_luma_pyramid_legacy.compute
  10. 3
      Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Shaders/ffxm_fsr2_luma_pyramid_legacy.compute.meta
  11. 2
      Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/PostProcessResources.cs

5
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:
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}

4
Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/Effects/Upscaling/ASR/Runtime/Asr.cs

@ -33,7 +33,7 @@ namespace ArmASR
/// <summary>
/// Creates a new ASR context with standard parameters that are appropriate for the current platform.
/// </summary>
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();

44
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"),
},
};
}
@ -64,6 +74,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;
}
}
}
/// <summary>
/// All the compute shaders used by ASR.
/// </summary>

122
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
}
}
}

9
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:

2
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"
}

12
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"

3
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

15
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"

3
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

2
Packages/com.unity.postprocessing@3.2.2/PostProcessing/Runtime/PostProcessResources.cs

@ -297,7 +297,7 @@ namespace UnityEngine.Rendering.PostProcessing
/// <summary>
/// Shaders used by the Arm Accuracy Super Resolution (ASR) Upscaler.
/// </summary>
public AsrShaders asrUpscalerShaders;
public AsrShaderBundle asrUpscalerShaders;
#if UNITY_EDITOR
/// <summary>

Loading…
Cancel
Save