//Motion blur PS 1.
// ---- Created with 3Dmigoto v0.6.151 on Sat Apr  1 16:24:24 2023
Texture2D<uint4> t4 : register(t4);

Texture2D<float4> t2 : register(t2);

Texture2D<float4> t1 : register(t1);

Texture2D<float4> t0 : register(t0);

SamplerState s0_s : register(s0);

cbuffer cb12 : register(b12)
{
  float4 cb12[272];
}

cbuffer cb3 : register(b3)
{
  float4 cb3[25];
}




// 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,r11,r12,r13;
  uint4 bitmask, uiDest;
  float4 fDest;
  
  float4 stereo = StereoParams.Load(0);
  
  r0.xyzw = cb12[23].zwzw * v0.xyxy;
  r0.xyzw = cb12[271].xxxx * r0.xyzw;
  r0.xyzw = r0.xyzw * float4(2,2,2,2) + float4(-1,-1,-1,-1);
  r1.xy = float2(1,-1) * r0.xy;
  r0.xy = r0.zw * float2(0.5,0.5) + float2(0.5,0.5);
  r0.zw = trunc(v0.xy);
  
  //Future block.
  r12.xy = cb12[271].xx * r0.zw;
  r12.xy = (uint2)r12.xy;
  r12.zw = float2(0,0);
  r13.x = t2.Load(r12.xyw).x;
  r12.x = t4.Load(r12.xyz).y;
  r12.x = (int)r12.x & 2;
  r11.xy=r1.xy;
  r11.z = r13.x * cb12[22].x + cb12[22].y;
  r11.w = 1;
  r12.y = dot(r11.xyzw, cb3[24].xyzw);
  r12.y = dot(r11.xyzw, cb3[24].xyzw);
  r12.y = max(0.25, r12.y);
  r13.x = dot(r11.xyzw, cb3[21].xyzw);
  r13.y = dot(r11.xyzw, cb3[22].xyzw);
  r11.x = r11.z * cb12[21].x + cb12[21].y;
  r11.x = rcp(r11.x);
  r11.x = max(-3.40282347e+38, r11.x);
  r11.x = min(3.40282347e+38, r11.x);
  
  r0.z-=stereo.x*(1-stereo.y/r11.x);
  
  r2.xy = cb12[271].xx * r0.zw;
  r2.xy = (uint2)r2.xy;
  r2.zw = float2(0,0);
  r3.x = t2.Load(r2.xyw).x;
  r2.x = t4.Load(r2.xyz).y;
  r2.x = (int)r2.x & 2;
  r1.z = r3.x * cb12[22].x + cb12[22].y;
  r1.w = 1;
  r2.y = dot(r1.xyzw, cb3[24].xyzw);
  r2.y = dot(r1.xyzw, cb3[24].xyzw);
  r2.y = max(0.25, r2.y);
  r3.x = dot(r1.xyzw, cb3[21].xyzw);
  r3.y = dot(r1.xyzw, cb3[22].xyzw);
  r1.x = r1.z * cb12[21].x + cb12[21].y;
  r1.x = rcp(r1.x);
  r1.x = max(-3.40282347e+38, r1.x);
  r1.x = min(3.40282347e+38, r1.x);
  r1.yz = r3.xy / r2.yy;
  r1.yz = r1.yz * float2(0.5,-0.5) + float2(0.5,0.5);
  r0.xy = -r1.yz + r0.xy;
  r0.xy = cb12[23].xy * r0.xy;
  r0.xy = cb12[271].yy * r0.xy;
  r0.x = dot(r0.xy, r0.xy);
  r0.x = sqrt(r0.x);
  r0.y = saturate(r1.x * cb3[0].z + cb3[0].w);
  r1.x = saturate(r1.x * cb3[1].z + cb3[1].w);
  r1.x = cb3[1].x * r1.x + cb3[1].y;
  r1.x = r2.x ? r1.x : 1;
  r0.y = cb3[0].x * r0.y + cb3[0].y;
  r0.x = r0.x * r0.y;
  r0.x = saturate(cb3[2].x * r0.x);
  r0.x = r0.x * r1.x;
  r1.xy = cb12[23].xy * cb12[271].yy + float2(-2,-2);
  r0.yz = min(r1.xy, r0.zw);
  r0.yz = cb12[73].zw * r0.yz;
  r0.yz = cb12[271].xx * r0.yz;
  r0.yzw = t1.SampleLevel(s0_s, r0.yz, 1).xyz;
  r1.xy = (int2)v0.xy;
  r1.zw = float2(0,0);
  r1.xyz = t0.Load(r1.xyz).xyz;
  r0.yzw = -r1.xyz + r0.yzw;
  o0.xyz = r0.xxx * r0.yzw + r1.xyz;
  o0.w = 1;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v0.6.151 on Sat Apr  1 16:24:24 2023
