Browse Source

Backported shader modifications, part 1: PSSL support, removed GLSL extensions and added dummy field.

fsr3
Nico de Poel 2 years ago
parent
commit
fd37e541b1
  1. 100
      Assets/Resources/FSR3/shaders/fsr3upscaler/ffx_common_types.h
  2. 2
      Assets/Resources/FSR3/shaders/fsr3upscaler/ffx_fsr3upscaler_callbacks_hlsl.h
  3. 7
      Assets/Resources/FSR3/shaders/fsr3upscaler/spd/ffx_spd.h

100
Assets/Resources/FSR3/shaders/fsr3upscaler/ffx_common_types.h

@ -260,6 +260,29 @@ typedef int16_t FfxInt16;
typedef int16_t2 FfxInt16x2; typedef int16_t2 FfxInt16x2;
typedef int16_t3 FfxInt16x3; typedef int16_t3 FfxInt16x3;
typedef int16_t4 FfxInt16x4; typedef int16_t4 FfxInt16x4;
#elif SHADER_API_PSSL
#pragma argument(realtypes) // Enable true 16-bit types
typedef half FfxFloat16;
typedef half2 FfxFloat16x2;
typedef half3 FfxFloat16x3;
typedef half4 FfxFloat16x4;
/// A typedef for an unsigned 16bit integer.
///
/// @ingroup GPU
typedef ushort FfxUInt16;
typedef ushort2 FfxUInt16x2;
typedef ushort3 FfxUInt16x3;
typedef ushort4 FfxUInt16x4;
/// A typedef for a signed 16bit integer.
///
/// @ingroup GPU
typedef short FfxInt16;
typedef short2 FfxInt16x2;
typedef short3 FfxInt16x3;
typedef short4 FfxInt16x4;
#else // #if FFX_HLSL_SM>=62 #else // #if FFX_HLSL_SM>=62
typedef min16float FfxFloat16; typedef min16float FfxFloat16;
typedef min16float2 FfxFloat16x2; typedef min16float2 FfxFloat16x2;
@ -334,7 +357,7 @@ typedef min16int4 FfxInt16x4;
// #define FFX_HALF (1) // #define FFX_HALF (1)
// #define FFX_HLSL_SM (62) // #define FFX_HLSL_SM (62)
#if FFX_HALF
#if FFX_HALF && !defined(SHADER_API_PSSL)
#if FFX_HLSL_SM >= 62 #if FFX_HLSL_SM >= 62
@ -372,7 +395,7 @@ typedef min16int4 FfxInt16x4;
#if defined(FFX_GPU) #if defined(FFX_GPU)
// Common typedefs: // Common typedefs:
#if defined(FFX_HLSL)
#if defined(FFX_HLSL) && !defined(SHADER_API_PSSL)
FFX_MIN16_SCALAR( FFX_MIN16_F , float ); FFX_MIN16_SCALAR( FFX_MIN16_F , float );
FFX_MIN16_VECTOR( FFX_MIN16_F2, float, 2 ); FFX_MIN16_VECTOR( FFX_MIN16_F2, float, 2 );
FFX_MIN16_VECTOR( FFX_MIN16_F3, float, 3 ); FFX_MIN16_VECTOR( FFX_MIN16_F3, float, 3 );
@ -446,6 +469,79 @@ typedef FfxUInt32x3 Prefix##_U3; \
typedef FfxUInt32x4 Prefix##_U4; typedef FfxUInt32x4 Prefix##_U4;
#endif // #if defined(FFX_HLSL) #endif // #if defined(FFX_HLSL)
#if defined(SHADER_API_PSSL)
#define unorm
#define globallycoherent
#if FFX_HALF
#define FFX_MIN16_F half
#define FFX_MIN16_F2 half2
#define FFX_MIN16_F3 half3
#define FFX_MIN16_F4 half4
#define FFX_MIN16_I short
#define FFX_MIN16_I2 short2
#define FFX_MIN16_I3 short3
#define FFX_MIN16_I4 short4
#define FFX_MIN16_U ushort
#define FFX_MIN16_U2 ushort2
#define FFX_MIN16_U3 ushort3
#define FFX_MIN16_U4 ushort4
#define FFX_16BIT_F half
#define FFX_16BIT_F2 half2
#define FFX_16BIT_F3 half3
#define FFX_16BIT_F4 half4
#define FFX_16BIT_I short
#define FFX_16BIT_I2 short2
#define FFX_16BIT_I3 short3
#define FFX_16BIT_I4 short4
#define FFX_16BIT_U ushort
#define FFX_16BIT_U2 ushort2
#define FFX_16BIT_U3 ushort3
#define FFX_16BIT_U4 ushort4
#else // FFX_HALF
#define FFX_MIN16_F float
#define FFX_MIN16_F2 float2
#define FFX_MIN16_F3 float3
#define FFX_MIN16_F4 float4
#define FFX_MIN16_I int
#define FFX_MIN16_I2 int2
#define FFX_MIN16_I3 int3
#define FFX_MIN16_I4 int4
#define FFX_MIN16_U uint
#define FFX_MIN16_U2 uint2
#define FFX_MIN16_U3 uint3
#define FFX_MIN16_U4 uint4
#define FFX_16BIT_F float
#define FFX_16BIT_F2 float2
#define FFX_16BIT_F3 float3
#define FFX_16BIT_F4 float4
#define FFX_16BIT_I int
#define FFX_16BIT_I2 int2
#define FFX_16BIT_I3 int3
#define FFX_16BIT_I4 int4
#define FFX_16BIT_U uint
#define FFX_16BIT_U2 uint2
#define FFX_16BIT_U3 uint3
#define FFX_16BIT_U4 uint4
#endif // FFX_HALF
#endif // #if defined(SHADER_API_PSSL)
#if defined(FFX_GLSL) #if defined(FFX_GLSL)
#if FFX_HALF #if FFX_HALF

