// Lights 2
// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.20546
//
//   using 3Dmigoto v1.2.47 on Tue Nov 29 22:46:55 2016
//
//
// Buffer Definitions: 
//
// cbuffer SceneWideParameterConstantBuffer
// {
//
//   float4x4 ViewProjection;           // Offset:    0 Size:    64 [unused]
//   float4x4 View;                     // Offset:   64 Size:    64 [unused]
//   float4x4 Projection;               // Offset:  128 Size:    64 [unused]
//   float4x4 ViewInverse;              // Offset:  192 Size:    64
//   float3 EyePosition;                // Offset:  256 Size:    12
//   float cameraNearTimesFar;          // Offset:  268 Size:     4 [unused]
//   float3 GlobalAmbientColor;         // Offset:  272 Size:    12 [unused]
//   float cameraFarMinusNear;          // Offset:  284 Size:     4 [unused]
//   float2 cameraNearFar;              // Offset:  288 Size:     8
//   float2 ViewportWidthHeight;        // Offset:  296 Size:     8
//   float2 screenWidthHeightInv;       // Offset:  304 Size:     8 [unused]
//   float2 screenWidthHeight;          // Offset:  312 Size:     8 [unused]
//   float4x4 PrevViewProj;             // Offset:  320 Size:    64 [unused]
//   float4 Jitter;                     // Offset:  384 Size:    16 [unused]
//   float2 InvProjXY;                  // Offset:  400 Size:     8
//   uint PointLightCount;              // Offset:  408 Size:     4 [unused]
//   uint SpotLightCount;               // Offset:  412 Size:     4 [unused]
//   uint FoliageSpheresCount;          // Offset:  416 Size:     4 [unused]
//   float time;                        // Offset:  420 Size:     4 [unused]
//   float2 CubeFadeValues;             // Offset:  424 Size:     8
//   float4 FogParameters0;             // Offset:  432 Size:    16 [unused]
//   float4 FogParameters1;             // Offset:  448 Size:    16 [unused]
//   float4 FogParameters2;             // Offset:  464 Size:    16 [unused]
//   float4 FogParameters3;             // Offset:  480 Size:    16 [unused]
//   float3 CubeSunDir;                 // Offset:  496 Size:    12
//   float padding0;                    // Offset:  508 Size:     4 [unused]
//   float3 CubeSunColor;               // Offset:  512 Size:    12
//   float padding1;                    // Offset:  524 Size:     4 [unused]
//   float2 WindDirection;              // Offset:  528 Size:     8 [unused]
//
// }
//
// cbuffer LightListConstantBuffer
// {
//
//   struct
//   {
//       
//       float4 position;               // Offset:    0
//       float4 color;                  // Offset:   16
//       float4 direction;              // Offset:   32
//       float4 params;                 // Offset:   48
//
//   } LightList[32];                   // Offset:    0 Size:  2048
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// PointSampler                      sampler      NA          NA    0        1
// TrilinearSampler                  sampler      NA          NA    1        1
// LinearSampler                     sampler      NA          NA    2        1
// LightMaskTexture                  texture    uint          2d    0        1
// EnvLookupTexture                  texture  float4          2d    1        1
// IrradianceEnvSampler0             texture  float4        cube    2        1
// IrradianceEnvSampler1             texture  float4        cube    3        1
// SpecularEnvSampler0               texture  float4        cube    4        1
// SpecularEnvSampler1               texture  float4        cube    5        1
// LinearDepthBuffer                 texture   float          2d    6        1
// GbufferColorBuffer                texture  float4          2d    7        1
// GbufferNormalBuffer               texture  float4          2d    8        1
// GbufferExtraBuffer                texture  float4          2d    9        1
// AOBuffer                          texture  float4          2d   10        1
// SceneWideParameterConstantBuffer    cbuffer      NA          NA    0        1
// LightListConstantBuffer           cbuffer      NA          NA    1        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION              0   xyzw        0      POS   float       
// TEXCOORD                 0   xy          1     NONE   float   xy  
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_TARGET                0   xyz         0   TARGET   float   xyz 
//
ps_4_0
dcl_constantbuffer cb0[33], immediateIndexed
dcl_constantbuffer cb1[128], dynamicIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_resource_texture2d (uint,uint,uint,uint) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texturecube (float,float,float,float) t2
dcl_resource_texturecube (float,float,float,float) t3
dcl_resource_texturecube (float,float,float,float) t4
dcl_resource_texturecube (float,float,float,float) t5
dcl_resource_texture2d (float,float,float,float) t6
dcl_resource_texture2d (float,float,float,float) t7
dcl_resource_texture2d (float,float,float,float) t8
dcl_resource_texture2d (float,float,float,float) t9
dcl_resource_texture2d (float,float,float,float) t10
dcl_input_ps linear v1.xy
dcl_output o0.xyz
//dcl_temps 15

