//
// Generated by Microsoft (R) HLSL Shader Compiler 9.24.950.2656
//
// Parameters:
//
//   sampler2D sDir;
//   sampler2D sMask;
//   sampler2D sPos;
//   float4 sp[4];
//
//
// Registers:
//
//   Name         Reg   Size
//   ------------ ----- ----
//   sp           c8       2
//   sPos         s0       1
//   sDir         s1       1
//   sMask        s3       1
//

    ps_3_0
    def c0, 0.5, 2, 1, 0
    dcl_texcoord v0.xy  // In<4,5>
    dcl_2d s0
    dcl_2d s1
    dcl_2d s3

#line 76 "h:\Users\Ryosuke\Documents\Visual Studio 2010\Projects\raytrace\shader.psh"
    texld r0, v0, s3
    add r0, -r0.y, c0.x
    texkill r0
    texld r0, v0, s0  // ::regp<0,1,2,3>

#line 83
    add r1.xyz, -r0, c8  // ::offset<0,1,2>

#line 79
    texld r2, v0, s1  // ::regs<0,1,2,3>

#line 84
    dp3 r3.x, r1, r2  // ::distance<0>
    mad r1.xyz, r2, -r3.x, r1  // ::differ<0,1,2>
    dp3 r1.x, r1, r1  // ::para<0>
    mad r3.yzw, c8.w, c8.w, -r1.x
    rsq r1.x, r3.w
    rcp r1.x, r1.x
    add r1.x, r3.x, -r1.x
    mad r0.xyz, r2, r1.x, r0  // ::hit<0,1,2>
    texkill r3

#line 90
    rcp r1.x, c8.w
    add r1.yzw, r0.xxyz, -c8.xxyz
    mul r1.xyz, r1.x, r1.yzww  // ::norm<0,1,2>
    dp3 r1.w, r2, r1  // ::cosine<0>

#line 38
    mul r3.xyz, r1, r1.w
    mad r3.xyz, r3, -c0.y, r2  // ::reflect_impl<0,1,2>

#line 92
    dp3 r3.w, r3, r3
    rsq r3.w, r3.w
    mul oC1.xyz, r3, r3.w  // ::sphere1<4,5,6>
    rcp r3.x, c9.y  // refract_impl::r<0>

#line 43
    mul r3.y, r3.x, r3.x
    mad r3.z, r1.w, -r1.w, c0.z
    mad r3.y, r3.y, -r3.z, c0.z
    rsq r3.y, r3.y
    rcp r3.y, r3.y
    mul r3.yzw, r1.xxyz, r3.y
    mad r2.xyz, r1, -r1.w, r2
    mad r2.xyz, r2, r3.x, -r3.yzww  // ::refract_impl<0,1,2>

#line 93
    nrm r3.xyz, r2  // ::refr<0,1,2>
    dp3 r1.x, r3, r1  // ::cosine2<0>
    mov oC3.xyz, r3  // ::sphere1<12,13,14>
    mad r1.y, r1.x, c9.y, r1.w
    rcp r1.y, r1.y
    mad r1.z, r1.x, -c9.y, r1.w
    mul r1.y, r1.y, r1.z  // ::refp<0>

#line 103
    mul r1.z, r1.y, r1.y
    mad r1.y, r1.y, -r1.y, c0.z
    mul oC2.w, r0.w, r1.y  // ::sphere1<11>
    mul oC0.w, r0.w, r1.z  // ::sphere1<3>

#line 96
    mad r0.w, r1.w, c9.y, r1.x
    mad r1.x, r1.w, c9.y, -r1.x
    rcp r0.w, r0.w
    mul r0.w, r1.x, r0.w  // ::refs<0>

#line 103
    mul r1.x, r0.w, r0.w
    mad r0.w, r0.w, -r0.w, c0.z
    mul oC3.w, r2.w, r0.w  // ::sphere1<15>
    mul oC1.w, r2.w, r1.x  // ::sphere1<7>

#line 89
    mov oC0.xyz, r0  // ::sphere1<0,1,2>
    mov oC2.xyz, r0  // ::sphere1<8,9,10>

// approximately 56 instruction slots used (3 texture, 53 arithmetic)