//Shadows PS 2. After Fenrir.
// ---- Created with 3Dmigoto v0.6.182 on Thu Jun 15 19:10:59 2023
Texture2D<float4> t2 : register(t2);

Texture2D<float4> t1 : register(t1);

Texture2D<float4> t0 : register(t0);

SamplerState s1_s : register(s1);

SamplerState s0_s : register(s0);

cbuffer cb1 : register(b1)
{
  float4 cb1[136];
}

cbuffer cb0 : register(b0)
{
  float4 cb0[33];
}




// 3Dmigoto declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> StereoParams : register(t125);


void main(
  float4 v0 : SV_POSITION0,
  out float4 o0 : SV_Target0)
{
  float4 r0,r1,r2,r3;
  uint4 bitmask, uiDest;
  float4 fDest;
  
  float4 stereo = StereoParams.Load(0);
  
  r0.xy = cb1[135].zw * v0.xy;
  r0.x = t2.SampleLevel(s1_s, r0.xy, 0).x;
  r0.y = r0.x * cb1[65].z + -cb1[65].w;
  r0.x = r0.x * cb1[65].x + cb1[65].y;
  r0.y = 1 / r0.y;
  r0.x = r0.x + r0.y;
  r0.yz = v0.xy * cb1[135].zw + -cb1[66].wz;
  r0.yz = r0.yz / cb1[66].xy;
  r0.yz = r0.yz * r0.xx;
  
  r0.y-=stereo.x*(r0.x-stereo.y);
  
  r1.xyzw = cb0[30].xyzw * r0.zzzz;
  r1.xyzw = r0.yyyy * cb0[29].xyzw + r1.xyzw;
  r0.xyzw = r0.xxxx * cb0[31].xyzw + r1.xyzw;
  r0.xyzw = cb0[32].xyzw + r0.xyzw;
  r1.xyz = float3(6.28318548,12.566371,18.849556) * r0.zzz;
  sincos(r1.xyz, r1.xyz, r2.xyz);
  r0.xy = r0.xy / r0.ww;
  r3.xyzw = t0.SampleLevel(s0_s, r0.xy, 0).xyzw;
  r0.xyw = t1.SampleLevel(s0_s, r0.xy, 0).yzw;
  r1.xyz = r3.yzw * r1.xyz;
  r2.xyz = float3(1,1,1) + -r2.xyz;
  r0.xyw = r2.xyz * r0.xyw;
  r0.xyw = float3(0.156687468,0.0747561157,0.0460920706) * r0.xyw;
  r0.x = dot(r0.xyw, float3(1,1,1));
  r0.y = r3.x * r0.z;
  r0.z = -cb0[28].x + r0.z;
  r0.z = saturate(cb0[28].y * r0.z);
  r0.z = 1 + -r0.z;
  r0.z = cb0[26].y * r0.z;
  r1.xyz = float3(0.156687468,0.0747561157,0.0460920706) * r1.xyz;
  r0.w = dot(r1.xyz, float3(1,1,1));
  r0.y = r0.y * 0.5 + r0.w;
  r0.x = r0.y + r0.x;
  r0.x = -1.44269502 * r0.x;
  r0.x = exp2(r0.x);
  r0.x = min(1, r0.x);
  r0.x = -0.5 + r0.x;
  r0.x = saturate(r0.x * cb0[26].z + 0.5);
  r0.x = r0.x * r0.x + -1;
  r0.x = r0.z * r0.x + 1;
  o0.xz = sqrt(r0.xx);
  o0.yw = float2(1,1);
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v0.6.182 on Thu Jun 15 19:10:59 2023
//
//
// Note: shader requires additional functionality:
//       Early depth-stencil
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION              0   xyzw        0      POS   float   xy
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed | forceEarlyDepthStencil
dcl_constantbuffer CB0[33], immediateIndexed
dcl_constantbuffer CB1[136], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_output o0.xyzw
dcl_temps 4
mul r0.xy, v0.xyxx, cb1[135].zwzz
sample_l_indexable(texture2d)(float,float,float,float) r0.x, r0.xyxx, t2.xyzw, s1, l(0.000000)
mad r0.y, r0.x, cb1[65].z, -cb1[65].w
mad r0.x, r0.x, cb1[65].x, cb1[65].y
div r0.y, l(1.000000, 1.000000, 1.000000, 1.000000), r0.y
add r0.x, r0.y, r0.x
mad r0.yz, v0.xxyx, cb1[135].zzwz, -cb1[66].wwzw
div r0.yz, r0.yyzy, cb1[66].xxyx
mul r0.yz, r0.xxxx, r0.yyzy
mul r1.xyzw, r0.zzzz, cb0[30].xyzw
mad r1.xyzw, r0.yyyy, cb0[29].xyzw, r1.xyzw
mad r0.xyzw, r0.xxxx, cb0[31].xyzw, r1.xyzw
add r0.xyzw, r0.xyzw, cb0[32].xyzw
mul r1.xyz, r0.zzzz, l(6.28318548, 12.566371, 18.849556, 0.000000)
sincos r1.xyz, r2.xyz, r1.xyzx
div r0.xy, r0.xyxx, r0.wwww
sample_l_indexable(texture2d)(float,float,float,float) r3.xyzw, r0.xyxx, t0.xyzw, s0, l(0.000000)
sample_l_indexable(texture2d)(float,float,float,float) r0.xyw, r0.xyxx, t1.yzxw, s0, l(0.000000)
mul r1.xyz, r1.xyzx, r3.yzwy
add r2.xyz, -r2.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
mul r0.xyw, r0.xyxw, r2.xyxz
mul r0.xyw, r0.xyxw, l(0.156687468, 0.0747561157, 0.000000, 0.0460920706)
dp3 r0.x, r0.xywx, l(1.000000, 1.000000, 1.000000, 0.000000)
mul r0.y, r0.z, r3.x
add r0.z, r0.z, -cb0[28].x
mul_sat r0.z, r0.z, cb0[28].y
add r0.z, -r0.z, l(1.000000)
mul r0.z, r0.z, cb0[26].y
mul r1.xyz, r1.xyzx, l(0.156687468, 0.0747561157, 0.0460920706, 0.000000)
dp3 r0.w, r1.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
mad r0.y, r0.y, l(0.500000), r0.w
add r0.x, r0.x, r0.y
mul r0.x, r0.x, l(-1.442695)
exp r0.x, r0.x
min r0.x, r0.x, l(1.000000)
add r0.x, r0.x, l(-0.500000)
mad_sat r0.x, r0.x, cb0[26].z, l(0.500000)
mad r0.x, r0.x, r0.x, l(-1.000000)
mad r0.x, r0.z, r0.x, l(1.000000)
sqrt o0.xz, r0.xxxx
mov o0.yw, l(0,1.000000,0,1.000000)
ret
// Approximately 0 instruction slots used

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