dcl_temps 16

dcl_resource_texture2d (float,float,float,float) t125
ld_indexable(texture2d)(float,float,float,float) r16.xyzw, l(0, 0, 0, 0), t125.xyzw

mul r0.xy, v1.xyxx, cb0[18].zwzz
ftoi r0.xy, r0.xyxx
ushr r0.xy, r0.xyxx, l(4)
mov r0.zw, l(0,0,0,0)
ld r0.xyzw, r0.xyzw, t0.xyzw
mad r0.yz, v1.xxyx, l(0.000000, 1.000000, -1.000000, 0.000000), l(0.000000, 0.000000, 1.000000, 0.000000)
mad r0.yz, r0.yyzy, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000)
sample_l r1.xyzw, v1.xyxx, t6.xyzw, s0, l(0.000000)
mul r0.w, r1.x, cb0[18].y
mul r0.yz, r0.yyzy, cb0[25].xxyx
mul r1.xy, r0.wwww, r0.yzyy
mov r1.z, -r0.w
mov r1.w, l(1.000000)

//Fix this broke other lights...Grr
//add r16.y, -r1.z, -r16.y
//mul r16.x, r16.x, r16.y
//mul r16.x, r16.x, cb1[25].x
//add r1.x, r1.x, -r16.x

dp4 r2.x, r1.xyzw, cb0[12].xyzw
dp4 r2.y, r1.xyzw, cb0[13].xyzw
dp4 r2.z, r1.xyzw, cb0[14].xyzw
add r0.yzw, -r2.xxyz, cb0[16].xxyz
dp3 r1.x, r0.yzwy, r0.yzwy
rsq r1.x, r1.x
mul r1.yzw, r0.yyzw, r1.xxxx
sample_l r3.xyzw, v1.xyxx, t8.xyzw, s0, l(0.000000)
sample_l r4.xyzw, v1.xyxx, t7.xyzw, s0, l(0.000000)
sample_l r5.xyzw, v1.xyxx, t9.xyzw, s0, l(0.000000)
sample_l r6.xyzw, v1.xyxx, t10.xyzw, s0, l(0.000000)
mad r3.xy, r3.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
add r6.yzw, -|r3.xxyx|, l(0.000000, 1.000000, 1.000000, 1.000000)
add r7.z, -|r3.y|, r6.y
lt r2.w, r7.z, l(0.000000)
ge r3.zw, r3.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000)
movc r3.zw, r3.zzzw, l(0,0,1.000000,1.000000), l(0,0,-1.000000,-1.000000)
mul r3.zw, r3.zzzw, r6.zzzw
movc r7.xy, r2.wwww, r3.zwzz, r3.xyxx
dp3 r2.w, r7.xyzx, r7.xyzx
rsq r2.w, r2.w
mul r3.xyz, r2.wwww, r7.xyzx
max r2.w, r5.y, l(0.080000)
mul r3.w, r2.w, r2.w
mul r4.w, r3.w, r3.w
mad r3.w, r3.w, r3.w, l(-1.000000)
mad r2.w, r2.w, l(0.500000), l(0.500000)
mul r2.w, r2.w, r2.w
mul r5.w, r2.w, r2.w
mad r2.w, -r2.w, r2.w, l(1.000000)
add r6.yzw, r4.xxyz, l(0.000000, -0.040000, -0.040000, -0.040000)
mad r6.yzw, r5.zzzz, r6.yyzw, l(0.000000, 0.040000, 0.040000, 0.040000)
add r7.xyz, -r6.yzwy, l(1.000000, 1.000000, 1.000000, 0.000000)
mul r7.xyz, r5.xxxx, r7.xyzx
dp3 r7.w, r3.xyzx, r1.yzwy
mov_sat r8.x, r7.w
mul r8.z, r8.x, r8.x
mad r8.z, r2.w, r8.z, r5.w
sqrt r8.z, r8.z
add r8.z, r8.z, r8.x
max r8.z, r8.z, l(0.000001)
div r8.z, l(1.000000, 1.000000, 1.000000, 1.000000), r8.z
mul r4.w, r4.w, r8.z
mul r4.w, r4.w, l(0.318309873)
add r8.z, r6.x, r8.x
mad r8.z, r8.z, r8.z, r6.x
add_sat r8.z, r8.z, l(-1.000000)
mov r8.y, r5.y
sample_l r9.xyzw, r8.xyxx, t1.xyzw, s2, l(0.000000)
mul r5.x, r5.x, r9.y
mad r9.xyz, r6.yzwy, r9.xxxx, r5.xxxx
lt r5.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[26].zwzz
if_nz r5.x
  add r5.x, r7.w, r7.w
  mad r10.xyz, r3.xzyx, -r5.xxxx, r1.ywzy
  div r5.x, l(2.000000), r8.y
  add r5.x, r5.x, l(-1.999990)
  log r5.x, r5.x
  mad r5.x, r5.x, l(-1.11571777), l(5.500000)
  max r5.x, r5.x, l(0.000000)
  max r8.x, |r10.z|, |r10.x|
  max r8.x, |r10.y|, r8.x
  exp r8.w, r5.x
  mad r8.w, -r8.w, l(0.00781250000), l(1.000000)
  ne r11.xyz, r8.xxxx, |r10.xyzx|
  mul r12.xyz, r8.wwww, r10.xyzx
  movc r10.xyz, r11.xyzx, r12.xyzx, r10.xyzx
  mov r10.xyz, -r10.xyzx
  sample_l r10.xyzw, r10.xyzx, t4.xyzw, s1, r5.x
  sample r11.xyzw, r3.xzyx, t2.xyzw, s2
  mul r11.xyz, r11.xyzx, cb0[26].zzzz
  mul r11.xyz, r11.xyzx, l(3.14159274, 3.14159274, 3.14159274, 0.000000)
  mul r10.xyz, r10.xyzx, cb0[26].zzzz
