//DQ7 depth of field PS 1.
// ---- Created with geo-11 v0.6.198 on Sun Jan 18 23:22:50 2026
Texture2D<float4> t3 : register(t3);

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[155];
}

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




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


void main(
  float4 v0 : TEXCOORD0,
  float4 v1 : SV_POSITION0,
  out float4 o0 : SV_Target0)
{
  const float4 icb[] = { { 0.800000, 0, 0, 0},
                              { 0.300000, 0, 0, 0},
                              { 0.200000, 0, 0, 0} };
  float4 r0,r1,r2,r3,r4,r5,r6,r7;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.xy = v0.zw * float2(0.5,-0.5) + float2(0.5,0.5);
  r0.zw = cb0[0].xy * r0.xy + cb0[0].zw;
  r0.z = t0.SampleLevel(s1_s, r0.zw, 0).x;
  r0.w = r0.z * cb1[65].x + cb1[65].y;
  r0.z = r0.z * cb1[65].z + -cb1[65].w;
  r0.z = 1 / r0.z;
  r0.z = r0.w + r0.z;
  r0.w = t2.SampleLevel(s0_s, r0.xy, 0).x;
  r1.x = cb1[153].x + cb1[153].z;
  r1.x = -r1.x + r0.z;
  r1.y = rcp(cb1[154].w);
  r1.x = r1.x * r1.y;
  r1.x = cb1[154].z * r1.x;
  r1.x = max(0, r1.x);
  r0.z = -cb1[153].x + r0.z;
  r0.z = cmp(0 < r0.z);
  r0.z = r0.z ? r1.x : 0;
  r0.z = min(1.5, r0.z);
  r1.x = r0.w + r0.z;
  r1.yz = cb0[2].xy * cb0[1].zw;
  r1.xy = r1.yz * r1.xx;
  r0.z = r0.w * -2 + r0.z;
  r2.xyz = t1.SampleLevel(s0_s, r0.xy, 0).xyz;
  
  //o0.xyz = r2.xyz;
  //o0.w = 1;
  //return;
  
  r3.xyz = r2.xyz;
  r0.w = 1;
  r1.z = 1;
  while (true) {
    r1.w = cmp(3 < (int)r1.z);
    if (r1.w != 0) break;
    r4.xy = (int2)r1.zz + int2(-1,1);
    r1.w = (int)r1.z * 5;
    r2.w = (int)r1.w;
    r2.w = 6.28318548 / r2.w;
    r3.w = (int)r1.z;
    r5.xyz = r3.xyz;
    r4.z = r0.w;
    r4.w = 0;
    while (true) {
      r5.w = cmp((int)r4.w >= (int)r1.w);
      if (r5.w != 0) break;
      r5.w = (int)r4.w;
      r5.w = r5.w * r2.w;
      sincos(r5.w, r6.x, r7.x);
      r7.x = r7.x * r3.w;
      r7.y = r6.x * r3.w;
      r6.xy = r7.xy * r1.xy + r0.xy;
      r5.w = t3.SampleLevel(s0_s, r6.xy, 0).x;
      r5.w = icb[r4.x+0].x + r5.w;
      r5.w = cmp(r5.w >= r0.z);
      if (r5.w != 0) {
        r6.xyz = t1.SampleLevel(s0_s, r6.xy, 0).xyz;
        r5.xyz = r6.xyz + r5.xyz;
        r4.z = 1 + r4.z;
      }
      r4.w = (int)r4.w + 1;
    }
    r3.xyz = r5.xyz;
    r0.w = r4.z;
    r1.z = r4.y;
  }
  r0.x = rcp(r0.w);
  o0.xyz = r3.xyz * r0.xxx;
  o0.w = 1;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v0.6.198 on Sun Jan 18 23:22:50 2026
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD                 0   xyzw        0     NONE   float     zw
// SV_POSITION              0   xyzw        1      POS   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_immediateConstantBuffer { { 0.800000, 0, 0, 0},
                              { 0.300000, 0, 0, 0},
                              { 0.200000, 0, 0, 0} }
dcl_constantbuffer CB0[3], immediateIndexed
dcl_constantbuffer CB1[155], 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_resource_texture2d (float,float,float,float) t3
dcl_input_ps linear v0.zw
dcl_output o0.xyzw
dcl_temps 8
mad r0.xy, v0.zwzz, l(0.500000, -0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
mad r0.zw, cb0[0].xxxy, r0.xxxy, cb0[0].zzzw
sample_l_indexable(texture2d)(float,float,float,float) r0.z, r0.zwzz, t0.yzxw, s1, l(0.000000)
mad r0.w, r0.z, cb1[65].x, cb1[65].y
mad r0.z, r0.z, cb1[65].z, -cb1[65].w
div r0.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.z
add r0.z, r0.z, r0.w
sample_l_indexable(texture2d)(float,float,float,float) r0.w, r0.xyxx, t2.yzwx, s0, l(0.000000)
add r1.x, cb1[153].z, cb1[153].x
add r1.x, r0.z, -r1.x
rcp r1.y, cb1[154].w
mul r1.x, r1.y, r1.x
mul r1.x, r1.x, cb1[154].z
max r1.x, r1.x, l(0.000000)
add r0.z, r0.z, -cb1[153].x
lt r0.z, l(0.000000), r0.z
and r0.z, r1.x, r0.z
min r0.z, r0.z, l(1.500000)
add r1.x, r0.z, r0.w
mul r1.yz, cb0[1].zzwz, cb0[2].xxyx
mul r1.xy, r1.xxxx, r1.yzyy
mad r0.z, r0.w, l(-2.000000), r0.z
sample_l_indexable(texture2d)(float,float,float,float) r2.xyz, r0.xyxx, t1.xyzw, s0, l(0.000000)
mov r3.xyz, r2.xyzx
mov r0.w, l(1.000000)
mov r1.z, l(1)
loop
  ilt r1.w, l(3), r1.z
  breakc_nz r1.w
  iadd r4.xy, r1.zzzz, l(-1, 1, 0, 0)
  imul null, r1.w, r1.z, l(5)
  itof r2.w, r1.w
  div r2.w, l(6.28318548), r2.w
  itof r3.w, r1.z
  mov r5.xyz, r3.xyzx
  mov r4.z, r0.w
  mov r4.w, l(0)
  loop
    ige r5.w, r4.w, r1.w
    breakc_nz r5.w
    itof r5.w, r4.w
    mul r5.w, r2.w, r5.w
    sincos r6.x, r7.x, r5.w
    mul r7.x, r3.w, r7.x
    mul r7.y, r3.w, r6.x
    mad r6.xy, r7.xyxx, r1.xyxx, r0.xyxx
    sample_l_indexable(texture2d)(float,float,float,float) r5.w, r6.xyxx, t3.yzwx, s0, l(0.000000)
    add r5.w, r5.w, icb[r4.x + 0].x
    ge r5.w, r5.w, r0.z
    if_nz r5.w
      sample_l_indexable(texture2d)(float,float,float,float) r6.xyz, r6.xyxx, t1.xyzw, s0, l(0.000000)
      add r5.xyz, r5.xyzx, r6.xyzx
      add r4.z, r4.z, l(1.000000)
    endif
    iadd r4.w, r4.w, l(1)
  endloop
  mov r3.xyz, r5.xyzx
  mov r0.w, r4.z
  mov r1.z, r4.y
endloop
rcp r0.x, r0.w
mul o0.xyz, r0.xxxx, r3.xyzx
mov o0.w, l(1.000000)
ret
// Approximately 0 instruction slots used

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