//
//
// 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
dcl_constantbuffer CB3[25], immediateIndexed
dcl_constantbuffer CB12[272], immediateIndexed
dcl_sampler s0, 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_resource_texture2d (uint,uint,uint,uint) t4
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_output o0.xyzw
dcl_temps 4
mul r0.xyzw, v0.xyxy, cb12[23].zwzw
mul r0.xyzw, r0.xyzw, cb12[271].xxxx
mad r0.xyzw, r0.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), l(-1.000000, -1.000000, -1.000000, -1.000000)
mul r1.xy, r0.xyxx, l(1.000000, -1.000000, 0.000000, 0.000000)
mad r0.xy, r0.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
round_z r0.zw, v0.xxxy
mul r2.xy, r0.zwzz, cb12[271].xxxx
ftou r2.xy, r2.xyxx
mov r2.zw, l(0,0,0,0)
ld_indexable(texture2d)(float,float,float,float) r3.x, r2.xyww, t2.xyzw
ld_indexable(texture2d)(uint,uint,uint,uint) r2.x, r2.xyzw, t4.yxzw
and r2.x, r2.x, l(2)
mad r1.z, r3.x, cb12[22].x, cb12[22].y
mov r1.w, l(1.000000)
dp4 r2.y, r1.xyzw, cb3[24].xyzw
max r2.y, r2.y, l(0.250000)
dp4 r3.x, r1.xyzw, cb3[21].xyzw
dp4 r3.y, r1.xyzw, cb3[22].xyzw
mad r1.x, r1.z, cb12[21].x, cb12[21].y
rcp r1.x, r1.x
max r1.x, r1.x, l(-340282346638528859811704183484516925440.000000)
min r1.x, r1.x, l(340282346638528859811704183484516925440.000000)
div r1.yz, r3.xxyx, r2.yyyy
mad r1.yz, r1.yyzy, l(0.000000, 0.500000, -0.500000, 0.000000), l(0.000000, 0.500000, 0.500000, 0.000000)
add r0.xy, r0.xyxx, -r1.yzyy
mul r0.xy, r0.xyxx, cb12[23].xyxx
mul r0.xy, r0.xyxx, cb12[271].yyyy
dp2 r0.x, r0.xyxx, r0.xyxx
sqrt r0.x, r0.x
mad_sat r0.y, r1.x, cb3[0].z, cb3[0].w
mad_sat r1.x, r1.x, cb3[1].z, cb3[1].w
mad r1.x, cb3[1].x, r1.x, cb3[1].y
movc r1.x, r2.x, r1.x, l(1.000000)
mad r0.y, cb3[0].x, r0.y, cb3[0].y
mul r0.x, r0.y, r0.x
mul_sat r0.x, r0.x, cb3[2].x
mul r0.x, r1.x, r0.x
mad r1.xy, cb12[23].xyxx, cb12[271].yyyy, l(-2.000000, -2.000000, 0.000000, 0.000000)
min r0.yz, r0.zzwz, r1.xxyx
mul r0.yz, r0.yyzy, cb12[73].zzwz
mul r0.yz, r0.yyzy, cb12[271].xxxx
sample_l_indexable(texture2d)(float,float,float,float) r0.yzw, r0.yzyy, t1.wxyz, s0, l(1.000000)
ftoi r1.xy, v0.xyxx
mov r1.zw, l(0,0,0,0)
ld_indexable(texture2d)(float,float,float,float) r1.xyz, r1.xyzw, t0.xyzw
add r0.yzw, r0.yyzw, -r1.xxyz
mad o0.xyz, r0.xxxx, r0.yzwy, r1.xyzx
mov o0.w, l(1.000000)
ret
// Approximately 0 instruction slots used

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