//Vignette PS 2 (FSR 2.0).
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
//
//   using 3Dmigoto v1.3.16 on Wed Jun 01 18:17:01 2022
//
//
// Note: shader requires additional functionality:
//       64 UAV slots
//
//
// Buffer Definitions:
//
// cbuffer ConstBuf__passData
// {
//
//   struct PostEffectsFullResPassData
//   {
//
//       struct FullResResolveConstants
//       {
//
//           float MotionBlurEnabled;   // Index:    0
//           float DebugBlur;           // Index:    0.y
//           float DebugBlurEffect;     // Index:    0.z
//           float NoOpaquePass;        // Index:    0.w
//           uint DebugTakingCalibrationScreenshot;// Index:    1
//           float DebugMotionVectors;  // Index:    1.y
//           float BloomEnabled;        // Index:    1.z
//           float2 screenSize;         // Index:    2
//           float2 screenSizeRcp;      // Index:    2.z
//           float2 screenHalfSize;     // Index:    3
//           float2 screenHalfSizeRcp;  // Index:    3.z
//           float2 screenSizeResolved; // Index:    4
//           float2 screenSizeResolvedRcp;// Index:    4.z
//           float2 screenResolvedToUnresolved;// Index:    5
//           float2 screenUnresolvedToResolved;// Index:    5.z
//           float2 motionVectorTemporalRescaleCompress;// Index:    6
//           float2 motionVectorTemporalRescaleDecompress;// Index:    6.z
//           float2 dlssScreenSize;     // Index:    7
//           float2 screenScale;        // Index:    7.z
//           float2 screenOffset;       // Index:    8
//           float4 scaleOffsetR;       // Index:    9
//           float4 scaleOffsetG;       // Index:   10
//           float4 scaleOffsetB;       // Index:   11
//           float3 Vignette_Color;     // Index:   12
//           float Vignette_Brightness; // Index:   12.w
//           float Vignette_Falloff;    // Index:   13
//           float Vignette_Scale;      // Index:   13.y
//           float lensVignetteExposureSq;// Index:   13.z
//           float scale;               // Index:   13.w
//           float rcpScreenLensRadius2;// Index:   14
//           float2 screenLensCenter;   // Index:   14.y
//           int filmGrainOffset;       // Index:   14.w
//           float4 filmGrainUVTransform;// Index:   15
//           float filmGrainEffectShadows;// Index:   16
//           float filmGrainEffectMids; // Index:   16.y
//           float filmGrainEffectBrights;// Index:   16.z
//           float doUnsharp;           // Index:   16.w
//           float unsharpStrength;     // Index:   17
//           bool DebugNoLUT;           // Index:   17.y
//           bool passThrough;          // Index:   17.z
//           bool passThrough_Exposure; // Index:   17.w
//           bool passThrough_WhiteBalance;// Index:   18
//           bool passThrough_SLog;     // Index:   18.y
//
//       } constants;                   // Index:    0
//
//       struct ToneMappingConstants
//       {
//
//           float3 WBMatrixR;          // Index:   19
//           float3 WBMatrixG;          // Index:   20
//           float3 WBMatrixB;          // Index:   21
//           float EnableLocalAdaptation;// Index:   21.w
//           float Adaptation_Exposure; // Index:   22
//           float ExposureEV;          // Index:   22.y
//           float ExposureEVClampMin;  // Index:   22.z
//           float ExposureEVClampMax;  // Index:   22.w
//           float LocalAdaptationShadows;// Index:   23
//           float LocalAdaptationHighlights;// Index:   23.y
//           int Tonemapping_Curve;     // Index:   23.z
//           float Contrast;            // Index:   23.w
//           float HDRMax;              // Index:   24
//           float HDRWhite;            // Index:   24.y
//           float ContrastTimesShoulder;// Index:   24.z
//           float ChannelCrossTalk;    // Index:   24.w
//           float PrecomputedBMult;    // Index:   25
//           float PrecomputedCAdd;     // Index:   25.y
//           float SceneToScreenPower;  // Index:   25.z
//           float IsHDRRendering;      // Index:   25.w
//           float DebugHDRRendering;   // Index:   26
//           float DebugHDRRenderingPhase;// Index:   26.y
//           float DebugNoHDRRendering; // Index:   26.z
//           float ShowWaveform;        // Index:   26.w
//
//       } toneMappingConstants;        // Index:   19
//
//       struct TemporalAAConsts
//       {
//
//           float TAAConvergenceLimit; // Index:   27
//           float TAAHP;               // Index:   27.y
//           float TAALP;               // Index:   27.z
//           float TAAColorExtent;      // Index:   27.w
//           float TAACheckerboardFramePhase;// Index:   28
//           float TAAMotionRejection;  // Index:   28.y
//           float TAAEnable;           // Index:   28.z
//           float HalfResTAAEnable;    // Index:   28.w
//           float HalfResTAAConvergence;// Index:   29
//           uint TAAForceSmooth;       // Index:   29.y
//           float TAATransparentsContributionRejectionMultiply;// Index:   29.z
//           float TAAVarianceBlurIncrease;// Index:   29.w
//           float TAAVarianceTransparentDecrease;// Index:   30
//           float TAAEncodeRange;      // Index:   30.y
//           float TAAInvEncodeRange;   // Index:   30.z
//           uint DebugSimilarity;      // Index:   30.w
//           float VarianceWindow;      // Index:   31
//           float2 UpsampleOffset;     // Index:   31.y
//
//       } temporalConsts;              // Index:   27
//
//       struct DoFCoCStruct
//       {
//
//           float m_Enabled;           // Index:   32
//           float m_DebugDOF;          // Index:   32.y
//           float m_NearDistanceOfAcceptableSharpness;// Index:   32.z
//           float m_FarDistanceOfAcceptableSharpness;// Index:   32.w
//           float m_CircleOfConfusionMultiplier;// Index:   33
//           float m_CameraApertureHeightRelativeRcp;// Index:   33.y
//           float m_HyperFocalDistance;// Index:   33.z
//           float m_FocusDistance;     // Index:   33.w
//           float m_FStop;             // Index:   34
//           float m_DepthReprojectScale;// Index:   34.y
//           float m_DepthReprojectBias;// Index:   34.z
//
//       } dofConstants;                // Index:   32
//
//   } resourceTables__passData;        // Index:    0-34.z           Components:   139
                                        // Textures:  t0-t18
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// resourceTables__passData__smpPointClamp    sampler      NA          NA    0        1
// resourceTables__passData__smpLinearClamp    sampler      NA          NA    1        1
// resourceTables__passData__smpCompare  sampler_c      NA          NA    3        1
// resourceTables__passData.LUTTexture    texture  float4          3d    0        1
// resourceTables__passData.InputLuminanceLocal    texture   float          2d    1        1
// resourceTables__passData.InputDepth    texture   float          2d    2        1
// resourceTables__passData.InputColor    texture  float4          2d    3        1
// resourceTables__passData.InputBloom    texture  float4          2d    4        1
// resourceTables__passData.InputBlurredSurface    texture  float4          2d    6        1
// resourceTables__passData.InputTransparents    texture  float4          2d   12        1
// resourceTables__passData.InputTransparentsLowRes    texture  float4          2d   13        1
// resourceTables__passData.InputRefraction    texture  float4          2d   14        1
// resourceTables__passData.NoiseTexture    texture   float     2darray   17        1
// resourceTables__passData.BilateralVectorsTex    texture  float2          2d   18        1
// resourceTables__passData.OutRejectionFactor        UAV   float          2d    9        1
// ConstBuf__passData                cbuffer      NA          NA    0        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION              0   xyzw        0      POS   float   xy
// TEXCOORD                 0   xy          1     NONE   float   xy
// TEXCOORD                 1     zw        1     NONE   float
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[31], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s3, mode_comparison
dcl_resource_texture3d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_texture2d (float,float,float,float) t6
dcl_resource_texture2d (float,float,float,float) t12
dcl_resource_texture2d (float,float,float,float) t13
dcl_resource_texture2d (float,float,float,float) t14
dcl_resource_texture2darray (float,float,float,float) t17
dcl_resource_texture2d (float,float,float,float) t18
dcl_uav_typed_texture2d (float,float,float,float) u9
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_input_ps linear v1.xy
dcl_output o0.xyzw
dcl_temps 50
dcl_resource_texture1d (float,float,float,float) t120
ld_indexable(texture1d)(float,float,float,float) r30.xyzw, l(10, 0, 0, 0), t120.xyzw
ftou r0.xy, v0.xyxx
mov r0.zw, l(0,0,0,0)
ld_indexable(texture2d)(float,float,float,float) r0.zw, r0.xyzw, t18.zwxy
mul r0.zw, r0.zzzw, cb0[2].zzzw
sample_l_indexable(texture2d)(float,float,float,float) r1.xyz, v1.xyxx, t6.xyzw, s1, l(0.000000)
mad r0.zw, r0.zzzw, l(0.000000, 0.000000, 8.000000, 8.000000), v1.xxxy
sample_l_indexable(texture2d)(float,float,float,float) r1.w, r0.zwzz, t6.xyzw, s1, l(0.000000)
lt r2.x, r1.w, l(1.000000)
if_nz r2.x
  sample_l_indexable(texture2d)(float,float,float,float) r2.xyz, r0.zwzz, t14.xywz, s1, l(0.000000)
  mul r3.xy, r2.xyxx, l(1.000000, -1.000000, 0.000000, 0.000000)
  dp2 r2.x, r2.xyxx, r2.xyxx
  ne r2.x, r2.x, l(0.000000)
  if_nz r2.x
    gather4_indexable(texture2d)(float,float,float,float) r4.xyzw, v1.xyxx, t14.xyzw, s0.z
    min r2.x, r4.z, r4.y
    min r2.x, r2.x, r4.x
    min r2.x, r4.w, r2.x
    max r2.x, -r2.x, l(1.000000)
    div r2.x, r2.z, r2.x
    and r4.xy, r0.xyxx, l(63, 63, 0, 0)
    and r4.z, l(7), cb0[14].w
    mov r4.w, l(0)
    ld_indexable(texture2darray)(float,float,float,float) r2.y, r4.xyzw, t17.yxzw
    mul r2.z, r2.y, l(0.250000)
    mad r3.zw, r3.xxxy, r2.zzzz, v1.xxxy
    sample_c_lz_indexable(texture2d)(float,float,float,float) r2.w, r3.zwzz, t2.xxxx, s3, r2.x
    mad r4.xyz, r2.yyyy, l(0.250000, 0.250000, 0.250000, 0.000000), l(0.250000, 0.500000, 0.750000, 0.000000)
    mad r5.xyzw, r3.xyxy, r4.xxyy, v1.xyxy
    sample_c_lz_indexable(texture2d)(float,float,float,float) r2.y, r5.xyxx, t2.xxxx, s3, r2.x
    sample_c_lz_indexable(texture2d)(float,float,float,float) r3.z, r5.zwzz, t2.xxxx, s3, r2.x
    mad r5.xy, r3.xyxx, r4.zzzz, v1.xyxx
    sample_c_lz_indexable(texture2d)(float,float,float,float) r2.x, r5.xyxx, t2.xxxx, s3, r2.x
    ge r2.xyw, l(0.000000, 0.000000, 0.000000, 0.000000), r2.xyxw
    and r2.z, r2.z, r2.w
    movc r2.y, r2.y, r4.x, r2.z
    ge r2.z, l(0.000000), r3.z
    movc r2.y, r2.z, r4.y, r2.y
    movc r2.x, r2.x, r4.z, r2.y
  else
    mov r2.x, l(0)
  endif
  mad r2.xy, r3.xyxx, r2.xxxx, v1.xyxx
  sample_l_indexable(texture2d)(float,float,float,float) r2.xyz, r2.xyxx, t3.xyzw, s1, l(0.000000)
  sample_l_indexable(texture2d)(float,float,float,float) r3.xyzw, v1.xyxx, t12.xyzw, s1, l(0.000000)
  max r3.xyzw, r3.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
  sample_l_indexable(texture2d)(float,float,float,float) r4.xyzw, r0.zwzz, t13.xyzw, s1, l(0.000000)
  max r4.xyzw, r4.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
  mul r0.z, r3.w, r4.w
  mad r3.xyz, r3.xyzx, r4.wwww, r4.xyzx
  add r0.w, -r2.y, r3.y
  mul_sat r0.w, r0.w, cb0[29].z
  min r0.z, r0.z, l(1.000000)
  mad r2.xyz, r2.xyzx, r0.zzzz, r3.xyzx
  mov_sat r1.w, r1.w
  max r0.z, r2.z, r2.y
  max r0.z, r0.z, r2.x
  add r0.z, r0.z, l(1.000000)
  rcp r0.z, r0.z
  mul r3.xyz, r0.zzzz, r2.xyzx
  mad r2.xyz, -r2.xyzx, r0.zzzz, r1.xyzx
  mad r1.xyz, r1.wwww, r2.xyzx, r3.xyzx
