@ -19,14 +19,14 @@
/ / OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
/ / SOFTWARE .
# include "./fsr2/f fxm_fsr2_resources.h"
# include "./ffxm_fsr2_resources.h"
# if defined(FFXM_GPU)
# ifdef __hlsl_dx_compiler
# pragma dxc diagnostic push
# pragma dxc diagnostic ignored "-Wambig-lit-shift"
# endif / / __hlsl_dx_compiler
# include "./ffxm_core.h"
# include ".. /ffxm_core.h"
# ifdef __hlsl_dx_compiler
# pragma dxc diagnostic pop
# endif / / __hlsl_dx_compiler
@ -57,7 +57,7 @@
# endif
# if defined(FSR2_BIND_CB_FSR2)
[ [ vk : : binding ( FSR2_BIND_CB_FSR2 + SET_0_CB_START , 0 ) ] ] cbuffer cbFSR2 : FFXM_FSR2_DECLARE_CB ( FSR2_BIND_CB_FSR2 )
cbuffer cbFSR2 : FFXM_FSR2_DECLARE_CB ( FSR2_BIND_CB_FSR2 )
{
FfxInt32x2 iRenderSize ;
FfxInt32x2 iMaxRenderSize ;
@ -225,7 +225,7 @@ FfxFloat32 ViewSpaceToMetersFactor()
# endif / / #if FFXM_FSR2_EMBED_ROOTSIG
# if defined(FSR2_BIND_CB_RCAS)
[ [ vk : : binding ( FSR2_BIND_CB_RCAS + SET_0_CB_START , 0 ) ] ] cbuffer cbRCAS : FFXM_FSR2_DECLARE_CB ( FSR2_BIND_CB_RCAS )
cbuffer cbRCAS : FFXM_FSR2_DECLARE_CB ( FSR2_BIND_CB_RCAS )
{
FfxUInt32x4 rcasConfig ;
} ;
@ -238,7 +238,7 @@ FfxUInt32x4 RCASConfig()
# if defined(FSR2_BIND_CB_REACTIVE)
[ [ vk : : binding ( FSR2_BIND_CB_REACTIVE + SET_0_CB_START , 0 ) ] ] cbuffer cbGenerateReactive : FFXM_FSR2_DECLARE_CB ( FSR2_BIND_CB_REACTIVE )
cbuffer cbGenerateReactive : FFXM_FSR2_DECLARE_CB ( FSR2_BIND_CB_REACTIVE )
{
FfxFloat32 gen_reactive_scale ;
FfxFloat32 gen_reactive_threshold ;
@ -268,7 +268,7 @@ FfxUInt32 GenReactiveFlags()
# endif / / #if defined(FSR2_BIND_CB_REACTIVE)
# if defined(FSR2_BIND_CB_SPD)
[ [ vk : : binding ( FSR2_BIND_CB_SPD + SET_0_CB_START , 0 ) ] ] cbuffer cbSPD : FFXM_FSR2_DECLARE_CB ( FSR2_BIND_CB_SPD ) {
cbuffer cbSPD : FFXM_FSR2_DECLARE_CB ( FSR2_BIND_CB_SPD ) {
FfxUInt32 mips ;
FfxUInt32 numWorkGroups ;
@ -297,136 +297,136 @@ FfxUInt32x2 SPD_RenderSize()
}
# endif / / #if defined(FSR2_BIND_CB_SPD)
[ [ vk : : binding ( 0 , 0 ) ] ] SamplerState s_PointClamp : register ( s0 ) ;
[ [ vk : : binding ( 1 , 0 ) ] ] SamplerState s_LinearClamp : register ( s1 ) ;
SamplerState s_PointClamp : register ( s0 ) ;
SamplerState s_LinearClamp : register ( s1 ) ;
/ / SRVs
# if defined FSR2_BIND_SRV_INPUT_COLOR
[ [ vk : : binding ( FSR2_BIND_SRV_INPUT_COLOR , 1 ) ] ] Texture2D < FfxFloat32x4 > r_input_color_jittered : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_INPUT_COLOR ) ;
Texture2D < FfxFloat32x4 > r_input_color_jittered : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_INPUT_COLOR ) ;
# endif
# if defined FSR2_BIND_SRV_INPUT_OPAQUE_ONLY
[ [ vk : : binding ( FSR2_BIND_SRV_INPUT_OPAQUE_ONLY , 1 ) ] ] Texture2D < FfxFloat32x4 > r_input_opaque_only : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_INPUT_OPAQUE_ONLY ) ;
Texture2D < FfxFloat32x4 > r_input_opaque_only : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_INPUT_OPAQUE_ONLY ) ;
# endif
# if defined FSR2_BIND_SRV_INPUT_MOTION_VECTORS
[ [ vk : : binding ( FSR2_BIND_SRV_INPUT_MOTION_VECTORS , 1 ) ] ] Texture2D < FfxFloat32x4 > r_input_motion_vectors : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_INPUT_MOTION_VECTORS ) ;
Texture2D < FfxFloat32x4 > r_input_motion_vectors : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_INPUT_MOTION_VECTORS ) ;
# endif
# if defined FSR2_BIND_SRV_INPUT_DEPTH
[ [ vk : : binding ( FSR2_BIND_SRV_INPUT_DEPTH , 1 ) ] ] Texture2D < FfxFloat32 > r_input_depth : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_INPUT_DEPTH ) ;
Texture2D < FfxFloat32 > r_input_depth : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_INPUT_DEPTH ) ;
# endif
# if defined FSR2_BIND_SRV_INPUT_EXPOSURE
[ [ vk : : binding ( FSR2_BIND_SRV_INPUT_EXPOSURE , 1 ) ] ] Texture2D < FfxFloat32x2 > r_input_exposure : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_INPUT_EXPOSURE ) ;
Texture2D < FfxFloat32x2 > r_input_exposure : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_INPUT_EXPOSURE ) ;
# endif
# if defined FSR2_BIND_SRV_AUTO_EXPOSURE
[ [ vk : : binding ( FSR2_BIND_SRV_AUTO_EXPOSURE , 1 ) ] ] Texture2D < FfxFloat32x2 > r_auto_exposure : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_AUTO_EXPOSURE ) ;
Texture2D < FfxFloat32x2 > r_auto_exposure : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_AUTO_EXPOSURE ) ;
# endif
# if defined FSR2_BIND_SRV_REACTIVE_MASK
[ [ vk : : binding ( FSR2_BIND_SRV_REACTIVE_MASK , 1 ) ] ] Texture2D < FfxFloat32 > r_reactive_mask : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_REACTIVE_MASK ) ;
Texture2D < FfxFloat32 > r_reactive_mask : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_REACTIVE_MASK ) ;
# endif
# if defined FSR2_BIND_SRV_TRANSPARENCY_AND_COMPOSITION_MASK
[ [ vk : : binding ( FSR2_BIND_SRV_TRANSPARENCY_AND_COMPOSITION_MASK , 1 ) ] ] Texture2D < FfxFloat32 > r_transparency_and_composition_mask : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_TRANSPARENCY_AND_COMPOSITION_MASK ) ;
Texture2D < FfxFloat32 > r_transparency_and_composition_mask : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_TRANSPARENCY_AND_COMPOSITION_MASK ) ;
# endif
# if defined FSR2_BIND_SRV_RECONSTRUCTED_PREV_NEAREST_DEPTH
[ [ vk : : binding ( FSR2_BIND_SRV_RECONSTRUCTED_PREV_NEAREST_DEPTH , 1 ) ] ] Texture2D < FfxUInt32 > r_reconstructed_previous_nearest_depth : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_RECONSTRUCTED_PREV_NEAREST_DEPTH ) ;
Texture2D < FfxUInt32 > r_reconstructed_previous_nearest_depth : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_RECONSTRUCTED_PREV_NEAREST_DEPTH ) ;
# endif
# if defined FSR2_BIND_SRV_DILATED_MOTION_VECTORS
[ [ vk : : binding ( FSR2_BIND_SRV_DILATED_MOTION_VECTORS , 1 ) ] ] Texture2D < FfxFloat32x2 > r_dilated_motion_vectors : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_DILATED_MOTION_VECTORS ) ;
Texture2D < FfxFloat32x2 > r_dilated_motion_vectors : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_DILATED_MOTION_VECTORS ) ;
# endif
# if defined FSR2_BIND_SRV_PREVIOUS_DILATED_MOTION_VECTORS
[ [ vk : : binding ( FSR2_BIND_SRV_PREVIOUS_DILATED_MOTION_VECTORS , 1 ) ] ] Texture2D < FfxFloat32x2 > r_previous_dilated_motion_vectors : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_PREVIOUS_DILATED_MOTION_VECTORS ) ;
Texture2D < FfxFloat32x2 > r_previous_dilated_motion_vectors : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_PREVIOUS_DILATED_MOTION_VECTORS ) ;
# endif
# if defined FSR2_BIND_SRV_DILATED_DEPTH
[ [ vk : : binding ( FSR2_BIND_SRV_DILATED_DEPTH , 1 ) ] ] Texture2D < FfxFloat32 > r_dilatedDepth : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_DILATED_DEPTH ) ;
Texture2D < FfxFloat32 > r_dilatedDepth : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_DILATED_DEPTH ) ;
# endif
# if defined FSR2_BIND_SRV_INTERNAL_UPSCALED
[ [ vk : : binding ( FSR2_BIND_SRV_INTERNAL_UPSCALED , 1 ) ] ] Texture2D < FfxFloat32x4 > r_internal_upscaled_color : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_INTERNAL_UPSCALED ) ;
Texture2D < FfxFloat32x4 > r_internal_upscaled_color : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_INTERNAL_UPSCALED ) ;
# endif
# if defined FSR2_BIND_SRV_LOCK_STATUS
[ [ vk : : binding ( FSR2_BIND_SRV_LOCK_STATUS , 1 ) ] ] Texture2D < unorm FfxFloat32x2 > r_lock_status : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_LOCK_STATUS ) ;
Texture2D < unorm FfxFloat32x2 > r_lock_status : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_LOCK_STATUS ) ;
# endif
# if defined FSR2_BIND_SRV_LOCK_INPUT_LUMA
[ [ vk : : binding ( FSR2_BIND_SRV_LOCK_INPUT_LUMA , 1 ) ] ] Texture2D < FfxFloat32 > r_lock_input_luma : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_LOCK_INPUT_LUMA ) ;
Texture2D < FfxFloat32 > r_lock_input_luma : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_LOCK_INPUT_LUMA ) ;
# endif
# if defined FSR2_BIND_SRV_NEW_LOCKS
[ [ vk : : binding ( FSR2_BIND_SRV_NEW_LOCKS , 1 ) ] ] Texture2D < unorm FfxFloat32 > r_new_locks : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_NEW_LOCKS ) ;
Texture2D < unorm FfxFloat32 > r_new_locks : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_NEW_LOCKS ) ;
# endif
# if defined FSR2_BIND_SRV_PREPARED_INPUT_COLOR
[ [ vk : : binding ( FSR2_BIND_SRV_PREPARED_INPUT_COLOR , 1 ) ] ] Texture2D < FfxFloat32x4 > r_prepared_input_color : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_PREPARED_INPUT_COLOR ) ;
Texture2D < FfxFloat32x4 > r_prepared_input_color : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_PREPARED_INPUT_COLOR ) ;
# endif
# if defined FSR2_BIND_SRV_LUMA_HISTORY
[ [ vk : : binding ( FSR2_BIND_SRV_LUMA_HISTORY , 1 ) ] ] Texture2D < unorm FfxFloat32x4 > r_luma_history : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_LUMA_HISTORY ) ;
Texture2D < unorm FfxFloat32x4 > r_luma_history : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_LUMA_HISTORY ) ;
# endif
# if defined FSR2_BIND_SRV_RCAS_INPUT
[ [ vk : : binding ( FSR2_BIND_SRV_RCAS_INPUT , 1 ) ] ] Texture2D < FfxFloat32x4 > r_rcas_input : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_RCAS_INPUT ) ;
Texture2D < FfxFloat32x4 > r_rcas_input : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_RCAS_INPUT ) ;
# endif
# if defined FSR2_BIND_SRV_LANCZOS_LUT
[ [ vk : : binding ( FSR2_BIND_SRV_LANCZOS_LUT , 1 ) ] ] Texture2D < FfxFloat32 > r_lanczos_lut : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_LANCZOS_LUT ) ;
Texture2D < FfxFloat32 > r_lanczos_lut : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_LANCZOS_LUT ) ;
# endif
# if defined FSR2_BIND_SRV_SCENE_LUMINANCE_MIPS
[ [ vk : : binding ( FSR2_BIND_SRV_SCENE_LUMINANCE_MIPS , 1 ) ] ] Texture2D < FfxFloat32 > r_imgMips : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_SCENE_LUMINANCE_MIPS ) ;
Texture2D < FfxFloat32 > r_imgMips : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_SCENE_LUMINANCE_MIPS ) ;
# endif
# if defined FSR2_BIND_SRV_UPSCALE_MAXIMUM_BIAS_LUT
[ [ vk : : binding ( FSR2_BIND_SRV_UPSCALE_MAXIMUM_BIAS_LUT , 1 ) ] ] Texture2D < FfxFloat32 > r_upsample_maximum_bias_lut : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_UPSCALE_MAXIMUM_BIAS_LUT ) ;
Texture2D < FfxFloat32 > r_upsample_maximum_bias_lut : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_UPSCALE_MAXIMUM_BIAS_LUT ) ;
# endif
# if defined FSR2_BIND_SRV_DILATED_REACTIVE_MASKS
[ [ vk : : binding ( FSR2_BIND_SRV_DILATED_REACTIVE_MASKS , 1 ) ] ] Texture2D < unorm FfxFloat32x2 > r_dilated_reactive_masks : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_DILATED_REACTIVE_MASKS ) ;
Texture2D < unorm FfxFloat32x2 > r_dilated_reactive_masks : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_DILATED_REACTIVE_MASKS ) ;
# endif
# if defined FSR2_BIND_SRV_TEMPORAL_REACTIVE
[ [ vk : : binding ( FSR2_BIND_SRV_TEMPORAL_REACTIVE , 1 ) ] ] Texture2D < FfxFloat32 > r_internal_temporal_reactive : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_TEMPORAL_REACTIVE ) ;
Texture2D < FfxFloat32 > r_internal_temporal_reactive : FFXM_FSR2_DECLARE_SRV ( FSR2_BIND_SRV_TEMPORAL_REACTIVE ) ;
# endif
/ / UAV declarations
# if defined FSR2_BIND_UAV_RECONSTRUCTED_PREV_NEAREST_DEPTH
[ [ vk : : binding ( FSR2_BIND_UAV_RECONSTRUCTED_PREV_NEAREST_DEPTH , 1 ) ] ] RWTexture2D < FfxUInt32 > rw_reconstructed_previous_nearest_depth : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_RECONSTRUCTED_PREV_NEAREST_DEPTH ) ;
RWTexture2D < FfxUInt32 > rw_reconstructed_previous_nearest_depth : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_RECONSTRUCTED_PREV_NEAREST_DEPTH ) ;
# endif
# if defined FSR2_BIND_UAV_DILATED_MOTION_VECTORS
[ [ vk : : binding ( FSR2_BIND_UAV_DILATED_MOTION_VECTORS , 1 ) ] ] RWTexture2D < FfxFloat32x2 > rw_dilated_motion_vectors : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_DILATED_MOTION_VECTORS ) ;
RWTexture2D < FfxFloat32x2 > rw_dilated_motion_vectors : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_DILATED_MOTION_VECTORS ) ;
# endif
# if defined FSR2_BIND_UAV_DILATED_DEPTH
[ [ vk : : binding ( FSR2_BIND_UAV_DILATED_DEPTH , 1 ) ] ] RWTexture2D < FfxFloat32 > rw_dilatedDepth : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_DILATED_DEPTH ) ;
RWTexture2D < FfxFloat32 > rw_dilatedDepth : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_DILATED_DEPTH ) ;
# endif
# if defined FSR2_BIND_UAV_INTERNAL_UPSCALED
[ [ vk : : binding ( FSR2_BIND_UAV_INTERNAL_UPSCALED , 1 ) ] ] RWTexture2D < FfxFloat32x4 > rw_internal_upscaled_color : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_INTERNAL_UPSCALED ) ;
RWTexture2D < FfxFloat32x4 > rw_internal_upscaled_color : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_INTERNAL_UPSCALED ) ;
# endif
# if defined FSR2_BIND_UAV_LOCK_STATUS
[ [ vk : : binding ( FSR2_BIND_UAV_LOCK_STATUS , 1 ) ] ] RWTexture2D < unorm FfxFloat32x2 > rw_lock_status : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_LOCK_STATUS ) ;
RWTexture2D < unorm FfxFloat32x2 > rw_lock_status : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_LOCK_STATUS ) ;
# endif
# if defined FSR2_BIND_UAV_LOCK_INPUT_LUMA
[ [ vk : : binding ( FSR2_BIND_UAV_LOCK_INPUT_LUMA , 1 ) ] ] RWTexture2D < FfxFloat32 > rw_lock_input_luma : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_LOCK_INPUT_LUMA ) ;
RWTexture2D < FfxFloat32 > rw_lock_input_luma : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_LOCK_INPUT_LUMA ) ;
# endif
# if defined FSR2_BIND_UAV_NEW_LOCKS
[ [ vk : : binding ( FSR2_BIND_UAV_NEW_LOCKS , 1 ) ] ] RWTexture2D < unorm FfxFloat32 > rw_new_locks : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_NEW_LOCKS ) ;
RWTexture2D < unorm FfxFloat32 > rw_new_locks : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_NEW_LOCKS ) ;
# endif
# if defined FSR2_BIND_UAV_PREPARED_INPUT_COLOR
[ [ vk : : binding ( FSR2_BIND_UAV_PREPARED_INPUT_COLOR , 1 ) ] ] RWTexture2D < FfxFloat32x4 > rw_prepared_input_color : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_PREPARED_INPUT_COLOR ) ;
RWTexture2D < FfxFloat32x4 > rw_prepared_input_color : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_PREPARED_INPUT_COLOR ) ;
# endif
# if defined FSR2_BIND_UAV_LUMA_HISTORY
[ [ vk : : binding ( FSR2_BIND_UAV_LUMA_HISTORY , 1 ) ] ] RWTexture2D < FfxFloat32x4 > rw_luma_history : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_LUMA_HISTORY ) ;
RWTexture2D < FfxFloat32x4 > rw_luma_history : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_LUMA_HISTORY ) ;
# endif
# if defined FSR2_BIND_UAV_UPSCALED_OUTPUT
[ [ vk : : binding ( FSR2_BIND_UAV_UPSCALED_OUTPUT , 1 ) ] ] RWTexture2D < FfxFloat32x4 > rw_upscaled_output : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_UPSCALED_OUTPUT ) ;
RWTexture2D < FfxFloat32x4 > rw_upscaled_output : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_UPSCALED_OUTPUT ) ;
# endif
# if defined FSR2_BIND_UAV_EXPOSURE_MIP_LUMA_CHANGE
[ [ vk : : binding ( FSR2_BIND_UAV_EXPOSURE_MIP_LUMA_CHANGE , 1 ) ] ] globallycoherent RWTexture2D < FfxFloat32 > rw_img_mip_shading_change : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_EXPOSURE_MIP_LUMA_CHANGE ) ;
globallycoherent RWTexture2D < FfxFloat32 > rw_img_mip_shading_change : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_EXPOSURE_MIP_LUMA_CHANGE ) ;
# endif
# if defined FSR2_BIND_UAV_EXPOSURE_MIP_5
[ [ vk : : binding ( FSR2_BIND_UAV_EXPOSURE_MIP_5 , 1 ) ] ] globallycoherent RWTexture2D < FfxFloat32 > rw_img_mip_5 : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_EXPOSURE_MIP_5 ) ;
globallycoherent RWTexture2D < FfxFloat32 > rw_img_mip_5 : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_EXPOSURE_MIP_5 ) ;
# endif
# if defined FSR2_BIND_UAV_DILATED_REACTIVE_MASKS
[ [ vk : : binding ( FSR2_BIND_UAV_DILATED_REACTIVE_MASKS , 1 ) ] ] RWTexture2D < unorm FfxFloat32x2 > rw_dilated_reactive_masks : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_DILATED_REACTIVE_MASKS ) ;
RWTexture2D < unorm FfxFloat32x2 > rw_dilated_reactive_masks : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_DILATED_REACTIVE_MASKS ) ;
# endif
# if defined FSR2_BIND_UAV_EXPOSURE
[ [ vk : : binding ( FSR2_BIND_UAV_EXPOSURE , 1 ) ] ] RWTexture2D < FFXM_UAV_RG_QUALIFIER > rw_exposure : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_EXPOSURE ) ;
RWTexture2D < FFXM_UAV_RG_QUALIFIER > rw_exposure : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_EXPOSURE ) ;
# endif
# if defined FSR2_BIND_UAV_AUTO_EXPOSURE
[ [ vk : : binding ( FSR2_BIND_UAV_AUTO_EXPOSURE , 1 ) ] ] RWTexture2D < FFXM_UAV_RG_QUALIFIER > rw_auto_exposure : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_AUTO_EXPOSURE ) ;
RWTexture2D < FFXM_UAV_RG_QUALIFIER > rw_auto_exposure : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_AUTO_EXPOSURE ) ;
# endif
# if defined FSR2_BIND_UAV_SPD_GLOBAL_ATOMIC
[ [ vk : : binding ( FSR2_BIND_UAV_SPD_GLOBAL_ATOMIC , 1 ) ] ] globallycoherent RWTexture2D < FfxUInt32 > rw_spd_global_atomic : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_SPD_GLOBAL_ATOMIC ) ;
globallycoherent RWTexture2D < FfxUInt32 > rw_spd_global_atomic : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_SPD_GLOBAL_ATOMIC ) ;
# endif
# if defined FSR2_BIND_UAV_AUTOREACTIVE
[ [ vk : : binding ( FSR2_BIND_UAV_AUTOREACTIVE , 1 ) ] ] RWTexture2D < float > rw_output_autoreactive : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_AUTOREACTIVE ) ;
RWTexture2D < float > rw_output_autoreactive : FFXM_FSR2_DECLARE_UAV ( FSR2_BIND_UAV_AUTOREACTIVE ) ;
# endif
# if defined(FSR2_BIND_SRV_SCENE_LUMINANCE_MIPS)