else 
  mov r11.xyz, l(0,0,0,0)
  mov r10.xyz, l(0,0,0,0)
endif 
if_nz r5.y
  add r5.x, r7.w, r7.w
  mad r1.yzw, r3.xxzy, -r5.xxxx, r1.yywz
  div r5.x, l(2.000000), r8.y
  add r5.x, r5.x, l(-1.999990)
  log r5.x, r5.x
  mad r5.x, r5.x, l(-1.11571777), l(5.500000)
  max r5.x, r5.x, l(0.000000)
  max r5.y, |r1.w|, |r1.y|
  max r5.y, |r1.z|, r5.y
  exp r7.w, r5.x
  mad r7.w, -r7.w, l(0.00781250000), l(1.000000)
  ne r8.xyw, |r1.yzyw|, r5.yyyy
  mul r12.xyz, r1.yzwy, r7.wwww
  movc r1.yzw, r8.xxyw, r12.xxyz, r1.yyzw
  mov r1.yzw, -r1.yyzw
  sample_l r12.xyzw, r1.yzwy, t5.xyzw, s1, r5.x
  sample r13.xyzw, r3.xzyx, t3.xyzw, s2
  mul r1.yzw, r13.xxyz, cb0[26].wwww
  mad r11.xyz, r1.yzwy, l(3.14159274, 3.14159274, 3.14159274, 0.000000), r11.xyzx
  mad r10.xyz, r12.xyzx, cb0[26].wwww, r10.xyzx