else
  mov r0.w, l(0)
endif
max r0.z, r1.z, r1.y
max r0.z, r0.z, r1.x
add r0.z, -r0.z, l(1.000000)
rcp r0.z, r0.z
mul r1.xyz, r0.zzzz, r1.xyzx
ne r0.z, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[21].w
if_nz r0.z
  sample_l_indexable(texture2d)(float,float,float,float) r0.z, v1.xyxx, t1.yzxw, s1, l(0.000000)
  exp r0.z, r0.z
  mul r2.xyz, r0.zzzz, r1.xyzx
else
  mul r2.xyz, r1.xyzx, cb0[22].xxxx
endif
sample_l_indexable(texture2d)(float,float,float,float) r1.xyz, v1.xyxx, t4.xyzw, s1, l(0.000000)
mad r1.xyz, cb0[1].zzzz, r1.xyzx, r2.xyzx
add r2.xy, v0.xyxx, -cb0[14].yzyy
dp2 r0.z, r2.xyxx, r2.xyxx
mul r0.z, r0.z, cb0[14].x
mul r0.z, r0.z, r0.z
mul r0.z, r0.z, cb0[13].z

ieq r31.x, r30.z, l(1.0)
if_nz r31.x
mov r0.z, l(0.0)
endif

exp r0.z, -r0.z
mul r1.xyz, r0.zzzz, r1.xyzx
mul r2.xyz, r1.yyyy, cb0[20].xyzx
mad r2.xyz, r1.xxxx, cb0[19].xyzx, r2.xyzx
mad r1.xyz, r1.zzzz, cb0[21].xyzx, r2.xyzx
max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
add r2.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000), -cb0[12].wxyz
mul r0.z, v1.x, cb0[13].y
mul r0.z, r0.z, v1.y
add r3.xy, -v1.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)

