//Floaty 2d ground decals
// Generated by Microsoft (R) HLSL Shader Compiler 9.27.952.3022
//
// Parameters:
//
//   float3 camera_position;
//   float4 g_campaign_world_bounds;
//   float3 g_offset_position;
//   float4 g_screen_size;
//   float g_shroud_enabled;
//   float2 g_texture_ratio;
//   float2 g_uv_offset;
//   float4 g_viewport_offset_scale;
//   float g_vpos_texel_offset;
//   sampler2D gbuffer_channel_4_sampler;
//   float4x4 inv_view_projection;
//   sampler2D s_diffuse_map_clamp;
//   sampler2D s_diffuse_map_wrap;
//   sampler2D s_gbuffer_normal_wrap;
//   sampler2D s_normal;
//   sampler2D s_normal_wrap;
//   sampler2D s_shroud;
//
//
// Registers:
//
//   Name                      Reg   Size
//   ------------------------- ----- ----
//   inv_view_projection       c0       4
//   camera_position           c4       1
//   g_screen_size             c5       1
//   g_vpos_texel_offset       c6       1
//   g_shroud_enabled          c7       1
//   g_campaign_world_bounds   c8       1
//   g_uv_offset               c9       1
//   g_viewport_offset_scale   c10      1
//   g_texture_ratio           c11      1
//   g_offset_position         c12      1
//   gbuffer_channel_4_sampler s0       1
//   s_shroud                  s1       1
//   s_diffuse_map_clamp       s2       1
//   s_diffuse_map_wrap        s3       1
//   s_normal                  s4       1
//   s_normal_wrap             s5       1
//   s_gbuffer_normal_wrap     s6       1
//

    ps_3_0
    def c13, 2, -2, -1, 1
    def c14, -2, 3, 0.00196078443, 100
    def c15, 0.00999999978, -1, -0.100000001, -0.5
    def c16, 2.5, 0.200000003, 0.454545468, 0
    def c17, 1, 0, 0.5, 0.158691406
def c220, 0, 0, 0.0625, 0
dcl_2d s13
    dcl_texcoord v0
    dcl_texcoord1 v1
    dcl_texcoord2 v2
    dcl_texcoord3 v3
    dcl_texcoord4 v4.xy
    dcl vPos.xy
    dcl_2d s0
    dcl_2d s1
    dcl_2d s2
    dcl_2d s3
    dcl_2d s4
    dcl_2d s5
    dcl_2d s6
	
    add r0, c6.x, vPos.xyyy
    mul r1, r0, c5.zwww
    texldl r2, r1.xwww, s0
    mov r2.zw, c5
    mad r0.xy, r0.xwzw, r2.zwzw, -c10
    rcp r3.x, c10.z
    rcp r3.y, c10.w
    mul r0.xy, r0, r3
    mad r0.xy, r0, c13, c13.zwzw
    mad r0.zw, r2.x, c17.xyxy, c17.xyyx
    dp4 r2.x, r0, c0
    dp4 r2.y, r0, c1
    dp4 r2.z, r0, c2
    dp4 r0.x, r0, c3
	
mov r10.xyz, r2.xyz
mov r10.w, r0.x

rcp r12.w, r0.x
mul r10, r10, r12.w

dp4 r11.x, r10, c200 
dp4 r11.y, r10, c201
dp4 r11.z, r10, c202 
dp4 r11.w, r10, c203 

texldl r24, c220.z, s13
add r24.y, r11.w, -r24.y
mul r24.x, r24.x, r24.y
add r11.x, r11.x, -r24.x

dp4 r10.x, r11, c204 //c0
dp4 r10.y, r11, c205 //c1
dp4 r10.z, r11, c206 //c2
dp4 r10.w, r11, c207 //c3