2
Assets/Resources/FSR3/shaders/fsr3upscaler/ffx_fsr3upscaler_callbacks_hlsl.h

@ -72,6 +72,8 @@
FfxFloat32 fDeltaTime; FfxFloat32 fDeltaTime;
FfxFloat32 fDynamicResChangeFactor; FfxFloat32 fDynamicResChangeFactor;
FfxFloat32 fViewSpaceToMetersFactor; FfxFloat32 fViewSpaceToMetersFactor;
FfxInt32 iDummy;
}; };
#define FFX_FSR3UPSCALER_CONSTANT_BUFFER_1_SIZE (sizeof(cbFSR3Upscaler) / 4) // Number of 32-bit values. This must be kept in sync with the cbFSR3Upscaler size. #define FFX_FSR3UPSCALER_CONSTANT_BUFFER_1_SIZE (sizeof(cbFSR3Upscaler) / 4) // Number of 32-bit values. This must be kept in sync with the cbFSR3Upscaler size.

7
Assets/Resources/FSR3/shaders/fsr3upscaler/spd/ffx_spd.h

@ -119,9 +119,6 @@ FfxFloat32x4 SpdReduce4(FfxFloat32x4 v0, FfxFloat32x4 v1, FfxFloat32x4 v2, FfxFl
#endif // #if FFX_SPD_PACKED_ONLY #endif // #if FFX_SPD_PACKED_ONLY
//_____________________________________________________________/\_______________________________________________________________ //_____________________________________________________________/\_______________________________________________________________
#if defined(FFX_GLSL) && !defined(FFX_SPD_NO_WAVE_OPERATIONS)
#extension GL_KHR_shader_subgroup_quad:require
#endif
void ffxSpdWorkgroupShuffleBarrier() void ffxSpdWorkgroupShuffleBarrier()
{ {
@ -579,10 +576,6 @@ void SpdDownsample(FfxUInt32x2 workGroupID, FfxUInt32 localInvocationIndex, FfxU
#if FFX_HALF #if FFX_HALF
#if defined(FFX_GLSL)
#extension GL_EXT_shader_subgroup_extended_types_float16:require
#endif
FfxFloat16x4 SpdReduceQuadH(FfxFloat16x4 v) FfxFloat16x4 SpdReduceQuadH(FfxFloat16x4 v)
{ {
#if defined(FFX_GLSL) && !defined(FFX_SPD_NO_WAVE_OPERATIONS) #if defined(FFX_GLSL) && !defined(FFX_SPD_NO_WAVE_OPERATIONS)

Loading…
Cancel
Save