if_nz r31.x
mov r3.xy, l(1.0)
endif

mul r0.z, r0.z, r3.x
mul r0.z, r3.y, r0.z
log r0.z, |r0.z|
mul r0.z, r0.z, cb0[13].x
exp r0.z, r0.z

if_nz r31.x
mad_sat r0.z, r2.x, l(1.0), cb0[12].w
else
mad_sat r0.z, r2.x, r0.z, cb0[12].w
endif

mad r2.xyz, r0.zzzz, r2.yzwy, cb0[12].xyzx
mul r1.xyz, r1.xyzx, r2.xyzx
ne r0.z, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[0].w
movc r1.xyz, r0.zzzz, l(0,0,0,0), r1.xyzx
lt r2.xyz, l(0.010591, 0.010591, 0.010591, 0.000000), r1.xyzx
mad r3.xyzw, r1.xxyy, l(5.555556, 5.367655, 5.555556, 5.367655), l(0.052272, 0.092809, 0.052272, 0.092809)
log r1.xy, r3.xzxx
mad r1.xy, r1.xyxx, l(0.0744116008, 0.0744116008, 0.000000, 0.000000), l(0.385537, 0.385537, 0.000000, 0.000000)
movc r3.xy, r2.xyxx, r1.xyxx, r3.ywyy
mad r1.xy, r1.zzzz, l(5.555556, 5.367655, 0.000000, 0.000000), l(0.052272, 0.092809, 0.000000, 0.000000)
log r0.z, r1.x
mad r0.z, r0.z, l(0.0744116008), l(0.385537)
movc r3.z, r2.z, r0.z, r1.y
mad r1.xyz, r3.xyzx, l(0.984375, 0.984375, 0.984375, 0.000000), l(0.00781250000, 0.00781250000, 0.00781250000, 0.000000)
sample_l_indexable(texture3d)(float,float,float,float) r1.xyz, r1.xyzx, t0.xyzw, s1, l(0.000000)
lt r2.xyz, l(0.149658203, 0.149658203, 0.149658203, 0.000000), r1.xyzx
add r3.xyzw, r1.xxyy, l(-0.385537, -0.092809, -0.385537, -0.092809)
mul r3.xyzw, r3.xyzw, l(13.43878651, 0.186301097, 13.43878651, 0.186301097)
exp r1.xy, r3.xzxx
add r1.xy, r1.xyxx, l(-0.052272, -0.052272, 0.000000, 0.000000)
mul r1.xy, r1.xyxx, l(0.179999992, 0.179999992, 0.000000, 0.000000)
movc r3.xy, r2.xyxx, r1.xyxx, r3.ywyy
add r1.xy, r1.zzzz, l(-0.385537, -0.092809, 0.000000, 0.000000)
mul r1.xy, r1.xyxx, l(13.43878651, 0.186301097, 0.000000, 0.000000)
exp r0.z, r1.x
add r0.z, r0.z, l(-0.052272)
mul r0.z, r0.z, l(0.179999992)
movc r3.z, r2.z, r0.z, r1.y
max r1.xyz, r3.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
max r0.z, r1.z, r1.y
max r0.z, r0.z, r1.x
min r2.xyz, r1.xyzx, cb0[24].xxxx
log r2.xyz, r2.xyzx
mul r3.xyz, r2.xyzx, cb0[23].wwww
exp r3.xyz, r3.xyzx
mul r2.xyz, r2.xyzx, cb0[24].zzzz
exp r2.xyz, r2.xyzx
mad r2.xyz, r2.xyzx, cb0[25].xxxx, cb0[25].yyyy
div r2.xyz, r3.xyzx, r2.xyzx
max r2.w, r2.z, r2.y
max r2.w, r2.w, r2.x
mul r1.xyz, r1.xyzx, r2.wwww
div r1.xyz, r1.xyzx, r0.zzzz
add r2.xyz, -r1.xyzx, r2.xyzx
mad_sat o0.xyz, cb0[24].wwww, r2.xyzx, r1.xyzx
mad_sat r0.z, r1.w, l(4.000000), l(-1.000000)
mul r0.z, r0.z, -cb0[29].w
lt r1.x, l(-0.100000), r0.z
mul r0.w, r0.w, cb0[30].x
movc r0.z, r1.x, r0.w, r0.z
add r0.z, r0.z, cb0[29].w
mul r0.z, r0.z, cb0[30].z
store_uav_typed u9.xyzw, r0.xyyy, r0.zzzz
mov o0.w, l(1.000000)
ret
// Approximately 156 instruction slots used
