- !!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