- !!ARBfp1.0
 - OPTION ARB_precision_hint_nicest;
 - OPTION NV_fragment_program2;
 - # texture 0 is the cube map
 - # texture 1 is the per-surface bump map
 - # texture 2 is the light falloff texture
 - # texture 3 is the light projection texture
 - # texture 4 is the per-surface diffuse map
 - # texture 5 is the per-surface specular map
 - # texture 6 is the specular lookup table
 - # env[0] is the diffuse modifier
 - # env[1] is the specular modifier
 - TEMP light,color, R1, R2, R3, R4,R5, localNormal, newtexcoord,view,RT,shd,shadow;
 - PARAM shdmodi = 0.1;
 - PARAM cmodi = {0.9,0.67,0.4,1};
 - PARAM subOne = { -1, -1, -1, -1 };
 - PARAM scaleTwo = { 2, 2, 2, 2 };
 - PARAM const = { 0.06, 0.1, 0.5, 2.0 };
 - DP3 light, fragment.texcoord[0], fragment.texcoord[0];
 - RSQ light, light.w;
 - MUL light.xyz, light.w, fragment.texcoord[0];
 - DP3 view, fragment.texcoord[7], fragment.texcoord[7];
 - RSQ view, view.x;
 - MUL view, view.x, fragment.texcoord[7];
 - SUB R2.x, 1, -view.z; # depth bias in R2.x
 - MUL R2.x, R2.x, R2.x;
 - SUB R2.x, 1, R2.x;
 - RCP R1.x, view.z; # R1=1.0/view.z
 - MUL view.xy, view, const.x; # view.xy*=depth
 - MUL view.xy, view, R2.x; # view.xy*=depth_bias
 - MUL view, view, -R1.x; # view*=-R1
 - MUL view, view, const.y; # view/=10
 - MOV RT, fragment.texcoord[1]; # RT=texcoord
 - MOV RT.z, 1; # RT.z=1
 - TEX R1, RT, texture[1], 2D; # R1=tex(RT)
 - SGTC R3.w, RT.z, R1.z; # if (RT.z>R1.w)
 - ADD RT(GT.w), RT, view; # RT+=view;^
 - TEX R1, RT, texture[1], 2D; # R1=tex(RT)
 - SGTC R3.w, RT.z, R1.z; # if (RT.z>R1.w)
 - ADD RT(GT.w), RT, view; # RT+=view;
 - TEX R1, RT, texture[1], 2D; # R1=tex(RT)
 - SGTC R3.w, RT.z, R1.z; # if (RT.z>R1.w)
 - ADD RT(GT.w), RT, view; # RT+=view;
 - TEX R1, RT, texture[1], 2D; # R1=tex(RT)
 - SGTC R3.w, RT.z, R1.z; # if (RT.z>R1.w)
 - ADD RT(GT.w), RT, view; # RT+=view;
 - TEX R1, RT, texture[1], 2D; # R1=tex(RT)
 - SGTC R3.w, RT.z, R1.z; # if (RT.z>R1.w)
 - ADD RT(GT.w), RT, view; # RT+=view;
 - TEX R1, RT, texture[1], 2D; # R1=tex(RT)
 - SGTC R3.w, RT.z, R1.z; # if (RT.z>R1.w)
 - ADD RT(GT.w), RT, view; # RT+=view;
 - TEX R1, RT, texture[1], 2D; # R1=tex(RT)
 - SGTC R3.w, RT.z, R1.z; # if (RT.z>R1.w)
 - ADD RT(GT.w), RT, view; # RT+=view;
 - TEX R1, RT, texture[1], 2D; # R1=tex(RT)
 - SGTC R3.w, RT.z, R1.z; # if (RT.z>R1.w)
 - ADD RT(GT.w), RT, view; # RT+=view;
 - TEX R1, RT, texture[1], 2D; # R1=tex(RT)
 - SGTC R3.w, RT.z, R1.z; # if (RT.z>R1.w)
 - ADD RT(GT.w), RT, view; # RT+=view;
 - TEX R1, RT, texture[1], 2D; # R1=tex(RT)
 - SGTC R3.w, RT.z, R1.z; # if (RT.z>R1.w)
 - ADD RT(GT.w), RT, view; # RT+=view;
 - TEX R1, RT, texture[1], 2D; # R1=tex(RT)
 - MUL view, view, const.z; # view*=0.5
 - SGTC R3.w, RT.z, R1.z; # if (RT.z>R1.w)
 - MAD RT(GT.w), view, const.w, RT; # RT+=view*2;
 - SUB RT, RT, view; # RT-=view;
 - TEX R1, RT, texture[1], 2D; # R1=tex(RT)
 - MUL view, view, const.z; # view*=0.5
 - SGTC R3.w, RT.z, R1.z; # if (RT.z>R1.w)
 - MAD RT(GT.w), view, const.w, RT; # RT+=view*2;
 - SUB RT, RT, view; # RT-=view;
 - TEX R1, RT, texture[1], 2D; # R1=tex(RT)
 - MUL view, view, const.z; # view*=0.5
 - SGTC R3.w, RT.z, R1.z; # if (RT.z>R1.w)
 - MAD RT(GT.w), view, const.w, RT; # RT+=view*2;
 - SUB RT, RT, view; # RT-=view;
 - TEX R1, RT, texture[1], 2D; # R1=tex(RT)
 - MUL view, view, const.z; # view*=0.5
 - SGTC R3.w, RT.z, R1.z; # if (RT.z>R1.w)
 - MAD RT(GT.w), view, const.w, RT; # RT+=view*2;
 - SUB RT, RT, view; # RT-=view;
 - TEX R1, RT, texture[1], 2D; # R1=tex(RT)
 - MUL view, view, const.z; # view*=0.5
 - SGTC R3.w, RT.z, R1.z; # if (RT.z>R1.w)
 - MAD RT(GT.w), view, const.w, RT; # RT+=view*2;
 - SUB RT, RT, view; # RT-=view;
 - TEX R1, RT, texture[1], 2D; # R1=tex(RT)
 - MUL view, view, const.z; # view*=0.5
 - SGTC R3.w, RT.z, R1.z; # if (RT.z>R1.w)
 - MAD RT(GT.w), view, const.w, RT; # RT+=view*2;
 - SUB RT, RT, view; # RT-=view;
 - MOV newtexcoord,RT;
 - MOV shd,1.0;
 - MOV RT,fragment.texcoord[1];
 - TEX R1, RT, texture[1], 2D;
 - MOV RT.z,R1.z;
 - MOV R4,R1.z;
 - MOV shadow,shdmodi;
 - MAD RT,light,0.004,RT;
 - TEX R1, RT, texture[1], 2D; #R1 = tex(RT)
 - SGTC R3.w, R1.z, RT.z; #if(R1.z > RT.z)
 - MOV shd(GT.w),shadow; #shd = 0.0
 - MAD RT,light,0.004,RT;
 - TEX R1, RT, texture[1], 2D; #R1 = tex(RT)
 - SGTC R3.w, R1.z, RT.z; #if(R1.z > RT.z)
 - MOV shd(GT.w),shadow; #shd = 0.0
 - MAD RT,light,0.004,RT;
 - TEX R1, RT, texture[1], 2D; #R1 = tex(RT)
 - SGTC R3.w, R1.z, RT.z; #if(R1.z > RT.z)
 - MOV shd(GT.w),shadow; #shd = 0.0
 - MAD RT,light,0.004,RT;
 - TEX R1, RT, texture[1], 2D; #R1 = tex(RT)
 - SGTC R3.w, R1.z, RT.z; #if(R1.z > RT.z)
 - MOV shd(GT.w),shadow; #shd = 0.0
 - MAD RT,light,0.004,RT;
 - TEX R1, RT, texture[1], 2D; #R1 = tex(RT)
 - SGTC R3.w, R1.z, RT.z; #if(R1.z > RT.z)
 - MOV shd(GT.w),shadow; #shd = 0.0
 - MAD RT,light,0.004,RT;
 - TEX R1, RT, texture[1], 2D; #R1 = tex(RT)
 - SGTC R3.w, R1.z, RT.z; #if(R1.z > RT.z)
 - MOV shd(GT.w),shadow; #shd = 0.0
 - MAD RT,light,0.004,RT;
 - TEX R1, RT, texture[1], 2D; #R1 = tex(RT)
 - SGTC R3.w, R1.z, RT.z; #if(R1.z > RT.z)
 - MOV shd(GT.w),shadow; #shd = 0.0
 - MAD RT,light,0.004,RT;
 - TEX R1, RT, texture[1], 2D; #R1 = tex(RT)
 - SGTC R3.w, R1.z, RT.z; #if(R1.z > RT.z)
 - MOV shd(GT.w),shadow; #shd = 0.0
 - MAD RT,light,0.004,RT;
 - TEX R1, RT, texture[1], 2D; #R1 = tex(RT)
 - SGTC R3.w, R1.z, RT.z; #if(R1.z > RT.z)
 - MOV shd(GT.w),shadow; #shd = 0.0
 - MAD RT,light,0.004,RT;
 - TEX R1, RT, texture[1], 2D; #R1 = tex(RT)
 - SGTC R3.w, R1.z, RT.z; #if(R1.z > RT.z)
 - MOV shd(GT.w),shadow; #shd = 0.0
 - MUL R4.xyz,cmodi,program.env[0];
 - # modulate by the light projection
 - TXP R1, fragment.texcoord[3], texture[3], 2D;
 - MUL R4, R4, R1;
 - # modulate by the light falloff
 - TXP R1, fragment.texcoord[2], texture[2], 2D;
 - MUL R4, R4, R1;
 - MUL R4,R4,shd;
 - TEX color,newtexcoord, texture[4], 2D;
 - MUL color,color,R4;
 - MUL result.color.xyz, color, fragment.color;
 - END
 