endif 
mul r1.yzw, r9.xxyz, r10.xxyz
dp3_sat r5.x, r3.xyzx, cb0[31].xyzx
mad r8.xyw, r0.yzyw, r1.xxxx, cb0[31].xyxz
dp3 r5.y, r8.xywx, r8.xywx
rsq r5.y, r5.y
mul r8.xyw, r5.yyyy, r8.xyxw
dp3_sat r5.y, r3.xyzx, r8.xywx
dp3_sat r7.w, cb0[31].xyzx, r8.xywx
mul r8.x, r5.x, r5.x
mul r5.y, r5.y, r5.y
mad r5.y, r5.y, r3.w, l(1.000000)
max r5.y, r5.y, l(0.000100)
mul r5.y, r5.y, r5.y
div r5.y, r4.w, r5.y
mad r8.x, r2.w, r8.x, r5.w
sqrt r8.x, r8.x
add r8.x, r5.x, r8.x
max r8.x, r8.x, l(0.000001)
div r8.x, l(1.000000, 1.000000, 1.000000, 1.000000), r8.x
add r7.w, -r7.w, l(1.000000)
mul r8.y, r7.w, r7.w
mul r8.y, r8.y, r8.y
mul r7.w, r7.w, r8.y
mad r9.xyz, r7.xyzx, r7.wwww, r6.yzwy
mul r10.xyz, r5.xxxx, cb0[32].xyzx
mul r10.xyz, r6.xxxx, r10.xyzx
mul r10.xyz, r10.xyzx, l(0.960000, 0.960000, 0.960000, 0.000000)
mul r5.y, r5.y, r8.x
mul r8.xyw, r9.xyxz, r5.yyyy
mul r8.xyw, r5.xxxx, r8.xyxw
mul r8.xyw, r8.xyxw, cb0[32].xyxz
mul r8.xyw, r8.zzzz, r8.xyxw
mov r9.xyz, r10.xyzx
mov r12.xyz, r8.xywx
mov r5.x, r0.x
loop 
  breakc_z r5.x
  ishl r5.y, r5.x, l(16)
  movc r7.w, r5.y, r5.y, r5.x
  ishl r9.w, r7.w, l(8)
  movc r7.w, r9.w, r9.w, r7.w
  movc r13.xy, r5.yyyy, l(15,7,0,0), l(31,23,0,0)
  movc r5.y, r9.w, r13.y, r13.x
  ishl r9.w, r7.w, l(4)
  movc r7.w, r9.w, r9.w, r7.w
  iadd r10.w, r5.y, l(-4)
  movc r5.y, r9.w, r10.w, r5.y
  ishl r9.w, r7.w, l(2)
  movc r7.w, r9.w, r9.w, r7.w
  iadd r10.w, r5.y, l(-2)
  movc r5.y, r9.w, r10.w, r5.y
  ishl r7.w, r7.w, l(1)
  iadd r9.w, r5.y, l(-1)
  movc r5.y, r7.w, r9.w, r5.y
  movc r5.y, r5.x, r5.y, l(-1)
  ishl r7.w, l(1), r5.y
  not r7.w, r7.w
  and r7.w, r5.x, r7.w
  ishl r5.y, r5.y, l(2)
  add r13.xyz, -r2.xyzx, cb1[r5.y + 0].xyzx
  dp3 r9.w, r13.xyzx, r13.xyzx
  sqrt r9.w, r9.w
  div r13.xyz, r13.xyzx, r9.wwww
  dp3_sat r10.w, r3.xyzx, r13.xyzx
  dp3 r11.w, r13.xyzx, cb1[r5.y + 2].xyzx
  max r11.w, r11.w, l(0.000000)
  add r11.w, r11.w, -cb1[r5.y + 3].w
  mul_sat r11.w, r11.w, cb1[r5.y + 3].z
  mul r11.w, r11.w, r11.w
  add r12.w, -cb1[r5.y + 3].x, cb1[r5.y + 3].y
  add r9.w, r9.w, -cb1[r5.y + 3].x
  div r12.w, l(1.000000, 1.000000, 1.000000, 1.000000), r12.w
  mul_sat r9.w, r9.w, r12.w
  mad r12.w, r9.w, l(-2.000000), l(3.000000)
  mul r9.w, r9.w, r9.w
  mad r9.w, -r12.w, r9.w, l(1.000000)
  mul r9.w, r9.w, r11.w
  mul r9.w, r10.w, r9.w
  ge r11.w, l(0.000000), r9.w
  if_nz r11.w
    mov r5.x, r7.w
    continue 
  endif 
  mul r11.w, r9.w, l(0.960000)
  mad r14.xyz, r0.yzwy, r1.xxxx, r13.xyzx
  dp3 r12.w, r14.xyzx, r14.xyzx
  rsq r12.w, r12.w
  mul r14.xyz, r12.wwww, r14.xyzx
  dp3_sat r12.w, r3.xyzx, r14.xyzx
  dp3_sat r13.x, r13.xyzx, r14.xyzx
  mul r13.y, r10.w, r10.w
  mul r12.w, r12.w, r12.w
  mad r12.w, r12.w, r3.w, l(1.000000)
  max r12.w, r12.w, l(0.000100)
  mul r12.w, r12.w, r12.w
  div r12.w, r4.w, r12.w
  add r13.x, -r13.x, l(1.000000)
  mul r13.z, r13.x, r13.x
  mul r13.z, r13.z, r13.z
  mul r13.x, r13.x, r13.z
  mad r13.xzw, r7.xxyz, r13.xxxx, r6.yyzw
  mad r13.y, r2.w, r13.y, r5.w
  sqrt r13.y, r13.y
  add r10.w, r10.w, r13.y
  max r10.w, r10.w, l(0.000001)
  div r10.w, l(1.000000, 1.000000, 1.000000, 1.000000), r10.w
  mul r10.w, r10.w, r12.w
  mul r13.xyz, r13.xzwx, r10.wwww
  mul r13.xyz, r9.wwww, r13.xyzx
  mul r14.xyz, r11.wwww, cb1[r5.y + 1].xyzx
  mad r9.xyz, r14.xyzx, r6.xxxx, r9.xyzx
  mul r13.xyz, r13.xyzx, cb1[r5.y + 1].xyzx
  mad r12.xyz, r13.xyzx, r8.zzzz, r12.xyzx
  mov r5.x, r7.w
endloop 
mad r0.xyz, r11.xyzx, r6.xxxx, r9.xyzx
max r0.xyz, r0.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
mad r1.xyz, r1.yzwy, r8.zzzz, r12.xyzx
max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
add r0.w, -r5.z, l(1.000000)
mul r0.xyz, r0.wwww, r0.xyzx
mul r0.xyz, r0.xyzx, r4.xyzx
mad o0.xyz, r0.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000), r1.xyzx
ret 
// Approximately 236 instruction slots used
