!!ARBvp1.0 
OPTION ARB_position_invariant;

TEMP R0, R1, R2;

#PARAM defaultTexCoord = { 0.08, 0.7, 0.03, 1.2 };
PARAM defaultTexCoord = { 0, 0.5, 0, 1 };

SUB R0, program.env[4], vertex.position;

DP3 result.texcoord[0].x, vertex.attrib[9], R0;
DP3 result.texcoord[0].y, vertex.attrib[10], R0;
DP3 result.texcoord[0].z, vertex.attrib[11], R0;
MOV result.texcoord[1], defaultTexCoord;
DP4 result.texcoord[1].x, vertex.attrib[8], program.env[10];
DP4 result.texcoord[1].y, vertex.attrib[8], program.env[11];
MOV result.texcoord[2], defaultTexCoord;
DP4 result.texcoord[2].x, vertex.position, program.env[9];
DP4 result.texcoord[3].x, vertex.position, program.env[6];
DP4 result.texcoord[3].y, vertex.position, program.env[7];
DP4 result.texcoord[3].w, vertex.position, program.env[8];
MOV result.texcoord[4], defaultTexCoord;
DP4 result.texcoord[4].x, vertex.attrib[8], program.env[12];
DP4 result.texcoord[4].y, vertex.attrib[8], program.env[13];
MOV result.texcoord[5], defaultTexCoord;
DP4 result.texcoord[5].x, vertex.attrib[8], program.env[14];
DP4 result.texcoord[5].y, vertex.attrib[8], program.env[15];

SUB R0, program.env[4], vertex.position;
DP3 R1, R0, R0;
RSQ R1, R1.x;
MUL R0, R0, R1.x;

SUB R1, program.env[5], vertex.position;
DP3 R2, R1, R1;
RSQ R2, R2.x;

MAD R0, R1, R2.x, R0;
#MUL R1, R1, R2.x;
#ADD R0, R0, R1;

DP3 result.texcoord[6].x, vertex.attrib[9], R0;
DP3 result.texcoord[6].y, vertex.attrib[10], R0;
DP3 result.texcoord[6].z, vertex.attrib[11], R0;

SUB R1, program.env[5], vertex.position;

DP3 result.texcoord[7].x, vertex.attrib[9], R1;
DP3 result.texcoord[7].y, vertex.attrib[10], R1;
DP3 result.texcoord[7].z, vertex.attrib[11], R1;

MOV result.texcoord[7].w, 1.0;

#MAD		result.color.xyz, vertex.color, program.env[16].x, program.env[16].y;
MAD		result.color.xyz, vertex.color, program.env[16], program.env[17];

END

#======================================================================

!!ARBfp1.0 
#OPTION ARB_precision_hint_nicest;

TEMP light, color, R1, R2, R3, R4, R5, L1, localNormal, specular;
TEMP eye, tmp, height, Noffset, Toffset, Soffset, Eoffset;

PARAM subOne = { -1, -1, -1, -1 };
PARAM scaleTwo = { 2, 2, 2, 2 };

DP3  	R1, fragment.texcoord[7], fragment.texcoord[7];
RSQ  	R1, R1.x;
MUL  	eye, fragment.texcoord[7], R1;
TEX 	height.z, fragment.texcoord[1], texture[1], 2D;
MAD  	tmp.x, height.z, 0.025, -0.025;
MAD 	Noffset, tmp.xxxx, eye, fragment.texcoord[1];
MAD 	Toffset, tmp.xxxx, eye, fragment.texcoord[4];
MAD 	Soffset, tmp.xxxx, eye, fragment.texcoord[5];
MAD 	Eoffset, tmp.xxxx, eye, fragment.texcoord[6];
DP3  	specular, Eoffset, Eoffset;
RSQ  	specular, specular.x;
MUL  	specular, specular.x, Eoffset;

TEX	light, fragment.texcoord[0], texture[0], CUBE;
MAD	light, light, scaleTwo, subOne;

#DP3  	light, fragment.texcoord[0],fragment.texcoord[0];
#RSQ  	light, light.x;
#MUL  	light, light.x, fragment.texcoord[0];

TEX 	localNormal, Noffset, texture[1], 2D;
MOV 	localNormal.x, localNormal.a;
MOV 	localNormal.z, 0.85;
MAD  	localNormal, localNormal, scaleTwo, subOne;

MOV	L1, light;
DP3  	light, light, localNormal;
TXP 	R1, fragment.texcoord[3], texture[3], 2D;
MUL  	light, light, R1;
TXP 	R1, fragment.texcoord[2], texture[2], 2D;
MUL  	light, light, R1;
TEX 	R1, Toffset, texture[4], 2D;
MUL  	color.xyz, R1, program.env[0];
DP3  	R4.w, localNormal, L1;
MUL  	R4.w, R4.w, 2.0;
MAD  	R5, localNormal, R4.w, -L1;
DP3_SAT R3, R5, specular;
MOV  	R3.y, 8.0;
POW  	R3, R3.x, R3.y;
DP3  	specular, specular, localNormal;
#TEX 	R1, specular, texture[6], 2D;
#MAD  R1, specular, R3.x, R1;
#MUL  R1, R1, program.env[1];

SUB_SAT R1.x, specular.x, 0.85;
MUL  	R1.x, R1.x, R1.x;
MUL_SAT R1.x, R1.x, 16.0;
MAD  	R1, specular, R3.x, R1;
MUL  	R1, R1.x, program.env[1];
TEX 	R2, Soffset, texture[5], 2D;
ADD  	R2, R2, R2;
MAD  	color.xyz, R1, R2, color;
MUL  	color.xyz, light, color;

MUL  	result.color.xyz, color, fragment.color;

END