mul r10, r10, r0.x
mov r2.xyz, r10.xyz  


    rcp r0.x, r0.x
    texldl r1, r1, s6
    mad r0.yzw, r1.xxyz, c13.x, c13.z
    nrm r1.xyz, r0.yzww
    mov r3.x, v0.w
    mov r3.y, v1.w
    mov r3.z, v2.w
    add r0.yzw, r3.xxyz, -c12.xxyz
    mad r0.yzw, r2.xxyz, r0.x, -r0
    mov r3.x, v0.x
    mov r3.y, v1.x
    mov r3.z, v2.x
    dp3 r4.x, r0.yzww, r3
    mov r5.x, v0.y
    mov r5.y, v1.y
    mov r5.z, v2.y
    dp3 r4.y, r0.yzww, r5
    mov r6.x, v0.z
    mov r6.y, v1.z
    mov r6.z, v2.z
    dp3 r4.z, r0.yzww, r6
    mul r0.yzw, v3.xxyz, v3.xxyz
    mul r7.xy, r0.ywzw, c17.z
    mad r8.xyz, r0.yzww, c17.z, -r4
    mad r0.yzw, r0, -c17.z, -r4.xxyz
    cmp r0.yzw, r0, c17.y, c17.x
    cmp r0.yzw, r8.xxyz, r0, c17.y
    mul r0.y, r0.z, r0.y
    mul r0.y, r0.w, r0.y
    cmp r8, -r0.y, -c17.x, -c17.y
    texkill r8
    rcp r8.x, r7.x
    rcp r8.y, r7.y
    mul r0.yz, r4.xxzw, r8.xxyw
    mad r0.yz, r0, c17.z, c17.z
    mul r4.xyz, r1.zxyw, r6.yzxw
    mad r4.xyz, r1.yzxw, r6.zxyw, -r4
    nrm r7.xyz, r4
    mul r4.xyz, r1.yzxw, r3.zxyw
    mad r4.xyz, r3.yzxw, r1.zxyw, -r4
    nrm r8.xyz, r4
    nrm r4.xyz, r5
    dp3_sat r0.w, r1, r4
    add_sat r0.w, r0.w, r0.w
    mad r1.w, r0.w, c14.x, c14.y
    mul r0.w, r0.w, r0.w
    mul r0.w, r0.w, r1.w
    mul r4.xy, r0.yzzw, v3.xzzw
    mul r4.xy, r4, c11
    mul r4.xy, r4, c17.w
    mad r5.xyz, r2, r0.x, -c4
    nrm r9.xyz, r5
    rcp r1.w, v3.z
    rcp r2.y, v3.x
    dp3 r2.w, r9, r3
    dp3 r3.x, r9, r6
    mul r5.x, r2.y, r2.w
    mul r1.w, r1.w, r3.x
    mov r5.y, -r1.w
    texld r3, r4, s4
    add r1.w, r3.z, -c17.z
    mul r2.y, r1.w, c17.z
    mul r2.yw, r2.y, r5.xxzy
    mad r2.yw, r2, -v3.w, r4.xxzy
    texld r3, r2.ywzw, s4
    mad r1.w, r1.w, c17.z, r3.z
    add r1.w, r1.w, -c17.z
    mul r2.y, r1.w, c17.z
    mul r2.yw, r2.y, r5.xxzy
    mad r2.yw, r2, -v3.w, r4.xxzy
    texld r3, r2.ywzw, s4
    mad r1.w, r1.w, c17.z, r3.z
    add r1.w, r1.w, -c17.z
    mul r1.w, r1.w, c17.z
    mul r2.yw, r1.w, r5.xxzy
    mad r2.yw, r2, -v3.w, r4.xxzy
    texld r3, r2.ywzw, s3
    texld r4, r2.ywzw, s5
    add r2.yw, r4.xwzy, c14.z
    mad r2.yw, r2, c13.x, c13.z
    dp2add r1.w, r2.ywzw, -r2.ywzw, c13.w
    max r4.x, r1.w, c17.y
    rsq r1.w, r4.x
    rcp r1.w, r1.w
    mul r4.xyz, r8, r2.w
    mad r4.xyz, r2.y, r7, r4
    mad r4.xyz, r1.w, r1, r4
    nrm r6.xyz, r4
    texld r4, r0.yzzw, s4
    add r1.w, r4.z, -c17.z
    mul r2.y, r1.w, c17.z
    mul r2.yw, r2.y, r5.xxzy
    mad r2.yw, r2, -v3.w, r0.xyzz
    texld r4, r2.ywzw, s4
    mad r1.w, r1.w, c17.z, r4.z
    add r1.w, r1.w, -c17.z
    mul r2.y, r1.w, c17.z
    mul r2.yw, r2.y, r5.xxzy
    mad r2.yw, r2, -v3.w, r0.xyzz
    texld r4, r2.ywzw, s4
    mad r1.w, r1.w, c17.z, r4.z
    add r1.w, r1.w, -c17.z
    mul r1.w, r1.w, c17.z
    mul r2.yw, r1.w, r5.xxzy
    mad r0.yz, r2.xyww, -v3.w, r0
    texld r4, r0.yzzw, s2
    texld r5, r0.yzzw, s4
    add r0.yz, r5.xwyw, c14.z
    mad r0.yz, r0, c13.x, c13.z
    dp2add r1.w, r0.yzzw, -r0.yzzw, c13.w
    max r2.y, r1.w, c17.y
    rsq r1.w, r2.y
    rcp r1.w, r1.w
    mul r5.xyz, r8, r0.z
    mad r5.xyz, r0.y, r7, r5
    mad r1.xyz, r1.w, r1, r5
    nrm r5.xyz, r1
    cmp r1.xyz, -v4.x, r5, r6
    cmp r3, -v4.x, r4, r3
    mov r0.y, c17.y
    if_lt -c7.x, r0.y
      mad r0.xy, r2.xzzw, r0.x, -c8
      add r2.xy, -c8, c8.zwzw
      rcp r4.x, r2.x
      rcp r4.y, r2.y
      mul r0.xy, r0, r4
      mov r2.xw, c13
      mad r2.xy, c9, -r2.x, r2.w
      mad r2, r0.xyyy, r2.xyyy, c9.xyyy
      texldl r4, r2, s1
      add r2, r2.xxww, c15.xyxy
      mul_sat r2, r2, c14.w
      mad r5, r2, c14.x, c14.y
      mul r2, r2, r2
      mul r2, r2, r5
      mul r0.x, r4.w, r2.x
      mul r0.x, r0.x, r2.z
      mad r0.x, r2.y, -r0.x, r0.x
      mad r0.x, r2.w, -r0.x, r0.x
    else
      mov r0.x, c13.w
    endif
    add r0.xy, r0.x, c15.zwzw
    mul_sat r0.x, r0.x, c16.x
    mad r0.z, r0.x, c14.x, c14.y
    mul r0.x, r0.x, r0.x
    mul r0.x, r0.x, r0.z
    add_sat r0.y, r0.y, r0.y
    mad r0.z, r0.y, c14.x, c14.y
    mul r0.y, r0.y, r0.y
    mul r0.y, r0.y, r0.z
    mul r0.x, r0.x, c16.y
    mul_sat r2.xyz, r0.x, r3
    lrp r4.xyz, r0.y, r3, r2
    log r0.x, r4.x
    log r0.y, r4.y
    log r0.z, r4.z
    mul r0.xyz, r0, c16.z
    exp oC1.x, r0.x
    exp oC1.y, r0.y
    exp oC1.z, r0.z
    mul r0.x, r0.w, r3.w
    mul r0.x, r0.x, v4.y
    max r0.y, r1_abs.y, r1_abs.z
    max r2.x, r1_abs.x, r0.y
    rcp r0.y, r2.x
    mul r0.yzw, r0.y, r1.xxyz
    mad oC0.xyz, r0.yzww, c17.z, c17.z
    mov oC0.w, r0.x
    mov oC1.w, r0.x

// approximately 205 instruction slots used (16 texture, 189 arithmetic)
 