init: sdl init: enet init: video: mode init: video: misc init: gl Renderer: GeForce 6600/AGP/SSE2/3DNOW! (NVIDIA Corporation) Driver: 2.1.1 NVIDIA 100.14.19 Rendering using the OpenGL 1.5 GLSL shader path. init: console init: gl: effects VS default: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; MOV result.color, vertex.color; END PS default: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP diffuse; TEX diffuse, fragment.texcoord[0], texture[0], 2D; MUL result.color, fragment.color, diffuse; END ************** VS rgbonly: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; MOV result.color, vertex.color; END PS rgbonly: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP diffuse; TEX diffuse, fragment.texcoord[0], texture[0], 2D; MUL result.color.xyz, fragment.color, diffuse; MOV result.color.w, fragment.color; END ************** VS notexture: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; MOV result.color, vertex.color; END PS notexture: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; MOV result.color, fragment.color; END ************** VS fogged: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS fogged: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse; TEX diffuse, fragment.texcoord[0], texture[0], 2D; MUL result.color, fragment.color, diffuse; END ************** VS foggednotexture: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS foggednotexture: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; MOV result.color, fragment.color; END ************** VS nocolor: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; END PS nocolor: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; END ************** VS nocolorglsl: void main() { gl_Position = ftransform(); } PS nocolorglsl: void main() {} ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[14], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[14], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[13], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[13], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[14], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS stdworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS stdworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[14], dynlight.x, lm; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[14], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[14], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[14], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS decalworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS decalworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[14], dynlight.x, lm; TEMP decal; TEX decal, fragment.texcoord[0], texture[2], 2D; LRP diffuse, decal.w, decal, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[14], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[14], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[13], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[13], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[14], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS colorworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS colorworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[14], dynlight.x, lm; MUL diffuse, diffuse, program.env[16]; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[14], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[14], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[13], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[13], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[14], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS glowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS glowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[14], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, program.env[16]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD lm.rgb, program.env[14], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD lm.rgb, program.env[14], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[14], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water END ************** VS pulseworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS result.texcoord[2], k; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[14], dynlight.x, lm; TEMP pulse; TEX pulse, fragment.texcoord[0], texture[2], 2D; LRP diffuse, fragment.texcoord[2], pulse, diffuse; MUL diffuse, diffuse, 2; MUL result.color, diffuse, lm; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[13], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[13], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD lm.rgb, program.env[14], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD lm.rgb, program.env[14], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[14], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water END ************** VS pulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP k, col; MUL k, program.env[6], program.env[17].x; FRC k, k; MAD k, k, 2, -1; ABS k, k; SUB col, program.env[18], program.env[16]; MAD result.texcoord[2], k, col, program.env[16]; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS pulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[14], dynlight.x, lm; MUL diffuse, diffuse, 2; TEMP glow; TEX glow, fragment.texcoord[0], texture[2], 2D; MUL glow, glow, fragment.texcoord[2]; MAD result.color, lm, diffuse, glow; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS fogworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; END PS fogworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; MOV result.color, state.fog.color; END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap DP4 result.texcoord[4].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[4].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[4].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[4], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[4].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap DP4 result.texcoord[4].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[4].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[4].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[4], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[4].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap DP4 result.texcoord[4].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[4].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[4].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[4], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[4].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[10], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap DP4 result.texcoord[4].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[4].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[4].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[4], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[4].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[10], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap DP4 result.texcoord[4].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[4].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[4].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[4], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[4].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[11], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap DP4 result.texcoord[4].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[4].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[4].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[4], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[4].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[11], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap DP4 result.texcoord[4].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[4].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[4].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[4], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[4].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[12], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap DP4 result.texcoord[4].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[4].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[4].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[4], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[4].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[12], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap DP4 result.texcoord[4].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[4].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[4].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[4], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[4].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[12], dynlight.x, lm; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD lm.rgb, program.env[13], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap DP4 result.texcoord[4].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[4].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[4].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[4], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[4].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[12], dynlight.x, lm; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD lm.rgb, program.env[13], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap DP4 result.texcoord[4].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[4].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[4].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[4], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[4].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[12], dynlight.x, lm; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD lm.rgb, program.env[13], dynlight.x, lm; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD lm.rgb, program.env[14], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap DP4 result.texcoord[4].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[4].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[4].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[4], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[4].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[12], dynlight.x, lm; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD lm.rgb, program.env[13], dynlight.x, lm; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD lm.rgb, program.env[14], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[13], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[13], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD lm.rgb, program.env[14], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; MAD result.texcoord[2], vertex.color, 2, -1; SUB result.texcoord[3], program.env[4], opos; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD lm.rgb, program.env[14], dynlight.x, lm; ATTRIB normal = fragment.texcoord[2]; ATTRIB camvec = fragment.texcoord[3]; TEMP rvec; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD rvec, rvec, 2, -camvec; TEMP reflect; TEX reflect, rvec, texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD lm.rgb, program.env[14], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, lm, program.env[7]; MAD lm.rgb, smvals.y, -smambient, lm; #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD lm.rgb, program.env[14], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[14], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water END ************** VS envworldfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP camvec, normal, rvec; MAD normal, vertex.color, 2, -1; SUB camvec, program.env[4], opos; DP3 rvec, camvec, normal; MUL rvec, rvec, normal; MAD result.texcoord[2], rvec, 2, -camvec; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS envworldfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse, lm; TEX diffuse, fragment.texcoord[0], texture[0], 2D; TEX lm, fragment.texcoord[1], texture[1], 2D; #pragma CUBE2_shadowmap lm #pragma CUBE2_dynlight lm TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD lm.rgb, program.env[10], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD lm.rgb, program.env[11], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD lm.rgb, program.env[12], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD lm.rgb, program.env[13], dynlight.x, lm; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD lm.rgb, program.env[14], dynlight.x, lm; TEMP reflect; TEX reflect, fragment.texcoord[2], texture[2], CUBE; MUL diffuse, diffuse, 2; MUL diffuse, diffuse, lm; LRP result.color, program.env[16], reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; #pragma CUBE2_water END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; #pragma CUBE2_water END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; #pragma CUBE2_water END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumppulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumppulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[3], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[3], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[4], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; #pragma CUBE2_water END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; #pragma CUBE2_water END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB result.texcoord[1].xyz, program.env[4], opos; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP bumpw; DP3 bumpw.x, bump, fragment.texcoord[2]; DP3 bumpw.y, bump, fragment.texcoord[3]; DP3 bumpw.z, bump, fragment.texcoord[4]; DP3 rvec, cam, bumpw; MUL rvec, rvec, bumpw; MAD rvec, rvec, 2, -cam; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[2].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[2].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[2].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[2], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[2].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[2].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[2].w, 1; MAD result.texcoord[3].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[2], fragment.texcoord[2]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmappulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmappulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water END ************** VS bumpenvparallaxworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL result.color, diffuse, light; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP result.color, rmod, reflect, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[1].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; MAD result.color, glow, program.env[16], diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[1].w; END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[3].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[3].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[3].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[4].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[3], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[3].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[13], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[4], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvparallaxpulseglowworldalt: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[1].x, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[1].y, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[2].x, camv, tangent; DP3 result.texcoord[2].y, camv, binormal; DP3 result.texcoord[2].z, camv, normal; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[3].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[3].w, 1; MAD result.texcoord[4].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[4].w, 1; MAD result.texcoord[5].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[13].w, program.env[13]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[14].w, program.env[14]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[0].z, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvparallaxpulseglowworldalt: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[1]; ATTRIB cam = fragment.texcoord[2]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc, texture[1], 2D; TEX lmlv, lmtc, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[3], fragment.texcoord[3]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[4], fragment.texcoord[4]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[12], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[13], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[0].z; END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; PARAM rmod = program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap DP4 result.texcoord[5].x, state.matrix.texture[2].row[0], vertex.position; DP4 result.texcoord[5].y, state.matrix.texture[2].row[1], vertex.position; DP4 result.texcoord[5].z, state.matrix.texture[2].row[2], vertex.position; #pragma CUBE2_dynlight MAD result.texcoord[6].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light TEMP smvals, smdiff, smambient; TEX smvals, fragment.texcoord[5], texture[7], 2D; MAD_SAT smdiff.xz, -fragment.texcoord[5].z, smvals.y, smvals; CMP smvals.y, -smdiff.x, smvals.y, 0; MAD_SAT smvals.y, -8, smdiff.z, smvals.y; SUB_SAT smambient.rgb, light, program.env[7]; MAD light.rgb, smvals.y, -smambient, light; #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[11], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[1].w, program.env[1]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[12], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[6], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water END ************** VS bumpenvspecmapparallaxpulseglowworld: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, program.env[0]; DP3 result.texcoord[0].y, opos, program.env[1]; DP3 result.texcoord[0].z, state.matrix.texture[1].row[0], vertex.texcoord[1]; DP3 result.texcoord[0].w, state.matrix.texture[1].row[1], vertex.texcoord[1]; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; TEMP camv, normal, tangent, binormal, x, y; MAD normal, vertex.color, 2, -1; DP3 x, normal, program.env[2]; MUL x, x, normal; SUB tangent, program.env[2], x; DP3 x, tangent, program.env[3]; MUL x, x, tangent; DP3 y, normal, program.env[3]; MUL y, y, normal; SUB binormal, program.env[3], x; SUB binormal, binormal, y; SUB camv, program.env[4], opos; DP3 result.texcoord[1].x, camv, tangent; DP3 result.texcoord[1].y, camv, binormal; DP3 result.texcoord[1].z, camv, normal; MOV result.texcoord[2].x, tangent.x; MOV result.texcoord[2].y, binormal.x; MOV result.texcoord[2].z, normal.x; MOV result.texcoord[3].x, tangent.y; MOV result.texcoord[3].y, binormal.y; MOV result.texcoord[3].z, normal.y; MOV result.texcoord[4].x, tangent.z; MOV result.texcoord[4].y, binormal.z; MOV result.texcoord[4].z, normal.z; TEMP pulse, pulsecol; MUL pulse, program.env[6], program.env[20].x; FRC pulse, pulse; MAD pulse, pulse, 2, -1; ABS result.texcoord[1].w, pulse.x; #pragma CUBE2_shadowmap #pragma CUBE2_dynlight MAD result.texcoord[5].xyz, vertex.position, program.env[10].w, program.env[10]; MOV result.texcoord[5].w, 1; MAD result.texcoord[6].xyz, vertex.position, program.env[11].w, program.env[11]; MOV result.texcoord[6].w, 1; MAD result.texcoord[7].xyz, vertex.position, program.env[12].w, program.env[12]; MOV result.texcoord[7].w, 1; #pragma CUBE2_water MAD result.texcoord[2].w, opos.z, program.env[8].y, program.env[8].z; END PS bumpenvspecmapparallaxpulseglowworld: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB htc = fragment.texcoord[0]; ATTRIB lmtc = fragment.texcoord[0]; ATTRIB cam = fragment.texcoord[1]; TEMP diffuse, lmc, lmlv, bump, light; TEX lmc, lmtc.zwzw, texture[1], 2D; TEX lmlv, lmtc.zwzw, texture[2], 2D; MAD lmlv, lmlv, 2, -1; TEMP camvts; DP3 camvts.w, cam, cam; RSQ camvts.w, camvts.w; MUL camvts.xyz, camvts.w, cam; TEMP height; TEX height, htc, texture[4], 2D; MAD height.w, height.w, program.env[18].x, program.env[18].y; TEMP dtc; MAD dtc, height.w, camvts, htc; TEX diffuse, dtc, texture[0], 2D; MUL diffuse, diffuse, 2; TEX bump, dtc, texture[4], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 32; TEMP he; ADD he, camvts, lmlv; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; DP3_SAT he.w, he, bump; POW he.w, he.w, specfactor.x; MUL he.w, he, diffuse; MAD diffuse.xyz, he.w, program.env[17], diffuse; DP3_SAT light, bump, lmlv; MUL light, light, lmc; MAX light, light, program.env[5]; #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light TEMP dynlight; DPH_SAT dynlight.x, -fragment.texcoord[5], fragment.texcoord[5]; MAD light.rgb, program.env[10], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[6], fragment.texcoord[6]; MAD light.rgb, program.env[11], dynlight.x, light; DPH_SAT dynlight.x, -fragment.texcoord[7], fragment.texcoord[7]; MAD light.rgb, program.env[12], dynlight.x, light; TEMP dynlightdir; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[2].w, program.env[2]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[13], dynlight.x, light; MAD dynlightdir.xyz, fragment.texcoord[5], program.env[3].w, program.env[3]; DP3_SAT dynlight.x, dynlightdir, dynlightdir; SUB dynlight.x, 1, dynlight.x; MAD light.rgb, program.env[14], dynlight.x, light; MUL diffuse.rgb, diffuse, light; TEMP rvec; TEMP rvects; DP3 rvects, cam, bump; MUL rvects, rvects, bump; MAD rvects, rvects, 2, -cam; DP3 rvec.x, rvects, fragment.texcoord[2]; DP3 rvec.y, rvects, fragment.texcoord[3]; DP3 rvec.z, rvects, fragment.texcoord[4]; TEMP reflect; TEX reflect, rvec, texture[3], CUBE; TEMP rmod; MUL rmod, diffuse.w, program.env[19]; LRP diffuse.rgb, rmod, reflect, diffuse; TEMP glow; TEX glow, dtc, texture[5], 2D; TEMP pulsecol; LRP pulsecol, fragment.texcoord[1].w, program.env[21], program.env[16]; MAD result.color, glow, pulsecol, diffuse; #pragma CUBE2_water MOV result.color.a, fragment.texcoord[2].w; END ************** VS blurx1: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; END PS blurx1: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP val, blur1, blur2, tc1, tc2; TEX val, fragment.texcoord[0], texture[0], 2D; MUL val, val, program.env[0].x; ADD tc1.xy, fragment.texcoord[0], program.env[1]; SUB tc2.xy, fragment.texcoord[0], program.env[1]; TEX blur1, tc1, texture[0], 2D; TEX blur2, tc2, texture[0], 2D; ADD blur1, blur1, blur2; MAD result.color, blur1, program.env[0].y, val; END ************** VS blury1: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; END PS blury1: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP val, blur1, blur2, tc1, tc2; TEX val, fragment.texcoord[0], texture[0], 2D; MUL val, val, program.env[0].x; ADD tc1.xy, fragment.texcoord[0], program.env[1]; SUB tc2.xy, fragment.texcoord[0], program.env[1]; TEX blur1, tc1, texture[0], 2D; TEX blur2, tc2, texture[0], 2D; ADD blur1, blur1, blur2; MAD result.color, blur1, program.env[0].y, val; END ************** VS blurx2: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; END PS blurx2: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP val, blur1, blur2, tc1, tc2; TEX val, fragment.texcoord[0], texture[0], 2D; MUL val, val, program.env[0].x; ADD tc1.xy, fragment.texcoord[0], program.env[1]; SUB tc2.xy, fragment.texcoord[0], program.env[1]; TEX blur1, tc1, texture[0], 2D; TEX blur2, tc2, texture[0], 2D; ADD blur1, blur1, blur2; MAD val, blur1, program.env[0].y, val; ADD tc1.x, tc1, program.env[1].z; SUB tc2.x, tc2, program.env[1].z; TEX blur1, tc1, texture[0], 2D; TEX blur2, tc2, texture[0], 2D; ADD blur1, blur1, blur2; MAD result.color, blur1, program.env[0].z, val; END ************** VS blury2: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; END PS blury2: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP val, blur1, blur2, tc1, tc2; TEX val, fragment.texcoord[0], texture[0], 2D; MUL val, val, program.env[0].x; ADD tc1.xy, fragment.texcoord[0], program.env[1]; SUB tc2.xy, fragment.texcoord[0], program.env[1]; TEX blur1, tc1, texture[0], 2D; TEX blur2, tc2, texture[0], 2D; ADD blur1, blur1, blur2; MAD val, blur1, program.env[0].y, val; ADD tc1.y, tc1, program.env[1].z; SUB tc2.y, tc2, program.env[1].z; TEX blur1, tc1, texture[0], 2D; TEX blur2, tc2, texture[0], 2D; ADD blur1, blur1, blur2; MAD result.color, blur1, program.env[0].z, val; END ************** VS blurx3: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; END PS blurx3: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP val, blur1, blur2, tc1, tc2; TEX val, fragment.texcoord[0], texture[0], 2D; MUL val, val, program.env[0].x; ADD tc1.xy, fragment.texcoord[0], program.env[1]; SUB tc2.xy, fragment.texcoord[0], program.env[1]; TEX blur1, tc1, texture[0], 2D; TEX blur2, tc2, texture[0], 2D; ADD blur1, blur1, blur2; MAD val, blur1, program.env[0].y, val; ADD tc1.x, tc1, program.env[1].z; SUB tc2.x, tc2, program.env[1].z; TEX blur1, tc1, texture[0], 2D; TEX blur2, tc2, texture[0], 2D; ADD blur1, blur1, blur2; MAD val, blur1, program.env[0].z, val; ADD tc1.x, tc1, program.env[1].w; SUB tc2.x, tc2, program.env[1].w; TEX blur1, tc1, texture[0], 2D; TEX blur2, tc2, texture[0], 2D; ADD blur1, blur1, blur2; MAD result.color, blur1, program.env[0].w, val; END ************** VS blury3: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; END PS blury3: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP val, blur1, blur2, tc1, tc2; TEX val, fragment.texcoord[0], texture[0], 2D; MUL val, val, program.env[0].x; ADD tc1.xy, fragment.texcoord[0], program.env[1]; SUB tc2.xy, fragment.texcoord[0], program.env[1]; TEX blur1, tc1, texture[0], 2D; TEX blur2, tc2, texture[0], 2D; ADD blur1, blur1, blur2; MAD val, blur1, program.env[0].y, val; ADD tc1.y, tc1, program.env[1].z; SUB tc2.y, tc2, program.env[1].z; TEX blur1, tc1, texture[0], 2D; TEX blur2, tc2, texture[0], 2D; ADD blur1, blur1, blur2; MAD val, blur1, program.env[0].z, val; ADD tc1.y, tc1, program.env[1].w; SUB tc2.y, tc2, program.env[1].w; TEX blur1, tc1, texture[0], 2D; TEX blur2, tc2, texture[0], 2D; ADD blur1, blur1, blur2; MAD result.color, blur1, program.env[0].w, val; END ************** VS shadowmapcaster: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP z; DP4 z, opos, state.matrix.mvp.row[2]; SUB result.texcoord[0].x, 1, z; MOV result.texcoord[0].y, 1; MOV result.texcoord[0].zw, 0; END PS shadowmapcaster: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; MOV result.color, fragment.texcoord[0]; END ************** VS shadowmapcaster: !!ARBvp1.0 ATTRIB spos = vertex.position; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MOV mx, mats[bone.x]; MOV my, mats[bone.x+1]; MOV mz, mats[bone.x+2]; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; TEMP z; DP4 z, opos, state.matrix.mvp.row[2]; MOV result.position.z, z; SUB result.texcoord[0].x, 1, z; MOV result.texcoord[0].y, 1; MOV result.texcoord[0].zw, 0; END PS shadowmapcaster: ************** VS shadowmapcaster: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; MOV dqreal, quats[bone.x]; MOV dqdual, quats[bone.x+1]; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; TEMP z; DP4 z, opos, state.matrix.mvp.row[2]; MOV result.position.z, z; SUB result.texcoord[0].x, 1, z; MOV result.texcoord[0].y, 1; MOV result.texcoord[0].zw, 0; END PS shadowmapcaster: ************** VS shadowmapcaster: !!ARBvp1.0 ATTRIB spos = vertex.position; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; TEMP z; DP4 z, opos, state.matrix.mvp.row[2]; MOV result.position.z, z; SUB result.texcoord[0].x, 1, z; MOV result.texcoord[0].y, 1; MOV result.texcoord[0].zw, 0; END PS shadowmapcaster: ************** VS shadowmapcaster: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; TEMP z; DP4 z, opos, state.matrix.mvp.row[2]; MOV result.position.z, z; SUB result.texcoord[0].x, 1, z; MOV result.texcoord[0].y, 1; MOV result.texcoord[0].zw, 0; END PS shadowmapcaster: ************** VS shadowmapcaster: !!ARBvp1.0 ATTRIB spos = vertex.position; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; TEMP z; DP4 z, opos, state.matrix.mvp.row[2]; MOV result.position.z, z; SUB result.texcoord[0].x, 1, z; MOV result.texcoord[0].y, 1; MOV result.texcoord[0].zw, 0; END PS shadowmapcaster: ************** VS shadowmapcaster: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; TEMP z; DP4 z, opos, state.matrix.mvp.row[2]; MOV result.position.z, z; SUB result.texcoord[0].x, 1, z; MOV result.texcoord[0].y, 1; MOV result.texcoord[0].zw, 0; END PS shadowmapcaster: ************** VS shadowmapcaster: !!ARBvp1.0 ATTRIB spos = vertex.position; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; ARL bone.x, bones.w; MAD mx, weights.w, mats[bone.x], mx; MAD my, weights.w, mats[bone.x+1], my; MAD mz, weights.w, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; TEMP z; DP4 z, opos, state.matrix.mvp.row[2]; MOV result.position.z, z; SUB result.texcoord[0].x, 1, z; MOV result.texcoord[0].y, 1; MOV result.texcoord[0].zw, 0; END PS shadowmapcaster: ************** VS shadowmapcaster: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; ARL bone.x, bones.w; DP4C dir.w, dqreal, quats[bone.x]; MOV weights.w (LT), -weights.w; MAD dqreal, weights.w, quats[bone.x], dqreal; MAD dqdual, weights.w, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; TEMP z; DP4 z, opos, state.matrix.mvp.row[2]; MOV result.position.z, z; SUB result.texcoord[0].x, 1, z; MOV result.texcoord[0].y, 1; MOV result.texcoord[0].zw, 0; END PS shadowmapcaster: ************** VS shadowmapreceiver: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP z; DP4 z, state.matrix.mvp.row[2], opos; SUB result.texcoord[0], program.env[0].y, z; END PS shadowmapreceiver: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; MOV result.color, fragment.texcoord[0]; END ************** VS dynshadow: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS dynshadow: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; MOV result.color, fragment.color; END ************** VS dynshadow: !!ARBvp1.0 ATTRIB spos = vertex.position; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MOV mx, mats[bone.x]; MOV my, mats[bone.x+1]; MOV mz, mats[bone.x+2]; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS dynshadow: ************** VS dynshadow: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; MOV dqreal, quats[bone.x]; MOV dqdual, quats[bone.x+1]; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS dynshadow: ************** VS dynshadow: !!ARBvp1.0 ATTRIB spos = vertex.position; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS dynshadow: ************** VS dynshadow: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS dynshadow: ************** VS dynshadow: !!ARBvp1.0 ATTRIB spos = vertex.position; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS dynshadow: ************** VS dynshadow: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS dynshadow: ************** VS dynshadow: !!ARBvp1.0 ATTRIB spos = vertex.position; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; ARL bone.x, bones.w; MAD mx, weights.w, mats[bone.x], mx; MAD my, weights.w, mats[bone.x+1], my; MAD mz, weights.w, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS dynshadow: ************** VS dynshadow: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; ARL bone.x, bones.w; DP4C dir.w, dqreal, quats[bone.x]; MOV weights.w (LT), -weights.w; MAD dqreal, weights.w, quats[bone.x], dqreal; MAD dqdual, weights.w, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS dynshadow: ************** VS stdmodel: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; ATTRIB onormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS stdmodel: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lightdir = fragment.texcoord[2]; PARAM specfactor = 128; PARAM specintensity = program.env[2]; PARAM ambient = program.env[3]; PARAM glowscale = program.env[4]; TEMP diffuse, light; TEX diffuse, dtc, texture[0], 2D; TEMP spec, halfangle; TEMP normal; DP3 halfangle.w, fragment.texcoord[3], fragment.texcoord[3]; RSQ halfangle.w, halfangle.w; MUL halfangle.xyz, halfangle.w, fragment.texcoord[3]; DP3 normal.w, fragment.texcoord[1], fragment.texcoord[1]; RSQ normal.w, normal.w; MUL normal.xyz, normal.w, fragment.texcoord[1]; DP3_SAT spec, halfangle, normal; POW spec, spec.x, specfactor.x; MUL spec, spec, specintensity; DP3_SAT light, normal, lightdir; MUL light.rgb, light, 1.5; MAX light, light, ambient; MAD light, light, diffuse, spec; MUL result.color, light, fragment.color; END ************** VS stdmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MOV mx, mats[bone.x]; MOV my, mats[bone.x+1]; MOV mz, mats[bone.x+2]; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS stdmodel: ************** VS stdmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; MOV dqreal, quats[bone.x]; MOV dqdual, quats[bone.x+1]; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS stdmodel: ************** VS stdmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS stdmodel: ************** VS stdmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS stdmodel: ************** VS stdmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS stdmodel: ************** VS stdmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS stdmodel: ************** VS stdmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; ARL bone.x, bones.w; MAD mx, weights.w, mats[bone.x], mx; MAD my, weights.w, mats[bone.x+1], my; MAD mz, weights.w, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS stdmodel: ************** VS stdmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; ARL bone.x, bones.w; DP4C dir.w, dqreal, quats[bone.x]; MOV weights.w (LT), -weights.w; MAD dqreal, weights.w, quats[bone.x], dqreal; MAD dqdual, weights.w, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS stdmodel: ************** VS masksmodel: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; ATTRIB onormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS masksmodel: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lightdir = fragment.texcoord[2]; PARAM specfactor = 128; PARAM specintensity = program.env[2]; PARAM ambient = program.env[3]; PARAM glowscale = program.env[4]; TEMP diffuse, light; TEX diffuse, dtc, texture[0], 2D; TEMP spec, halfangle; TEMP normal; DP3 halfangle.w, fragment.texcoord[3], fragment.texcoord[3]; RSQ halfangle.w, halfangle.w; MUL halfangle.xyz, halfangle.w, fragment.texcoord[3]; DP3 normal.w, fragment.texcoord[1], fragment.texcoord[1]; RSQ normal.w, normal.w; MUL normal.xyz, normal.w, fragment.texcoord[1]; DP3_SAT spec, halfangle, normal; POW spec, spec.x, specfactor.x; MUL spec, spec, specintensity; DP3_SAT light, normal, lightdir; MUL light.rgb, light, 1.5; MAX light, light, ambient; TEMP masks; TEX masks, dtc, texture[1], 2D; MUL spec, spec, masks.r; MAD light, light, diffuse, spec; MUL light, light, fragment.color; TEMP glow; MUL glow, diffuse, glowscale; LRP result.color, masks.g, glow, light; MUL result.color.a, diffuse.a, fragment.color.a; END ************** VS masksmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MOV mx, mats[bone.x]; MOV my, mats[bone.x+1]; MOV mz, mats[bone.x+2]; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS masksmodel: ************** VS masksmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; MOV dqreal, quats[bone.x]; MOV dqdual, quats[bone.x+1]; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS masksmodel: ************** VS masksmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS masksmodel: ************** VS masksmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS masksmodel: ************** VS masksmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS masksmodel: ************** VS masksmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS masksmodel: ************** VS masksmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; ARL bone.x, bones.w; MAD mx, weights.w, mats[bone.x], mx; MAD my, weights.w, mats[bone.x+1], my; MAD mz, weights.w, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS masksmodel: ************** VS masksmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; ARL bone.x, bones.w; DP4C dir.w, dqreal, quats[bone.x]; MOV weights.w (LT), -weights.w; MAD dqreal, weights.w, quats[bone.x], dqreal; MAD dqdual, weights.w, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS masksmodel: ************** VS envmapmodel: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; ATTRIB onormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP rvec, invfresnel; DP3 invfresnel, camvec, onormal; MUL rvec, invfresnel, onormal; MAD rvec, rvec, 2, -camvec; DP3 result.texcoord[4].x, state.matrix.texture.row[0], rvec; DP3 result.texcoord[4].y, state.matrix.texture.row[1], rvec; DP3 result.texcoord[4].z, state.matrix.texture.row[2], rvec; MAX invfresnel, invfresnel, 0; MAD result.texcoord[4].w, program.env[6].x, invfresnel, program.env[6].y; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS envmapmodel: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lightdir = fragment.texcoord[2]; PARAM specfactor = 128; PARAM specintensity = program.env[2]; PARAM ambient = program.env[3]; PARAM glowscale = program.env[4]; TEMP diffuse, light; TEX diffuse, dtc, texture[0], 2D; TEMP spec, halfangle; TEMP normal; DP3 halfangle.w, fragment.texcoord[3], fragment.texcoord[3]; RSQ halfangle.w, halfangle.w; MUL halfangle.xyz, halfangle.w, fragment.texcoord[3]; DP3 normal.w, fragment.texcoord[1], fragment.texcoord[1]; RSQ normal.w, normal.w; MUL normal.xyz, normal.w, fragment.texcoord[1]; DP3_SAT spec, halfangle, normal; POW spec, spec.x, specfactor.x; MUL spec, spec, specintensity; DP3_SAT light, normal, lightdir; MUL light.rgb, light, 1.5; MAX light, light, ambient; TEMP masks; TEX masks, dtc, texture[1], 2D; MUL spec, spec, masks.r; MAD light, light, diffuse, spec; MUL light, light, fragment.color; TEMP glow; MUL glow, diffuse, glowscale; LRP light, masks.g, glow, light; TEMP reflect; TEX reflect, fragment.texcoord[4], texture[2], CUBE; MUL masks.b, masks.b, fragment.texcoord[4].w; LRP result.color, masks.b, reflect, light; MUL result.color.a, diffuse.a, fragment.color.a; END ************** VS envmapmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MOV mx, mats[bone.x]; MOV my, mats[bone.x+1]; MOV mz, mats[bone.x+2]; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP rvec, invfresnel; DP3 invfresnel, camvec, onormal; MUL rvec, invfresnel, onormal; MAD rvec, rvec, 2, -camvec; DP3 result.texcoord[4].x, state.matrix.texture.row[0], rvec; DP3 result.texcoord[4].y, state.matrix.texture.row[1], rvec; DP3 result.texcoord[4].z, state.matrix.texture.row[2], rvec; MAX invfresnel, invfresnel, 0; MAD result.texcoord[4].w, program.env[6].x, invfresnel, program.env[6].y; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS envmapmodel: ************** VS envmapmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; MOV dqreal, quats[bone.x]; MOV dqdual, quats[bone.x+1]; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP rvec, invfresnel; DP3 invfresnel, camvec, onormal; MUL rvec, invfresnel, onormal; MAD rvec, rvec, 2, -camvec; DP3 result.texcoord[4].x, state.matrix.texture.row[0], rvec; DP3 result.texcoord[4].y, state.matrix.texture.row[1], rvec; DP3 result.texcoord[4].z, state.matrix.texture.row[2], rvec; MAX invfresnel, invfresnel, 0; MAD result.texcoord[4].w, program.env[6].x, invfresnel, program.env[6].y; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS envmapmodel: ************** VS envmapmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP rvec, invfresnel; DP3 invfresnel, camvec, onormal; MUL rvec, invfresnel, onormal; MAD rvec, rvec, 2, -camvec; DP3 result.texcoord[4].x, state.matrix.texture.row[0], rvec; DP3 result.texcoord[4].y, state.matrix.texture.row[1], rvec; DP3 result.texcoord[4].z, state.matrix.texture.row[2], rvec; MAX invfresnel, invfresnel, 0; MAD result.texcoord[4].w, program.env[6].x, invfresnel, program.env[6].y; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS envmapmodel: ************** VS envmapmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP rvec, invfresnel; DP3 invfresnel, camvec, onormal; MUL rvec, invfresnel, onormal; MAD rvec, rvec, 2, -camvec; DP3 result.texcoord[4].x, state.matrix.texture.row[0], rvec; DP3 result.texcoord[4].y, state.matrix.texture.row[1], rvec; DP3 result.texcoord[4].z, state.matrix.texture.row[2], rvec; MAX invfresnel, invfresnel, 0; MAD result.texcoord[4].w, program.env[6].x, invfresnel, program.env[6].y; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS envmapmodel: ************** VS envmapmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP rvec, invfresnel; DP3 invfresnel, camvec, onormal; MUL rvec, invfresnel, onormal; MAD rvec, rvec, 2, -camvec; DP3 result.texcoord[4].x, state.matrix.texture.row[0], rvec; DP3 result.texcoord[4].y, state.matrix.texture.row[1], rvec; DP3 result.texcoord[4].z, state.matrix.texture.row[2], rvec; MAX invfresnel, invfresnel, 0; MAD result.texcoord[4].w, program.env[6].x, invfresnel, program.env[6].y; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS envmapmodel: ************** VS envmapmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP rvec, invfresnel; DP3 invfresnel, camvec, onormal; MUL rvec, invfresnel, onormal; MAD rvec, rvec, 2, -camvec; DP3 result.texcoord[4].x, state.matrix.texture.row[0], rvec; DP3 result.texcoord[4].y, state.matrix.texture.row[1], rvec; DP3 result.texcoord[4].z, state.matrix.texture.row[2], rvec; MAX invfresnel, invfresnel, 0; MAD result.texcoord[4].w, program.env[6].x, invfresnel, program.env[6].y; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS envmapmodel: ************** VS envmapmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; ARL bone.x, bones.w; MAD mx, weights.w, mats[bone.x], mx; MAD my, weights.w, mats[bone.x+1], my; MAD mz, weights.w, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP rvec, invfresnel; DP3 invfresnel, camvec, onormal; MUL rvec, invfresnel, onormal; MAD rvec, rvec, 2, -camvec; DP3 result.texcoord[4].x, state.matrix.texture.row[0], rvec; DP3 result.texcoord[4].y, state.matrix.texture.row[1], rvec; DP3 result.texcoord[4].z, state.matrix.texture.row[2], rvec; MAX invfresnel, invfresnel, 0; MAD result.texcoord[4].w, program.env[6].x, invfresnel, program.env[6].y; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS envmapmodel: ************** VS envmapmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; ARL bone.x, bones.w; DP4C dir.w, dqreal, quats[bone.x]; MOV weights.w (LT), -weights.w; MAD dqreal, weights.w, quats[bone.x], dqreal; MAD dqdual, weights.w, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; MOV result.texcoord[1], onormal; MOV result.texcoord[2], lightdir; ADD result.texcoord[3], lightdir, camvec; TEMP rvec, invfresnel; DP3 invfresnel, camvec, onormal; MUL rvec, invfresnel, onormal; MAD rvec, rvec, 2, -camvec; DP3 result.texcoord[4].x, state.matrix.texture.row[0], rvec; DP3 result.texcoord[4].y, state.matrix.texture.row[1], rvec; DP3 result.texcoord[4].z, state.matrix.texture.row[2], rvec; MAX invfresnel, invfresnel, 0; MAD result.texcoord[4].w, program.env[6].x, invfresnel, program.env[6].y; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS envmapmodel: ************** VS bumpmodel: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; ATTRIB onormal = vertex.normal; ATTRIB otangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, otangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP halfangle; ADD halfangle, lightdir, camvec; DP3 result.texcoord[2].x, halfangle, otangent; DP3 result.texcoord[2].y, halfangle, obitangent; DP3 result.texcoord[2].z, halfangle, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmodel: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lightdir = fragment.texcoord[1]; PARAM specfactor = 128; PARAM specintensity = program.env[2]; PARAM ambient = program.env[3]; PARAM glowscale = program.env[4]; TEMP diffuse, light; TEX diffuse, dtc, texture[0], 2D; TEMP normal; TEX normal, dtc, texture[3], 2D; SUB normal, normal, 0.5; DP3 normal.w, normal, normal; RSQ normal.w, normal.w; MUL normal.xyz, normal.w, normal; TEMP camvec; DP3 camvec.w, fragment.texcoord[2], fragment.texcoord[2]; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, fragment.texcoord[2]; TEMP spec, halfangle; DP3 halfangle.w, fragment.texcoord[2], fragment.texcoord[2]; RSQ halfangle.w, halfangle.w; MUL halfangle.xyz, halfangle.w, fragment.texcoord[2]; DP3_SAT spec, halfangle, normal; POW spec, spec.x, specfactor.x; MUL spec, spec, specintensity; DP3_SAT light, normal, lightdir; MUL light.rgb, light, 1.5; MAX light, light, ambient; MAD light, light, diffuse, spec; MUL result.color, light, fragment.color; END ************** VS bumpmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MOV mx, mats[bone.x]; MOV my, mats[bone.x+1]; MOV mz, mats[bone.x+2]; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP halfangle; ADD halfangle, lightdir, camvec; DP3 result.texcoord[2].x, halfangle, otangent; DP3 result.texcoord[2].y, halfangle, obitangent; DP3 result.texcoord[2].z, halfangle, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmodel: ************** VS bumpmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; MOV dqreal, quats[bone.x]; MOV dqdual, quats[bone.x+1]; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP halfangle; ADD halfangle, lightdir, camvec; DP3 result.texcoord[2].x, halfangle, otangent; DP3 result.texcoord[2].y, halfangle, obitangent; DP3 result.texcoord[2].z, halfangle, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmodel: ************** VS bumpmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP halfangle; ADD halfangle, lightdir, camvec; DP3 result.texcoord[2].x, halfangle, otangent; DP3 result.texcoord[2].y, halfangle, obitangent; DP3 result.texcoord[2].z, halfangle, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmodel: ************** VS bumpmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP halfangle; ADD halfangle, lightdir, camvec; DP3 result.texcoord[2].x, halfangle, otangent; DP3 result.texcoord[2].y, halfangle, obitangent; DP3 result.texcoord[2].z, halfangle, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmodel: ************** VS bumpmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP halfangle; ADD halfangle, lightdir, camvec; DP3 result.texcoord[2].x, halfangle, otangent; DP3 result.texcoord[2].y, halfangle, obitangent; DP3 result.texcoord[2].z, halfangle, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmodel: ************** VS bumpmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP halfangle; ADD halfangle, lightdir, camvec; DP3 result.texcoord[2].x, halfangle, otangent; DP3 result.texcoord[2].y, halfangle, obitangent; DP3 result.texcoord[2].z, halfangle, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmodel: ************** VS bumpmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; ARL bone.x, bones.w; MAD mx, weights.w, mats[bone.x], mx; MAD my, weights.w, mats[bone.x+1], my; MAD mz, weights.w, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP halfangle; ADD halfangle, lightdir, camvec; DP3 result.texcoord[2].x, halfangle, otangent; DP3 result.texcoord[2].y, halfangle, obitangent; DP3 result.texcoord[2].z, halfangle, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmodel: ************** VS bumpmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; ARL bone.x, bones.w; DP4C dir.w, dqreal, quats[bone.x]; MOV weights.w (LT), -weights.w; MAD dqreal, weights.w, quats[bone.x], dqreal; MAD dqdual, weights.w, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP halfangle; ADD halfangle, lightdir, camvec; DP3 result.texcoord[2].x, halfangle, otangent; DP3 result.texcoord[2].y, halfangle, obitangent; DP3 result.texcoord[2].z, halfangle, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmodel: ************** VS bumpmasksmodel: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; ATTRIB onormal = vertex.normal; ATTRIB otangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, otangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP halfangle; ADD halfangle, lightdir, camvec; DP3 result.texcoord[2].x, halfangle, otangent; DP3 result.texcoord[2].y, halfangle, obitangent; DP3 result.texcoord[2].z, halfangle, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmasksmodel: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lightdir = fragment.texcoord[1]; PARAM specfactor = 128; PARAM specintensity = program.env[2]; PARAM ambient = program.env[3]; PARAM glowscale = program.env[4]; TEMP diffuse, light; TEX diffuse, dtc, texture[0], 2D; TEMP normal; TEX normal, dtc, texture[3], 2D; SUB normal, normal, 0.5; DP3 normal.w, normal, normal; RSQ normal.w, normal.w; MUL normal.xyz, normal.w, normal; TEMP camvec; DP3 camvec.w, fragment.texcoord[2], fragment.texcoord[2]; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, fragment.texcoord[2]; TEMP spec, halfangle; DP3 halfangle.w, fragment.texcoord[2], fragment.texcoord[2]; RSQ halfangle.w, halfangle.w; MUL halfangle.xyz, halfangle.w, fragment.texcoord[2]; DP3_SAT spec, halfangle, normal; POW spec, spec.x, specfactor.x; MUL spec, spec, specintensity; DP3_SAT light, normal, lightdir; MUL light.rgb, light, 1.5; MAX light, light, ambient; TEMP masks; TEX masks, dtc, texture[1], 2D; MUL spec, spec, masks.r; MAD light, light, diffuse, spec; MUL light, light, fragment.color; TEMP glow; MUL glow, diffuse, glowscale; LRP result.color, masks.g, glow, light; MUL result.color.a, diffuse.a, fragment.color.a; END ************** VS bumpmasksmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MOV mx, mats[bone.x]; MOV my, mats[bone.x+1]; MOV mz, mats[bone.x+2]; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP halfangle; ADD halfangle, lightdir, camvec; DP3 result.texcoord[2].x, halfangle, otangent; DP3 result.texcoord[2].y, halfangle, obitangent; DP3 result.texcoord[2].z, halfangle, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmasksmodel: ************** VS bumpmasksmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; MOV dqreal, quats[bone.x]; MOV dqdual, quats[bone.x+1]; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP halfangle; ADD halfangle, lightdir, camvec; DP3 result.texcoord[2].x, halfangle, otangent; DP3 result.texcoord[2].y, halfangle, obitangent; DP3 result.texcoord[2].z, halfangle, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmasksmodel: ************** VS bumpmasksmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP halfangle; ADD halfangle, lightdir, camvec; DP3 result.texcoord[2].x, halfangle, otangent; DP3 result.texcoord[2].y, halfangle, obitangent; DP3 result.texcoord[2].z, halfangle, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmasksmodel: ************** VS bumpmasksmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP halfangle; ADD halfangle, lightdir, camvec; DP3 result.texcoord[2].x, halfangle, otangent; DP3 result.texcoord[2].y, halfangle, obitangent; DP3 result.texcoord[2].z, halfangle, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmasksmodel: ************** VS bumpmasksmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP halfangle; ADD halfangle, lightdir, camvec; DP3 result.texcoord[2].x, halfangle, otangent; DP3 result.texcoord[2].y, halfangle, obitangent; DP3 result.texcoord[2].z, halfangle, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmasksmodel: ************** VS bumpmasksmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP halfangle; ADD halfangle, lightdir, camvec; DP3 result.texcoord[2].x, halfangle, otangent; DP3 result.texcoord[2].y, halfangle, obitangent; DP3 result.texcoord[2].z, halfangle, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmasksmodel: ************** VS bumpmasksmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; ARL bone.x, bones.w; MAD mx, weights.w, mats[bone.x], mx; MAD my, weights.w, mats[bone.x+1], my; MAD mz, weights.w, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP halfangle; ADD halfangle, lightdir, camvec; DP3 result.texcoord[2].x, halfangle, otangent; DP3 result.texcoord[2].y, halfangle, obitangent; DP3 result.texcoord[2].z, halfangle, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmasksmodel: ************** VS bumpmasksmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; ARL bone.x, bones.w; DP4C dir.w, dqreal, quats[bone.x]; MOV weights.w (LT), -weights.w; MAD dqreal, weights.w, quats[bone.x], dqreal; MAD dqdual, weights.w, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP halfangle; ADD halfangle, lightdir, camvec; DP3 result.texcoord[2].x, halfangle, otangent; DP3 result.texcoord[2].y, halfangle, obitangent; DP3 result.texcoord[2].z, halfangle, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmasksmodel: ************** VS bumpenvmapmodel: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; ATTRIB onormal = vertex.normal; ATTRIB otangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, otangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; DP3 result.texcoord[2].x, camvec, otangent; DP3 result.texcoord[2].y, camvec, obitangent; DP3 result.texcoord[2].z, camvec, onormal; DP3 result.texcoord[3].x, state.matrix.texture.row[0], otangent; DP3 result.texcoord[3].y, state.matrix.texture.row[0], obitangent; DP3 result.texcoord[3].z, state.matrix.texture.row[0], onormal; DP3 result.texcoord[4].x, state.matrix.texture.row[1], otangent; DP3 result.texcoord[4].y, state.matrix.texture.row[1], obitangent; DP3 result.texcoord[4].z, state.matrix.texture.row[1], onormal; DP3 result.texcoord[5].x, state.matrix.texture.row[2], otangent; DP3 result.texcoord[5].y, state.matrix.texture.row[2], obitangent; DP3 result.texcoord[5].z, state.matrix.texture.row[2], onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpenvmapmodel: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lightdir = fragment.texcoord[1]; PARAM specfactor = 128; PARAM specintensity = program.env[2]; PARAM ambient = program.env[3]; PARAM glowscale = program.env[4]; TEMP diffuse, light; TEX diffuse, dtc, texture[0], 2D; TEMP normal; TEX normal, dtc, texture[3], 2D; SUB normal, normal, 0.5; DP3 normal.w, normal, normal; RSQ normal.w, normal.w; MUL normal.xyz, normal.w, normal; TEMP camvec; DP3 camvec.w, fragment.texcoord[2], fragment.texcoord[2]; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, fragment.texcoord[2]; TEMP spec, halfangle; ADD halfangle, lightdir, camvec; DP3 halfangle.w, halfangle, halfangle; RSQ halfangle.w, halfangle.w; MUL halfangle.xyz, halfangle.w, halfangle; DP3_SAT spec, halfangle, normal; POW spec, spec.x, specfactor.x; MUL spec, spec, specintensity; DP3_SAT light, normal, lightdir; MUL light.rgb, light, 1.5; MAX light, light, ambient; TEMP masks; TEX masks, dtc, texture[1], 2D; MUL spec, spec, masks.r; MAD light, light, diffuse, spec; MUL light, light, fragment.color; TEMP glow; MUL glow, diffuse, glowscale; LRP light, masks.g, glow, light; TEMP reflect; TEMP invfresnel, rvects, rvec; DP3 invfresnel, camvec, normal; MUL rvects, invfresnel, normal; MAD rvects, rvects, 2, -camvec; DP3 rvec.x, rvects, fragment.texcoord[3]; DP3 rvec.y, rvects, fragment.texcoord[4]; DP3 rvec.z, rvects, fragment.texcoord[5]; MAX invfresnel, invfresnel, 0; MAD invfresnel, program.env[6].x, invfresnel, program.env[6].y; TEX reflect, rvec, texture[2], CUBE; MUL masks.b, masks.b, invfresnel; LRP result.color, masks.b, reflect, light; MUL result.color.a, diffuse.a, fragment.color.a; END ************** VS bumpenvmapmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MOV mx, mats[bone.x]; MOV my, mats[bone.x+1]; MOV mz, mats[bone.x+2]; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; DP3 result.texcoord[2].x, camvec, otangent; DP3 result.texcoord[2].y, camvec, obitangent; DP3 result.texcoord[2].z, camvec, onormal; DP3 result.texcoord[3].x, state.matrix.texture.row[0], otangent; DP3 result.texcoord[3].y, state.matrix.texture.row[0], obitangent; DP3 result.texcoord[3].z, state.matrix.texture.row[0], onormal; DP3 result.texcoord[4].x, state.matrix.texture.row[1], otangent; DP3 result.texcoord[4].y, state.matrix.texture.row[1], obitangent; DP3 result.texcoord[4].z, state.matrix.texture.row[1], onormal; DP3 result.texcoord[5].x, state.matrix.texture.row[2], otangent; DP3 result.texcoord[5].y, state.matrix.texture.row[2], obitangent; DP3 result.texcoord[5].z, state.matrix.texture.row[2], onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpenvmapmodel: ************** VS bumpenvmapmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; MOV dqreal, quats[bone.x]; MOV dqdual, quats[bone.x+1]; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; DP3 result.texcoord[2].x, camvec, otangent; DP3 result.texcoord[2].y, camvec, obitangent; DP3 result.texcoord[2].z, camvec, onormal; DP3 result.texcoord[3].x, state.matrix.texture.row[0], otangent; DP3 result.texcoord[3].y, state.matrix.texture.row[0], obitangent; DP3 result.texcoord[3].z, state.matrix.texture.row[0], onormal; DP3 result.texcoord[4].x, state.matrix.texture.row[1], otangent; DP3 result.texcoord[4].y, state.matrix.texture.row[1], obitangent; DP3 result.texcoord[4].z, state.matrix.texture.row[1], onormal; DP3 result.texcoord[5].x, state.matrix.texture.row[2], otangent; DP3 result.texcoord[5].y, state.matrix.texture.row[2], obitangent; DP3 result.texcoord[5].z, state.matrix.texture.row[2], onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpenvmapmodel: ************** VS bumpenvmapmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; DP3 result.texcoord[2].x, camvec, otangent; DP3 result.texcoord[2].y, camvec, obitangent; DP3 result.texcoord[2].z, camvec, onormal; DP3 result.texcoord[3].x, state.matrix.texture.row[0], otangent; DP3 result.texcoord[3].y, state.matrix.texture.row[0], obitangent; DP3 result.texcoord[3].z, state.matrix.texture.row[0], onormal; DP3 result.texcoord[4].x, state.matrix.texture.row[1], otangent; DP3 result.texcoord[4].y, state.matrix.texture.row[1], obitangent; DP3 result.texcoord[4].z, state.matrix.texture.row[1], onormal; DP3 result.texcoord[5].x, state.matrix.texture.row[2], otangent; DP3 result.texcoord[5].y, state.matrix.texture.row[2], obitangent; DP3 result.texcoord[5].z, state.matrix.texture.row[2], onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpenvmapmodel: ************** VS bumpenvmapmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; DP3 result.texcoord[2].x, camvec, otangent; DP3 result.texcoord[2].y, camvec, obitangent; DP3 result.texcoord[2].z, camvec, onormal; DP3 result.texcoord[3].x, state.matrix.texture.row[0], otangent; DP3 result.texcoord[3].y, state.matrix.texture.row[0], obitangent; DP3 result.texcoord[3].z, state.matrix.texture.row[0], onormal; DP3 result.texcoord[4].x, state.matrix.texture.row[1], otangent; DP3 result.texcoord[4].y, state.matrix.texture.row[1], obitangent; DP3 result.texcoord[4].z, state.matrix.texture.row[1], onormal; DP3 result.texcoord[5].x, state.matrix.texture.row[2], otangent; DP3 result.texcoord[5].y, state.matrix.texture.row[2], obitangent; DP3 result.texcoord[5].z, state.matrix.texture.row[2], onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpenvmapmodel: ************** VS bumpenvmapmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; DP3 result.texcoord[2].x, camvec, otangent; DP3 result.texcoord[2].y, camvec, obitangent; DP3 result.texcoord[2].z, camvec, onormal; DP3 result.texcoord[3].x, state.matrix.texture.row[0], otangent; DP3 result.texcoord[3].y, state.matrix.texture.row[0], obitangent; DP3 result.texcoord[3].z, state.matrix.texture.row[0], onormal; DP3 result.texcoord[4].x, state.matrix.texture.row[1], otangent; DP3 result.texcoord[4].y, state.matrix.texture.row[1], obitangent; DP3 result.texcoord[4].z, state.matrix.texture.row[1], onormal; DP3 result.texcoord[5].x, state.matrix.texture.row[2], otangent; DP3 result.texcoord[5].y, state.matrix.texture.row[2], obitangent; DP3 result.texcoord[5].z, state.matrix.texture.row[2], onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpenvmapmodel: ************** VS bumpenvmapmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; DP3 result.texcoord[2].x, camvec, otangent; DP3 result.texcoord[2].y, camvec, obitangent; DP3 result.texcoord[2].z, camvec, onormal; DP3 result.texcoord[3].x, state.matrix.texture.row[0], otangent; DP3 result.texcoord[3].y, state.matrix.texture.row[0], obitangent; DP3 result.texcoord[3].z, state.matrix.texture.row[0], onormal; DP3 result.texcoord[4].x, state.matrix.texture.row[1], otangent; DP3 result.texcoord[4].y, state.matrix.texture.row[1], obitangent; DP3 result.texcoord[4].z, state.matrix.texture.row[1], onormal; DP3 result.texcoord[5].x, state.matrix.texture.row[2], otangent; DP3 result.texcoord[5].y, state.matrix.texture.row[2], obitangent; DP3 result.texcoord[5].z, state.matrix.texture.row[2], onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpenvmapmodel: ************** VS bumpenvmapmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; ARL bone.x, bones.w; MAD mx, weights.w, mats[bone.x], mx; MAD my, weights.w, mats[bone.x+1], my; MAD mz, weights.w, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; DP3 result.texcoord[2].x, camvec, otangent; DP3 result.texcoord[2].y, camvec, obitangent; DP3 result.texcoord[2].z, camvec, onormal; DP3 result.texcoord[3].x, state.matrix.texture.row[0], otangent; DP3 result.texcoord[3].y, state.matrix.texture.row[0], obitangent; DP3 result.texcoord[3].z, state.matrix.texture.row[0], onormal; DP3 result.texcoord[4].x, state.matrix.texture.row[1], otangent; DP3 result.texcoord[4].y, state.matrix.texture.row[1], obitangent; DP3 result.texcoord[4].z, state.matrix.texture.row[1], onormal; DP3 result.texcoord[5].x, state.matrix.texture.row[2], otangent; DP3 result.texcoord[5].y, state.matrix.texture.row[2], obitangent; DP3 result.texcoord[5].z, state.matrix.texture.row[2], onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpenvmapmodel: ************** VS bumpenvmapmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; ARL bone.x, bones.w; DP4C dir.w, dqreal, quats[bone.x]; MOV weights.w (LT), -weights.w; MAD dqreal, weights.w, quats[bone.x], dqreal; MAD dqdual, weights.w, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; DP3 result.texcoord[2].x, camvec, otangent; DP3 result.texcoord[2].y, camvec, obitangent; DP3 result.texcoord[2].z, camvec, onormal; DP3 result.texcoord[3].x, state.matrix.texture.row[0], otangent; DP3 result.texcoord[3].y, state.matrix.texture.row[0], obitangent; DP3 result.texcoord[3].z, state.matrix.texture.row[0], onormal; DP3 result.texcoord[4].x, state.matrix.texture.row[1], otangent; DP3 result.texcoord[4].y, state.matrix.texture.row[1], obitangent; DP3 result.texcoord[4].z, state.matrix.texture.row[1], onormal; DP3 result.texcoord[5].x, state.matrix.texture.row[2], otangent; DP3 result.texcoord[5].y, state.matrix.texture.row[2], obitangent; DP3 result.texcoord[5].z, state.matrix.texture.row[2], onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpenvmapmodel: ************** VS nospecmodel: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; ATTRIB onormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS nospecmodel: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB color = fragment.texcoord[1]; PARAM ambient = program.env[3]; PARAM glowscale = program.env[4]; TEMP diffuse, light; TEX diffuse, dtc, texture[0], 2D; MUL result.color, color, diffuse; END ************** VS nospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MOV mx, mats[bone.x]; MOV my, mats[bone.x+1]; MOV mz, mats[bone.x+2]; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS nospecmodel: ************** VS nospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; MOV dqreal, quats[bone.x]; MOV dqdual, quats[bone.x+1]; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS nospecmodel: ************** VS nospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS nospecmodel: ************** VS nospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS nospecmodel: ************** VS nospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS nospecmodel: ************** VS nospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS nospecmodel: ************** VS nospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; ARL bone.x, bones.w; MAD mx, weights.w, mats[bone.x], mx; MAD my, weights.w, mats[bone.x+1], my; MAD mz, weights.w, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS nospecmodel: ************** VS nospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; ARL bone.x, bones.w; DP4C dir.w, dqreal, quats[bone.x]; MOV weights.w (LT), -weights.w; MAD dqreal, weights.w, quats[bone.x], dqreal; MAD dqdual, weights.w, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS nospecmodel: ************** VS masksnospecmodel: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; ATTRIB onormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS masksnospecmodel: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB color = fragment.texcoord[1]; PARAM ambient = program.env[3]; PARAM glowscale = program.env[4]; TEMP diffuse, light; TEX diffuse, dtc, texture[0], 2D; TEMP masks; TEX masks, dtc, texture[1], 2D; MUL light, color, diffuse; TEMP glow; MUL glow, diffuse, glowscale; LRP result.color, masks.g, glow, light; MUL result.color.a, diffuse.a, fragment.color.a; END ************** VS masksnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MOV mx, mats[bone.x]; MOV my, mats[bone.x+1]; MOV mz, mats[bone.x+2]; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS masksnospecmodel: ************** VS masksnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; MOV dqreal, quats[bone.x]; MOV dqdual, quats[bone.x+1]; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS masksnospecmodel: ************** VS masksnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS masksnospecmodel: ************** VS masksnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS masksnospecmodel: ************** VS masksnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS masksnospecmodel: ************** VS masksnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS masksnospecmodel: ************** VS masksnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; ARL bone.x, bones.w; MAD mx, weights.w, mats[bone.x], mx; MAD my, weights.w, mats[bone.x+1], my; MAD mz, weights.w, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS masksnospecmodel: ************** VS masksnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; ARL bone.x, bones.w; DP4C dir.w, dqreal, quats[bone.x]; MOV weights.w (LT), -weights.w; MAD dqreal, weights.w, quats[bone.x], dqreal; MAD dqdual, weights.w, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS masksnospecmodel: ************** VS envmapnospecmodel: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; ATTRIB onormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP rvec, invfresnel; DP3 invfresnel, camvec, onormal; MUL rvec, invfresnel, onormal; MAD rvec, rvec, 2, -camvec; DP3 result.texcoord[4].x, state.matrix.texture.row[0], rvec; DP3 result.texcoord[4].y, state.matrix.texture.row[1], rvec; DP3 result.texcoord[4].z, state.matrix.texture.row[2], rvec; MAX invfresnel, invfresnel, 0; MAD result.texcoord[4].w, program.env[6].x, invfresnel, program.env[6].y; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS envmapnospecmodel: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB color = fragment.texcoord[1]; PARAM ambient = program.env[3]; PARAM glowscale = program.env[4]; TEMP diffuse, light; TEX diffuse, dtc, texture[0], 2D; TEMP masks; TEX masks, dtc, texture[1], 2D; MUL light, color, diffuse; TEMP glow; MUL glow, diffuse, glowscale; LRP light, masks.g, glow, light; TEMP reflect; TEX reflect, fragment.texcoord[4], texture[2], CUBE; MUL masks.b, masks.b, fragment.texcoord[4].w; LRP result.color, masks.b, reflect, light; MUL result.color.a, diffuse.a, fragment.color.a; END ************** VS envmapnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MOV mx, mats[bone.x]; MOV my, mats[bone.x+1]; MOV mz, mats[bone.x+2]; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP rvec, invfresnel; DP3 invfresnel, camvec, onormal; MUL rvec, invfresnel, onormal; MAD rvec, rvec, 2, -camvec; DP3 result.texcoord[4].x, state.matrix.texture.row[0], rvec; DP3 result.texcoord[4].y, state.matrix.texture.row[1], rvec; DP3 result.texcoord[4].z, state.matrix.texture.row[2], rvec; MAX invfresnel, invfresnel, 0; MAD result.texcoord[4].w, program.env[6].x, invfresnel, program.env[6].y; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS envmapnospecmodel: ************** VS envmapnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; MOV dqreal, quats[bone.x]; MOV dqdual, quats[bone.x+1]; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP rvec, invfresnel; DP3 invfresnel, camvec, onormal; MUL rvec, invfresnel, onormal; MAD rvec, rvec, 2, -camvec; DP3 result.texcoord[4].x, state.matrix.texture.row[0], rvec; DP3 result.texcoord[4].y, state.matrix.texture.row[1], rvec; DP3 result.texcoord[4].z, state.matrix.texture.row[2], rvec; MAX invfresnel, invfresnel, 0; MAD result.texcoord[4].w, program.env[6].x, invfresnel, program.env[6].y; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS envmapnospecmodel: ************** VS envmapnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP rvec, invfresnel; DP3 invfresnel, camvec, onormal; MUL rvec, invfresnel, onormal; MAD rvec, rvec, 2, -camvec; DP3 result.texcoord[4].x, state.matrix.texture.row[0], rvec; DP3 result.texcoord[4].y, state.matrix.texture.row[1], rvec; DP3 result.texcoord[4].z, state.matrix.texture.row[2], rvec; MAX invfresnel, invfresnel, 0; MAD result.texcoord[4].w, program.env[6].x, invfresnel, program.env[6].y; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS envmapnospecmodel: ************** VS envmapnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP rvec, invfresnel; DP3 invfresnel, camvec, onormal; MUL rvec, invfresnel, onormal; MAD rvec, rvec, 2, -camvec; DP3 result.texcoord[4].x, state.matrix.texture.row[0], rvec; DP3 result.texcoord[4].y, state.matrix.texture.row[1], rvec; DP3 result.texcoord[4].z, state.matrix.texture.row[2], rvec; MAX invfresnel, invfresnel, 0; MAD result.texcoord[4].w, program.env[6].x, invfresnel, program.env[6].y; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS envmapnospecmodel: ************** VS envmapnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP rvec, invfresnel; DP3 invfresnel, camvec, onormal; MUL rvec, invfresnel, onormal; MAD rvec, rvec, 2, -camvec; DP3 result.texcoord[4].x, state.matrix.texture.row[0], rvec; DP3 result.texcoord[4].y, state.matrix.texture.row[1], rvec; DP3 result.texcoord[4].z, state.matrix.texture.row[2], rvec; MAX invfresnel, invfresnel, 0; MAD result.texcoord[4].w, program.env[6].x, invfresnel, program.env[6].y; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS envmapnospecmodel: ************** VS envmapnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP rvec, invfresnel; DP3 invfresnel, camvec, onormal; MUL rvec, invfresnel, onormal; MAD rvec, rvec, 2, -camvec; DP3 result.texcoord[4].x, state.matrix.texture.row[0], rvec; DP3 result.texcoord[4].y, state.matrix.texture.row[1], rvec; DP3 result.texcoord[4].z, state.matrix.texture.row[2], rvec; MAX invfresnel, invfresnel, 0; MAD result.texcoord[4].w, program.env[6].x, invfresnel, program.env[6].y; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS envmapnospecmodel: ************** VS envmapnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; ARL bone.x, bones.w; MAD mx, weights.w, mats[bone.x], mx; MAD my, weights.w, mats[bone.x+1], my; MAD mz, weights.w, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP rvec, invfresnel; DP3 invfresnel, camvec, onormal; MUL rvec, invfresnel, onormal; MAD rvec, rvec, 2, -camvec; DP3 result.texcoord[4].x, state.matrix.texture.row[0], rvec; DP3 result.texcoord[4].y, state.matrix.texture.row[1], rvec; DP3 result.texcoord[4].z, state.matrix.texture.row[2], rvec; MAX invfresnel, invfresnel, 0; MAD result.texcoord[4].w, program.env[6].x, invfresnel, program.env[6].y; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS envmapnospecmodel: ************** VS envmapnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; ARL bone.x, bones.w; DP4C dir.w, dqreal, quats[bone.x]; MOV weights.w (LT), -weights.w; MAD dqreal, weights.w, quats[bone.x], dqreal; MAD dqdual, weights.w, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP light; DP3 light, onormal, lightdir; MUL light, light, 1.5; MAX light, light, ambient; MUL result.texcoord[1], light, vertex.color; TEMP rvec, invfresnel; DP3 invfresnel, camvec, onormal; MUL rvec, invfresnel, onormal; MAD rvec, rvec, 2, -camvec; DP3 result.texcoord[4].x, state.matrix.texture.row[0], rvec; DP3 result.texcoord[4].y, state.matrix.texture.row[1], rvec; DP3 result.texcoord[4].z, state.matrix.texture.row[2], rvec; MAX invfresnel, invfresnel, 0; MAD result.texcoord[4].w, program.env[6].x, invfresnel, program.env[6].y; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS envmapnospecmodel: ************** VS bumpnospecmodel: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; ATTRIB onormal = vertex.normal; ATTRIB otangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, otangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpnospecmodel: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lightdir = fragment.texcoord[1]; PARAM ambient = program.env[3]; PARAM glowscale = program.env[4]; TEMP diffuse, light; TEX diffuse, dtc, texture[0], 2D; TEMP normal; TEX normal, dtc, texture[3], 2D; SUB normal, normal, 0.5; DP3 normal.w, normal, normal; RSQ normal.w, normal.w; MUL normal.xyz, normal.w, normal; DP3_SAT light, normal, lightdir; MUL light.rgb, light, 1.5; MAX light, light, ambient; MUL light, light, diffuse; MUL result.color, light, fragment.color; END ************** VS bumpnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MOV mx, mats[bone.x]; MOV my, mats[bone.x+1]; MOV mz, mats[bone.x+2]; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpnospecmodel: ************** VS bumpnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; MOV dqreal, quats[bone.x]; MOV dqdual, quats[bone.x+1]; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpnospecmodel: ************** VS bumpnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpnospecmodel: ************** VS bumpnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpnospecmodel: ************** VS bumpnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpnospecmodel: ************** VS bumpnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpnospecmodel: ************** VS bumpnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; ARL bone.x, bones.w; MAD mx, weights.w, mats[bone.x], mx; MAD my, weights.w, mats[bone.x+1], my; MAD mz, weights.w, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpnospecmodel: ************** VS bumpnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; ARL bone.x, bones.w; DP4C dir.w, dqreal, quats[bone.x]; MOV weights.w (LT), -weights.w; MAD dqreal, weights.w, quats[bone.x], dqreal; MAD dqdual, weights.w, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpnospecmodel: ************** VS bumpmasksnospecmodel: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; ATTRIB onormal = vertex.normal; ATTRIB otangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, otangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmasksnospecmodel: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lightdir = fragment.texcoord[1]; PARAM ambient = program.env[3]; PARAM glowscale = program.env[4]; TEMP diffuse, light; TEX diffuse, dtc, texture[0], 2D; TEMP normal; TEX normal, dtc, texture[3], 2D; SUB normal, normal, 0.5; DP3 normal.w, normal, normal; RSQ normal.w, normal.w; MUL normal.xyz, normal.w, normal; DP3_SAT light, normal, lightdir; MUL light.rgb, light, 1.5; MAX light, light, ambient; TEMP masks; TEX masks, dtc, texture[1], 2D; MUL light, light, diffuse; MUL light, light, fragment.color; TEMP glow; MUL glow, diffuse, glowscale; LRP result.color, masks.g, glow, light; MUL result.color.a, diffuse.a, fragment.color.a; END ************** VS bumpmasksnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MOV mx, mats[bone.x]; MOV my, mats[bone.x+1]; MOV mz, mats[bone.x+2]; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmasksnospecmodel: ************** VS bumpmasksnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; MOV dqreal, quats[bone.x]; MOV dqdual, quats[bone.x+1]; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmasksnospecmodel: ************** VS bumpmasksnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmasksnospecmodel: ************** VS bumpmasksnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmasksnospecmodel: ************** VS bumpmasksnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmasksnospecmodel: ************** VS bumpmasksnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmasksnospecmodel: ************** VS bumpmasksnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; ARL bone.x, bones.w; MAD mx, weights.w, mats[bone.x], mx; MAD my, weights.w, mats[bone.x+1], my; MAD mz, weights.w, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmasksnospecmodel: ************** VS bumpmasksnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; ARL bone.x, bones.w; DP4C dir.w, dqreal, quats[bone.x]; MOV weights.w (LT), -weights.w; MAD dqreal, weights.w, quats[bone.x], dqreal; MAD dqdual, weights.w, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpmasksnospecmodel: ************** VS bumpenvmapnospecmodel: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; ATTRIB onormal = vertex.normal; ATTRIB otangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, otangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; DP3 result.texcoord[2].x, camvec, otangent; DP3 result.texcoord[2].y, camvec, obitangent; DP3 result.texcoord[2].z, camvec, onormal; DP3 result.texcoord[3].x, state.matrix.texture.row[0], otangent; DP3 result.texcoord[3].y, state.matrix.texture.row[0], obitangent; DP3 result.texcoord[3].z, state.matrix.texture.row[0], onormal; DP3 result.texcoord[4].x, state.matrix.texture.row[1], otangent; DP3 result.texcoord[4].y, state.matrix.texture.row[1], obitangent; DP3 result.texcoord[4].z, state.matrix.texture.row[1], onormal; DP3 result.texcoord[5].x, state.matrix.texture.row[2], otangent; DP3 result.texcoord[5].y, state.matrix.texture.row[2], obitangent; DP3 result.texcoord[5].z, state.matrix.texture.row[2], onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpenvmapnospecmodel: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; ATTRIB dtc = fragment.texcoord[0]; ATTRIB lightdir = fragment.texcoord[1]; PARAM ambient = program.env[3]; PARAM glowscale = program.env[4]; TEMP diffuse, light; TEX diffuse, dtc, texture[0], 2D; TEMP normal; TEX normal, dtc, texture[3], 2D; SUB normal, normal, 0.5; DP3 normal.w, normal, normal; RSQ normal.w, normal.w; MUL normal.xyz, normal.w, normal; TEMP camvec; DP3 camvec.w, fragment.texcoord[2], fragment.texcoord[2]; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, fragment.texcoord[2]; DP3_SAT light, normal, lightdir; MUL light.rgb, light, 1.5; MAX light, light, ambient; TEMP masks; TEX masks, dtc, texture[1], 2D; MUL light, light, diffuse; MUL light, light, fragment.color; TEMP glow; MUL glow, diffuse, glowscale; LRP light, masks.g, glow, light; TEMP reflect; TEMP invfresnel, rvects, rvec; DP3 invfresnel, camvec, normal; MUL rvects, invfresnel, normal; MAD rvects, rvects, 2, -camvec; DP3 rvec.x, rvects, fragment.texcoord[3]; DP3 rvec.y, rvects, fragment.texcoord[4]; DP3 rvec.z, rvects, fragment.texcoord[5]; MAX invfresnel, invfresnel, 0; MAD invfresnel, program.env[6].x, invfresnel, program.env[6].y; TEX reflect, rvec, texture[2], CUBE; MUL masks.b, masks.b, invfresnel; LRP result.color, masks.b, reflect, light; MUL result.color.a, diffuse.a, fragment.color.a; END ************** VS bumpenvmapnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MOV mx, mats[bone.x]; MOV my, mats[bone.x+1]; MOV mz, mats[bone.x+2]; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; DP3 result.texcoord[2].x, camvec, otangent; DP3 result.texcoord[2].y, camvec, obitangent; DP3 result.texcoord[2].z, camvec, onormal; DP3 result.texcoord[3].x, state.matrix.texture.row[0], otangent; DP3 result.texcoord[3].y, state.matrix.texture.row[0], obitangent; DP3 result.texcoord[3].z, state.matrix.texture.row[0], onormal; DP3 result.texcoord[4].x, state.matrix.texture.row[1], otangent; DP3 result.texcoord[4].y, state.matrix.texture.row[1], obitangent; DP3 result.texcoord[4].z, state.matrix.texture.row[1], onormal; DP3 result.texcoord[5].x, state.matrix.texture.row[2], otangent; DP3 result.texcoord[5].y, state.matrix.texture.row[2], obitangent; DP3 result.texcoord[5].z, state.matrix.texture.row[2], onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpenvmapnospecmodel: ************** VS bumpenvmapnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; MOV dqreal, quats[bone.x]; MOV dqdual, quats[bone.x+1]; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; DP3 result.texcoord[2].x, camvec, otangent; DP3 result.texcoord[2].y, camvec, obitangent; DP3 result.texcoord[2].z, camvec, onormal; DP3 result.texcoord[3].x, state.matrix.texture.row[0], otangent; DP3 result.texcoord[3].y, state.matrix.texture.row[0], obitangent; DP3 result.texcoord[3].z, state.matrix.texture.row[0], onormal; DP3 result.texcoord[4].x, state.matrix.texture.row[1], otangent; DP3 result.texcoord[4].y, state.matrix.texture.row[1], obitangent; DP3 result.texcoord[4].z, state.matrix.texture.row[1], onormal; DP3 result.texcoord[5].x, state.matrix.texture.row[2], otangent; DP3 result.texcoord[5].y, state.matrix.texture.row[2], obitangent; DP3 result.texcoord[5].z, state.matrix.texture.row[2], onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpenvmapnospecmodel: ************** VS bumpenvmapnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; DP3 result.texcoord[2].x, camvec, otangent; DP3 result.texcoord[2].y, camvec, obitangent; DP3 result.texcoord[2].z, camvec, onormal; DP3 result.texcoord[3].x, state.matrix.texture.row[0], otangent; DP3 result.texcoord[3].y, state.matrix.texture.row[0], obitangent; DP3 result.texcoord[3].z, state.matrix.texture.row[0], onormal; DP3 result.texcoord[4].x, state.matrix.texture.row[1], otangent; DP3 result.texcoord[4].y, state.matrix.texture.row[1], obitangent; DP3 result.texcoord[4].z, state.matrix.texture.row[1], onormal; DP3 result.texcoord[5].x, state.matrix.texture.row[2], otangent; DP3 result.texcoord[5].y, state.matrix.texture.row[2], obitangent; DP3 result.texcoord[5].z, state.matrix.texture.row[2], onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpenvmapnospecmodel: ************** VS bumpenvmapnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; DP3 result.texcoord[2].x, camvec, otangent; DP3 result.texcoord[2].y, camvec, obitangent; DP3 result.texcoord[2].z, camvec, onormal; DP3 result.texcoord[3].x, state.matrix.texture.row[0], otangent; DP3 result.texcoord[3].y, state.matrix.texture.row[0], obitangent; DP3 result.texcoord[3].z, state.matrix.texture.row[0], onormal; DP3 result.texcoord[4].x, state.matrix.texture.row[1], otangent; DP3 result.texcoord[4].y, state.matrix.texture.row[1], obitangent; DP3 result.texcoord[4].z, state.matrix.texture.row[1], onormal; DP3 result.texcoord[5].x, state.matrix.texture.row[2], otangent; DP3 result.texcoord[5].y, state.matrix.texture.row[2], obitangent; DP3 result.texcoord[5].z, state.matrix.texture.row[2], onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpenvmapnospecmodel: ************** VS bumpenvmapnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; DP3 result.texcoord[2].x, camvec, otangent; DP3 result.texcoord[2].y, camvec, obitangent; DP3 result.texcoord[2].z, camvec, onormal; DP3 result.texcoord[3].x, state.matrix.texture.row[0], otangent; DP3 result.texcoord[3].y, state.matrix.texture.row[0], obitangent; DP3 result.texcoord[3].z, state.matrix.texture.row[0], onormal; DP3 result.texcoord[4].x, state.matrix.texture.row[1], otangent; DP3 result.texcoord[4].y, state.matrix.texture.row[1], obitangent; DP3 result.texcoord[4].z, state.matrix.texture.row[1], onormal; DP3 result.texcoord[5].x, state.matrix.texture.row[2], otangent; DP3 result.texcoord[5].y, state.matrix.texture.row[2], obitangent; DP3 result.texcoord[5].z, state.matrix.texture.row[2], onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpenvmapnospecmodel: ************** VS bumpenvmapnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; DP3 result.texcoord[2].x, camvec, otangent; DP3 result.texcoord[2].y, camvec, obitangent; DP3 result.texcoord[2].z, camvec, onormal; DP3 result.texcoord[3].x, state.matrix.texture.row[0], otangent; DP3 result.texcoord[3].y, state.matrix.texture.row[0], obitangent; DP3 result.texcoord[3].z, state.matrix.texture.row[0], onormal; DP3 result.texcoord[4].x, state.matrix.texture.row[1], otangent; DP3 result.texcoord[4].y, state.matrix.texture.row[1], obitangent; DP3 result.texcoord[4].z, state.matrix.texture.row[1], onormal; DP3 result.texcoord[5].x, state.matrix.texture.row[2], otangent; DP3 result.texcoord[5].y, state.matrix.texture.row[2], obitangent; DP3 result.texcoord[5].z, state.matrix.texture.row[2], onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpenvmapnospecmodel: ************** VS bumpenvmapnospecmodel: !!ARBvp1.0 ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM mats[] = { program.env[ 10 .. 245 ] }; ATTRIB weights = vertex.attrib[6]; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP mx, my, mz; ARL bone.x, bones.x; MUL mx, weights.x, mats[bone.x]; MUL my, weights.x, mats[bone.x+1]; MUL mz, weights.x, mats[bone.x+2]; ARL bone.x, bones.y; MAD mx, weights.y, mats[bone.x], mx; MAD my, weights.y, mats[bone.x+1], my; MAD mz, weights.y, mats[bone.x+2], mz; ARL bone.x, bones.z; MAD mx, weights.z, mats[bone.x], mx; MAD my, weights.z, mats[bone.x+1], my; MAD mz, weights.z, mats[bone.x+2], mz; ARL bone.x, bones.w; MAD mx, weights.w, mats[bone.x], mx; MAD my, weights.w, mats[bone.x+1], my; MAD mz, weights.w, mats[bone.x+2], mz; TEMP opos; DP4 opos.x, mx, spos; DP4 opos.y, my, spos; DP4 opos.z, mz, spos; MOV opos.w, 1; TEMP onormal; DP3 onormal.x, mx, snormal; DP3 onormal.y, my, snormal; DP3 onormal.z, mz, snormal; TEMP otangent; DP3 otangent.x, mx, stangent; DP3 otangent.y, my, stangent; DP3 otangent.z, mz, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; DP3 result.texcoord[2].x, camvec, otangent; DP3 result.texcoord[2].y, camvec, obitangent; DP3 result.texcoord[2].z, camvec, onormal; DP3 result.texcoord[3].x, state.matrix.texture.row[0], otangent; DP3 result.texcoord[3].y, state.matrix.texture.row[0], obitangent; DP3 result.texcoord[3].z, state.matrix.texture.row[0], onormal; DP3 result.texcoord[4].x, state.matrix.texture.row[1], otangent; DP3 result.texcoord[4].y, state.matrix.texture.row[1], obitangent; DP3 result.texcoord[4].z, state.matrix.texture.row[1], onormal; DP3 result.texcoord[5].x, state.matrix.texture.row[2], otangent; DP3 result.texcoord[5].y, state.matrix.texture.row[2], obitangent; DP3 result.texcoord[5].z, state.matrix.texture.row[2], onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpenvmapnospecmodel: ************** VS bumpenvmapnospecmodel: !!ARBvp1.0 OPTION NV_vertex_program2; ATTRIB spos = vertex.position; ATTRIB snormal = vertex.normal; ATTRIB stangent = vertex.attrib[1]; PARAM ocampos = program.env[1]; PARAM lightdir = program.env[0]; PARAM ambient = program.env[3]; PARAM quats[] = { program.env[ 10 .. 245 ] }; ATTRIB bones = vertex.attrib[7]; ADDRESS bone; TEMP dqreal, dqdual, dir; ARL bone.x, bones.x; TEMP weights; MOV weights, vertex.attrib[6]; MUL dqreal, weights.x, quats[bone.x]; MUL dqdual, weights.x, quats[bone.x+1]; ARL bone.x, bones.y; DP4C dir.y, dqreal, quats[bone.x]; MOV weights.y (LT), -weights.y; MAD dqreal, weights.y, quats[bone.x], dqreal; MAD dqdual, weights.y, quats[bone.x+1], dqdual; ARL bone.x, bones.z; DP4C dir.z, dqreal, quats[bone.x]; MOV weights.z (LT), -weights.z; MAD dqreal, weights.z, quats[bone.x], dqreal; MAD dqdual, weights.z, quats[bone.x+1], dqdual; ARL bone.x, bones.w; DP4C dir.w, dqreal, quats[bone.x]; MOV weights.w (LT), -weights.w; MAD dqreal, weights.w, quats[bone.x], dqreal; MAD dqdual, weights.w, quats[bone.x+1], dqdual; TEMP len; DP4 len.x, dqreal, dqreal; RSQ len.x, len.x; MUL dqreal, dqreal, len.x; MUL dqdual, dqdual, len.x; TEMP opos, trans; XPD opos.xyz, dqreal, spos; MAD opos.xyz, spos, dqreal.w, opos; XPD opos.xyz, dqreal, opos; XPD trans.xyz, dqreal, dqdual; MAD trans.xyz, dqdual, dqreal.w, trans; MAD trans.xyz, dqreal, -dqdual.w, trans; ADD opos.xyz, opos, trans; MAD opos, { 2, 2, 2, 0 }, opos, spos; TEMP onormal; XPD onormal.xyz, dqreal, snormal; MAD onormal.xyz, dqreal.w, snormal, onormal; XPD onormal.xyz, dqreal, onormal; MAD onormal.xyz, 2, onormal, snormal; TEMP otangent; XPD otangent.xyz, dqreal, stangent; MAD otangent.xyz, dqreal.w, stangent, otangent; XPD otangent.xyz, dqreal, otangent; MAD otangent.xyz, 2, otangent, stangent; DP4 result.position.x, opos, state.matrix.mvp.row[0]; DP4 result.position.y, opos, state.matrix.mvp.row[1]; DP4 result.position.z, opos, state.matrix.mvp.row[2]; DP4 result.position.w, opos, state.matrix.mvp.row[3]; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP camvec; SUB camvec, ocampos, opos; DP3 camvec.w, camvec, camvec; RSQ camvec.w, camvec.w; MUL camvec.xyz, camvec.w, camvec; TEMP obitangent; XPD obitangent, onormal, otangent; DP3 obitangent.w, obitangent, obitangent; RSQ obitangent.w, obitangent.w; MUL obitangent.xyz, obitangent.w, obitangent; MUL obitangent, obitangent, stangent.w; DP3 result.texcoord[1].x, lightdir, otangent; DP3 result.texcoord[1].y, lightdir, obitangent; DP3 result.texcoord[1].z, lightdir, onormal; DP3 result.texcoord[2].x, camvec, otangent; DP3 result.texcoord[2].y, camvec, obitangent; DP3 result.texcoord[2].z, camvec, onormal; DP3 result.texcoord[3].x, state.matrix.texture.row[0], otangent; DP3 result.texcoord[3].y, state.matrix.texture.row[0], obitangent; DP3 result.texcoord[3].z, state.matrix.texture.row[0], onormal; DP3 result.texcoord[4].x, state.matrix.texture.row[1], otangent; DP3 result.texcoord[4].y, state.matrix.texture.row[1], obitangent; DP3 result.texcoord[4].z, state.matrix.texture.row[1], onormal; DP3 result.texcoord[5].x, state.matrix.texture.row[2], otangent; DP3 result.texcoord[5].y, state.matrix.texture.row[2], obitangent; DP3 result.texcoord[5].z, state.matrix.texture.row[2], onormal; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS bumpenvmapnospecmodel: ************** VS invert: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; END PS invert: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; SUB result.color, 1, sample; END ************** VS gbr: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; END PS gbr: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; MOV result.color, sample.yzxw; END ************** VS bw: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; END PS bw: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; DP3 result.color, sample, 0.333; END ************** VS sobel: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; ADD result.texcoord[1], vertex.texcoord[0], { -1.5, -1.5, 0, 0 }; ADD result.texcoord[2], vertex.texcoord[0], { 1.5, -1.5, 0, 0 }; ADD result.texcoord[3], vertex.texcoord[0], { -1.5, 1.5, 0, 0 }; ADD result.texcoord[4], vertex.texcoord[0], { 1.5, 1.5, 0, 0 }; END PS sobel: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP s00, s02, s20, s22; TEX s00, fragment.texcoord[1], texture[0], RECT; TEX s02, fragment.texcoord[2], texture[0], RECT; TEX s20, fragment.texcoord[3], texture[0], RECT; TEX s22, fragment.texcoord[4], texture[0], RECT; TEMP t, u; ADD t, s00, s20; SUB t, t, s02; SUB t, t, s22; MUL t, t, t; ADD u, s00, s02; SUB u, u, s20; SUB u, u, s22; MUL u, u, u; ADD t, t, u; ADD result.color, sample, t; END ************** VS bloom1_scale: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; ADD result.texcoord[1], vertex.texcoord[0], { -1.5, -1.5, 0, 0 }; ADD result.texcoord[2], vertex.texcoord[0], { 1.5, -1.5, 0, 0 }; ADD result.texcoord[3], vertex.texcoord[0], { -1.5, 1.5, 0, 0 }; ADD result.texcoord[4], vertex.texcoord[0], { 1.5, 1.5, 0, 0 }; END PS bloom1_scale: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP s00, s02, s20, s22; TEX s00, fragment.texcoord[1], texture[0], RECT; TEX s02, fragment.texcoord[2], texture[0], RECT; TEX s20, fragment.texcoord[3], texture[0], RECT; TEX s22, fragment.texcoord[4], texture[0], RECT; TEMP t; ADD t, s02, s00; ADD t, t, s22; ADD t, t, s20; ADD t, t, sample; MUL result.color, t, 0.2; END ************** VS bloom1_init: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; END PS bloom1_init: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP t; MAX t, sample.r, sample.g; MAX t, t, sample.b; MUL t, t, t; MUL result.color, t, sample; END ************** VS bloom1: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; TEMP tc; MOV tc, vertex.texcoord[0]; END PS bloom1: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP scaled, bloom; MAD result.color, bloom, program.env[0].x, sample; END ************** VS bloom2_scale: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; ADD result.texcoord[1], vertex.texcoord[0], { -1.5, -1.5, 0, 0 }; ADD result.texcoord[2], vertex.texcoord[0], { 1.5, -1.5, 0, 0 }; ADD result.texcoord[3], vertex.texcoord[0], { -1.5, 1.5, 0, 0 }; ADD result.texcoord[4], vertex.texcoord[0], { 1.5, 1.5, 0, 0 }; END PS bloom2_scale: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP s00, s02, s20, s22; TEX s00, fragment.texcoord[1], texture[0], RECT; TEX s02, fragment.texcoord[2], texture[0], RECT; TEX s20, fragment.texcoord[3], texture[0], RECT; TEX s22, fragment.texcoord[4], texture[0], RECT; TEMP t; ADD t, s02, s00; ADD t, t, s22; ADD t, t, s20; ADD t, t, sample; MUL result.color, t, 0.2; END ************** VS bloom2_init: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; END PS bloom2_init: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP t; MAX t, sample.r, sample.g; MAX t, t, sample.b; MUL t, t, t; MUL result.color, t, sample; END ************** VS bloom2: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; TEMP tc; MOV tc, vertex.texcoord[0]; MUL tc, tc, 0.5; MOV result.texcoord[ 1 ], tc; END PS bloom2: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP scaled, bloom; TEX bloom, fragment.texcoord[1], texture[1], RECT; MAD result.color, bloom, program.env[0].x, sample; END ************** VS bloom3_scale: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; ADD result.texcoord[1], vertex.texcoord[0], { -1.5, -1.5, 0, 0 }; ADD result.texcoord[2], vertex.texcoord[0], { 1.5, -1.5, 0, 0 }; ADD result.texcoord[3], vertex.texcoord[0], { -1.5, 1.5, 0, 0 }; ADD result.texcoord[4], vertex.texcoord[0], { 1.5, 1.5, 0, 0 }; END PS bloom3_scale: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP s00, s02, s20, s22; TEX s00, fragment.texcoord[1], texture[0], RECT; TEX s02, fragment.texcoord[2], texture[0], RECT; TEX s20, fragment.texcoord[3], texture[0], RECT; TEX s22, fragment.texcoord[4], texture[0], RECT; TEMP t; ADD t, s02, s00; ADD t, t, s22; ADD t, t, s20; ADD t, t, sample; MUL result.color, t, 0.2; END ************** VS bloom3_init: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; END PS bloom3_init: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP t; MAX t, sample.r, sample.g; MAX t, t, sample.b; MUL t, t, t; MUL result.color, t, sample; END ************** VS bloom3: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; TEMP tc; MOV tc, vertex.texcoord[0]; MUL tc, tc, 0.5; MOV result.texcoord[ 1 ], tc; MUL tc, tc, 0.5; MOV result.texcoord[ 2 ], tc; END PS bloom3: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP scaled, bloom; TEX bloom, fragment.texcoord[1], texture[1], RECT; TEX scaled, fragment.texcoord[2], texture[2], RECT; ADD bloom, bloom, scaled; MAD result.color, bloom, program.env[0].x, sample; END ************** VS bloom4_scale: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; ADD result.texcoord[1], vertex.texcoord[0], { -1.5, -1.5, 0, 0 }; ADD result.texcoord[2], vertex.texcoord[0], { 1.5, -1.5, 0, 0 }; ADD result.texcoord[3], vertex.texcoord[0], { -1.5, 1.5, 0, 0 }; ADD result.texcoord[4], vertex.texcoord[0], { 1.5, 1.5, 0, 0 }; END PS bloom4_scale: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP s00, s02, s20, s22; TEX s00, fragment.texcoord[1], texture[0], RECT; TEX s02, fragment.texcoord[2], texture[0], RECT; TEX s20, fragment.texcoord[3], texture[0], RECT; TEX s22, fragment.texcoord[4], texture[0], RECT; TEMP t; ADD t, s02, s00; ADD t, t, s22; ADD t, t, s20; ADD t, t, sample; MUL result.color, t, 0.2; END ************** VS bloom4_init: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; END PS bloom4_init: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP t; MAX t, sample.r, sample.g; MAX t, t, sample.b; MUL t, t, t; MUL result.color, t, sample; END ************** VS bloom4: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; TEMP tc; MOV tc, vertex.texcoord[0]; MUL tc, tc, 0.5; MOV result.texcoord[ 1 ], tc; MUL tc, tc, 0.5; MOV result.texcoord[ 2 ], tc; MUL tc, tc, 0.5; MOV result.texcoord[ 3 ], tc; END PS bloom4: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP scaled, bloom; TEX bloom, fragment.texcoord[1], texture[1], RECT; TEX scaled, fragment.texcoord[2], texture[2], RECT; ADD bloom, bloom, scaled; TEX scaled, fragment.texcoord[3], texture[3], RECT; ADD bloom, bloom, scaled; MAD result.color, bloom, program.env[0].x, sample; END ************** VS bloom5_scale: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; ADD result.texcoord[1], vertex.texcoord[0], { -1.5, -1.5, 0, 0 }; ADD result.texcoord[2], vertex.texcoord[0], { 1.5, -1.5, 0, 0 }; ADD result.texcoord[3], vertex.texcoord[0], { -1.5, 1.5, 0, 0 }; ADD result.texcoord[4], vertex.texcoord[0], { 1.5, 1.5, 0, 0 }; END PS bloom5_scale: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP s00, s02, s20, s22; TEX s00, fragment.texcoord[1], texture[0], RECT; TEX s02, fragment.texcoord[2], texture[0], RECT; TEX s20, fragment.texcoord[3], texture[0], RECT; TEX s22, fragment.texcoord[4], texture[0], RECT; TEMP t; ADD t, s02, s00; ADD t, t, s22; ADD t, t, s20; ADD t, t, sample; MUL result.color, t, 0.2; END ************** VS bloom5_init: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; END PS bloom5_init: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP t; MAX t, sample.r, sample.g; MAX t, t, sample.b; MUL t, t, t; MUL result.color, t, sample; END ************** VS bloom5: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; TEMP tc; MOV tc, vertex.texcoord[0]; MUL tc, tc, 0.5; MOV result.texcoord[ 1 ], tc; MUL tc, tc, 0.5; MOV result.texcoord[ 2 ], tc; MUL tc, tc, 0.5; MOV result.texcoord[ 3 ], tc; MUL tc, tc, 0.5; MOV result.texcoord[ 4 ], tc; END PS bloom5: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP scaled, bloom; TEX bloom, fragment.texcoord[1], texture[1], RECT; TEX scaled, fragment.texcoord[2], texture[2], RECT; ADD bloom, bloom, scaled; TEX scaled, fragment.texcoord[3], texture[3], RECT; ADD bloom, bloom, scaled; TEX scaled, fragment.texcoord[4], texture[4], RECT; ADD bloom, bloom, scaled; MAD result.color, bloom, program.env[0].x, sample; END ************** VS bloom6_scale: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; ADD result.texcoord[1], vertex.texcoord[0], { -1.5, -1.5, 0, 0 }; ADD result.texcoord[2], vertex.texcoord[0], { 1.5, -1.5, 0, 0 }; ADD result.texcoord[3], vertex.texcoord[0], { -1.5, 1.5, 0, 0 }; ADD result.texcoord[4], vertex.texcoord[0], { 1.5, 1.5, 0, 0 }; END PS bloom6_scale: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP s00, s02, s20, s22; TEX s00, fragment.texcoord[1], texture[0], RECT; TEX s02, fragment.texcoord[2], texture[0], RECT; TEX s20, fragment.texcoord[3], texture[0], RECT; TEX s22, fragment.texcoord[4], texture[0], RECT; TEMP t; ADD t, s02, s00; ADD t, t, s22; ADD t, t, s20; ADD t, t, sample; MUL result.color, t, 0.2; END ************** VS bloom6_init: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; END PS bloom6_init: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP t; MAX t, sample.r, sample.g; MAX t, t, sample.b; MUL t, t, t; MUL result.color, t, sample; END ************** VS bloom6: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; TEMP tc; MOV tc, vertex.texcoord[0]; MUL tc, tc, 0.5; MOV result.texcoord[ 1 ], tc; MUL tc, tc, 0.5; MOV result.texcoord[ 2 ], tc; MUL tc, tc, 0.5; MOV result.texcoord[ 3 ], tc; MUL tc, tc, 0.5; MOV result.texcoord[ 4 ], tc; MUL tc, tc, 0.5; MOV result.texcoord[ 5 ], tc; END PS bloom6: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP scaled, bloom; TEX bloom, fragment.texcoord[1], texture[1], RECT; TEX scaled, fragment.texcoord[2], texture[2], RECT; ADD bloom, bloom, scaled; TEX scaled, fragment.texcoord[3], texture[3], RECT; ADD bloom, bloom, scaled; TEX scaled, fragment.texcoord[4], texture[4], RECT; ADD bloom, bloom, scaled; TEX scaled, fragment.texcoord[5], texture[5], RECT; ADD bloom, bloom, scaled; MAD result.color, bloom, program.env[0].x, sample; END ************** VS bloom_scale: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; ADD result.texcoord[1], vertex.texcoord[0], { -1.5, -1.5, 0, 0 }; ADD result.texcoord[2], vertex.texcoord[0], { 1.5, -1.5, 0, 0 }; ADD result.texcoord[3], vertex.texcoord[0], { -1.5, 1.5, 0, 0 }; ADD result.texcoord[4], vertex.texcoord[0], { 1.5, 1.5, 0, 0 }; END PS bloom_scale: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP s00, s02, s20, s22; TEX s00, fragment.texcoord[1], texture[0], RECT; TEX s02, fragment.texcoord[2], texture[0], RECT; TEX s20, fragment.texcoord[3], texture[0], RECT; TEX s22, fragment.texcoord[4], texture[0], RECT; TEMP t; ADD t, s02, s00; ADD t, t, s22; ADD t, t, s20; ADD t, t, sample; MUL result.color, t, 0.2; END ************** VS bloom_init: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; END PS bloom_init: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP t; MAX t, sample.r, sample.g; MAX t, t, sample.b; MUL t, t, t; MUL result.color, t, sample; END ************** VS bloom: !!ARBvp1.0 MOV result.position, vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; TEMP tc; MOV tc, vertex.texcoord[0]; MUL tc, tc, 0.5; MOV result.texcoord[ 1 ], tc; MUL tc, tc, 0.5; MOV result.texcoord[ 2 ], tc; MUL tc, tc, 0.5; MOV result.texcoord[ 3 ], tc; MUL tc, tc, 0.5; MOV result.texcoord[ 4 ], tc; MUL tc, tc, 0.5; MOV result.texcoord[ 5 ], tc; MUL tc, tc, 0.5; MOV result.texcoord[ 6 ], tc; END PS bloom: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP sample; TEX sample, fragment.texcoord[0], texture[0], RECT; TEMP scaled, bloom; TEX bloom, fragment.texcoord[1], texture[1], RECT; TEX scaled, fragment.texcoord[2], texture[2], RECT; ADD bloom, bloom, scaled; TEX scaled, fragment.texcoord[3], texture[3], RECT; ADD bloom, bloom, scaled; TEX scaled, fragment.texcoord[4], texture[4], RECT; ADD bloom, bloom, scaled; TEX scaled, fragment.texcoord[5], texture[5], RECT; ADD bloom, bloom, scaled; TEX scaled, fragment.texcoord[6], texture[6], RECT; ADD bloom, bloom, scaled; MAD result.color, bloom, program.env[0].x, sample; END ************** VS explosion2d: !!ARBvp1.0 ATTRIB opos = vertex.position; OUTPUT spos = result.position; TEMP wobble; DP3 wobble, opos, program.env[0]; MAD wobble, program.env[1].w, 0.002, wobble; FRC wobble, wobble; SUB wobble, wobble, 0.5; ABS wobble, wobble; MUL wobble, wobble, 0.5; MAD wobble.xyz, wobble, opos, opos; MOV wobble.w, opos.w; DP4 spos.x, state.matrix.mvp.row[0], wobble; DP4 spos.y, state.matrix.mvp.row[1], wobble; DP4 spos.z, state.matrix.mvp.row[2], wobble; DP4 spos.w, state.matrix.mvp.row[3], wobble; MOV result.color, vertex.color; TEMP dtc; MAD dtc, program.env[1].x, -1.414, 1.768; MUL dtc, dtc, dtc; MUL dtc, opos, dtc; MAD result.texcoord[0], program.env[1].w, 0.0004, dtc; MAD result.texcoord[1], opos, 0.5, 0.5; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS explosion2d: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP dtc, diffuse, blend, tint; TEX dtc, fragment.texcoord[1], texture[0], 2D; MAD dtc, dtc, 0.1, fragment.texcoord[0]; TEX diffuse, dtc, texture[0], 2D; TEX blend, fragment.texcoord[1], texture[1], 2D; MAD tint, blend.a, { 0, 0, -0.5, 0 }, { 0, 0, 0.5, 0 }; MUL blend, blend.a, 4; MAD diffuse, diffuse, blend, tint; MUL result.color, diffuse, fragment.color; END ************** VS explosion3d: !!ARBvp1.0 ATTRIB opos = vertex.position; OUTPUT spos = result.position; TEMP wobble; DP3 wobble, opos, program.env[0]; MAD wobble, program.env[1].w, 0.002, wobble; FRC wobble, wobble; SUB wobble, wobble, 0.5; ABS wobble, wobble; MUL wobble, wobble, 0.5; MAD wobble.xyz, wobble, opos, opos; MOV wobble.w, opos.w; DP4 spos.x, state.matrix.mvp.row[0], wobble; DP4 spos.y, state.matrix.mvp.row[1], wobble; DP4 spos.z, state.matrix.mvp.row[2], wobble; DP4 spos.w, state.matrix.mvp.row[3], wobble; MOV result.color, vertex.color; MOV result.texcoord[0], vertex.texcoord[0]; TEMP texgen; DP4 texgen.x, opos, program.env[2]; DP4 texgen.y, opos, program.env[3]; MOV result.texcoord[1], texgen; MAD result.texcoord[2], program.env[1].w, -0.0005, texgen; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS explosion3d: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP dtc, diffuse, blend, tint; TEX dtc, fragment.texcoord[2], texture[0], 2D; MAD dtc, dtc, 0.1, fragment.texcoord[0]; TEX diffuse, dtc, texture[0], 2D; TEX blend, fragment.texcoord[1], texture[1], 2D; MAD tint, blend.a, { 0, 0, -0.5, 0 }, { 0, 0, 0.5, 0 }; MUL blend, blend.a, 4; MAD diffuse, diffuse, blend, tint; MUL result.color, diffuse, fragment.color; END ************** VS underwater: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS underwater: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP col; MUL col.rgb, fragment.color, program.env[5].x; MUL col.rgb, col, 0.8; MUL col.a, 0.5, program.env[5].y; TEMP fog; SUB fog, state.fog.params.z, fragment.fogcoord.x; MUL_SAT fog, fog, state.fog.params.w; LRP result.color, fog, col, {0, 0, 0, 1}; END ************** VS underwaterrefract: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP tc; PARAM campos = program.env[0]; PARAM seconds = program.env[1]; DP4 result.texcoord[0].x, state.matrix.texture.row[0], opos; DP4 result.texcoord[0].y, state.matrix.texture.row[1], opos; SUB result.texcoord[0].z, program.env[7], opos.z; DP4 result.texcoord[0].w, state.matrix.texture.row[3], opos; MUL tc, vertex.texcoord[0], 0.1; MAD result.texcoord[1], seconds, 0.04, tc; MAD result.texcoord[2], seconds, -0.02, tc; SUB result.texcoord[3], campos, opos; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS underwaterrefract: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP he, light, cam, bump, invfresnel, temp, dudv; ATTRIB projtc = fragment.texcoord[0]; ATTRIB tc1 = fragment.texcoord[1]; ATTRIB tc2 = fragment.texcoord[2]; ATTRIB camts = fragment.texcoord[3]; DP3 cam.w, camts, camts; RSQ cam.w, cam.w; MUL cam.xyz, cam.w, camts; TEX dudv, tc1, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; MAD temp, dudv, 0.025, tc2; TEX dudv, temp, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; RCP temp.w, projtc.w; MUL temp.xy, projtc, temp.w; MAD temp.xy, dudv, 0.01, temp; TEX result.color, temp, texture[3], 2D; END ************** VS underwaterrefractfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP tc; PARAM campos = program.env[0]; PARAM seconds = program.env[1]; DP4 result.texcoord[0].x, state.matrix.texture.row[0], opos; DP4 result.texcoord[0].y, state.matrix.texture.row[1], opos; SUB result.texcoord[0].z, program.env[7], opos.z; DP4 result.texcoord[0].w, state.matrix.texture.row[3], opos; MUL tc, vertex.texcoord[0], 0.1; MAD result.texcoord[1], seconds, 0.04, tc; MAD result.texcoord[2], seconds, -0.02, tc; SUB result.texcoord[3], campos, opos; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS underwaterrefractfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP he, light, cam, bump, invfresnel, temp, dudv; ATTRIB projtc = fragment.texcoord[0]; ATTRIB tc1 = fragment.texcoord[1]; ATTRIB tc2 = fragment.texcoord[2]; ATTRIB camts = fragment.texcoord[3]; DP3 cam.w, camts, camts; RSQ cam.w, cam.w; MUL cam.xyz, cam.w, camts; TEX dudv, tc1, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; MAD temp, dudv, 0.4, projtc; TXP result.color, temp, texture[3], 2D; END ************** VS underwaterfade: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP tc; PARAM campos = program.env[0]; PARAM seconds = program.env[1]; DP4 result.texcoord[0].x, state.matrix.texture.row[0], opos; DP4 result.texcoord[0].y, state.matrix.texture.row[1], opos; SUB result.texcoord[0].z, program.env[7], opos.z; DP4 result.texcoord[0].w, state.matrix.texture.row[3], opos; MUL tc, vertex.texcoord[0], 0.1; MAD result.texcoord[1], seconds, 0.04, tc; MAD result.texcoord[2], seconds, -0.02, tc; SUB result.texcoord[3], campos, opos; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS underwaterfade: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP he, light, cam, bump, invfresnel, temp, dudv; ATTRIB projtc = fragment.texcoord[0]; ATTRIB tc1 = fragment.texcoord[1]; ATTRIB tc2 = fragment.texcoord[2]; ATTRIB camts = fragment.texcoord[3]; DP3 cam.w, camts, camts; RSQ cam.w, cam.w; MUL cam.xyz, cam.w, camts; TEX dudv, tc1, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; MAD temp, dudv, 0.025, tc2; TEX dudv, temp, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; RCP temp.w, projtc.w; MUL temp.xy, projtc, temp.w; TEMP fade; TEX fade.a, temp, texture[3], 2D; MAD result.color.a, fade, 4, projtc.z; MAD temp.xy, dudv, 0.01, temp; TEX result.color.rgb, temp, texture[3], 2D; END ************** VS underwaterfadefast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP tc; PARAM campos = program.env[0]; PARAM seconds = program.env[1]; DP4 result.texcoord[0].x, state.matrix.texture.row[0], opos; DP4 result.texcoord[0].y, state.matrix.texture.row[1], opos; SUB result.texcoord[0].z, program.env[7], opos.z; DP4 result.texcoord[0].w, state.matrix.texture.row[3], opos; MUL tc, vertex.texcoord[0], 0.1; MAD result.texcoord[1], seconds, 0.04, tc; MAD result.texcoord[2], seconds, -0.02, tc; SUB result.texcoord[3], campos, opos; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS underwaterfadefast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP he, light, cam, bump, invfresnel, temp, dudv; ATTRIB projtc = fragment.texcoord[0]; ATTRIB tc1 = fragment.texcoord[1]; ATTRIB tc2 = fragment.texcoord[2]; ATTRIB camts = fragment.texcoord[3]; DP3 cam.w, camts, camts; RSQ cam.w, cam.w; MUL cam.xyz, cam.w, camts; TEX dudv, tc1, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; MAD temp, dudv, 0.4, projtc; TXP result.color.rgb, temp, texture[3], 2D; TEMP fade; TXP fade.a, projtc, texture[3], 2D; MAD result.color.a, fade, 4, projtc.z; END ************** VS water: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP tc; PARAM campos = program.env[0]; PARAM seconds = program.env[1]; PARAM lightpos = program.env[2]; DP4 result.texcoord[0].x, state.matrix.texture.row[0], opos; DP4 result.texcoord[0].y, state.matrix.texture.row[1], opos; SUB result.texcoord[0].z, opos.z, program.env[7]; DP4 result.texcoord[0].w, state.matrix.texture.row[3], opos; MUL tc, vertex.texcoord[0], 0.1; MAD result.texcoord[1], seconds, 0.04, tc; MAD result.texcoord[2], seconds, -0.02, tc; SUB result.texcoord[3], campos, opos; SUB result.texcoord[4], lightpos, opos; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS water: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP he, light, cam, bump, invfresnel, temp, dudv; ATTRIB projtc = fragment.texcoord[0]; ATTRIB tc1 = fragment.texcoord[1]; ATTRIB tc2 = fragment.texcoord[2]; ATTRIB camts = fragment.texcoord[3]; ATTRIB lightts = fragment.texcoord[4]; DP3 cam.w, camts, camts; RSQ cam.w, cam.w; MUL cam.xyz, cam.w, camts; DP3 light.w, lightts, lightts; RSQ light.w, light.w; MUL light.xyz, light.w, lightts; ADD he, cam, light; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; TEX dudv, tc1, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; MAD temp, dudv, 0.025, tc2; TEX bump, temp, texture[1], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 96; DP3_SAT he, he, bump; POW he, he.x, specfactor.w; MUL light, program.env[4], light.w; RCP_SAT light, light.x; MAD light, light, -program.env[3], program.env[3]; TEMP diffuse; MUL temp, fragment.color, program.env[5].x; MUL diffuse, temp, 0.6; DP3_SAT invfresnel, cam, bump; MAD invfresnel, invfresnel, 0.5, 0.5; LRP temp, invfresnel, temp, diffuse; TEMP col; MAD col.rgb, he, light, temp; MUL col.a, invfresnel, program.env[5].y; TEMP fog; SUB fog, state.fog.params.z, fragment.fogcoord.x; MUL_SAT fog, fog, state.fog.params.w; LRP result.color, fog, col, {0, 0, 0, 1}; END ************** VS waterfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP tc; PARAM campos = program.env[0]; PARAM seconds = program.env[1]; DP4 result.texcoord[0].x, state.matrix.texture.row[0], opos; DP4 result.texcoord[0].y, state.matrix.texture.row[1], opos; SUB result.texcoord[0].z, opos.z, program.env[7]; DP4 result.texcoord[0].w, state.matrix.texture.row[3], opos; MUL tc, vertex.texcoord[0], 0.1; MAD result.texcoord[1], seconds, 0.04, tc; MAD result.texcoord[2], seconds, -0.02, tc; SUB result.texcoord[3], campos, opos; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS waterfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP he, light, cam, bump, invfresnel, temp, dudv; ATTRIB projtc = fragment.texcoord[0]; ATTRIB tc1 = fragment.texcoord[1]; ATTRIB tc2 = fragment.texcoord[2]; ATTRIB camts = fragment.texcoord[3]; DP3 cam.w, camts, camts; RSQ cam.w, cam.w; MUL cam.xyz, cam.w, camts; TEX dudv, tc1, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; MAD temp, dudv, 0.025, tc2; TEX bump, temp, texture[1], 2D; MAD bump.xyz, bump, 2, -1; TEMP diffuse; MUL temp, fragment.color, program.env[5].x; MUL diffuse, temp, 0.6; DP3_SAT invfresnel, cam, bump; MAD invfresnel, invfresnel, 0.5, 0.5; TEMP col; LRP col.rgb, invfresnel, temp, diffuse; MUL col.a, invfresnel, program.env[5].y; TEMP fog; SUB fog, state.fog.params.z, fragment.fogcoord.x; MUL_SAT fog, fog, state.fog.params.w; LRP result.color, fog, col, {0, 0, 0, 1}; END ************** VS waterreflect: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP tc; PARAM campos = program.env[0]; PARAM seconds = program.env[1]; PARAM lightpos = program.env[2]; DP4 result.texcoord[0].x, state.matrix.texture.row[0], opos; DP4 result.texcoord[0].y, state.matrix.texture.row[1], opos; SUB result.texcoord[0].z, opos.z, program.env[7]; DP4 result.texcoord[0].w, state.matrix.texture.row[3], opos; MUL tc, vertex.texcoord[0], 0.1; MAD result.texcoord[1], seconds, 0.04, tc; MAD result.texcoord[2], seconds, -0.02, tc; SUB result.texcoord[3], campos, opos; SUB result.texcoord[4], lightpos, opos; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS waterreflect: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP he, light, cam, bump, invfresnel, temp, dudv; ATTRIB projtc = fragment.texcoord[0]; ATTRIB tc1 = fragment.texcoord[1]; ATTRIB tc2 = fragment.texcoord[2]; ATTRIB camts = fragment.texcoord[3]; ATTRIB lightts = fragment.texcoord[4]; DP3 cam.w, camts, camts; RSQ cam.w, cam.w; MUL cam.xyz, cam.w, camts; DP3 light.w, lightts, lightts; RSQ light.w, light.w; MUL light.xyz, light.w, lightts; ADD he, cam, light; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; TEX dudv, tc1, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; TEMP reflect; MAD temp, dudv, 0.4, projtc; TXP reflect, temp, texture[0], 2D; MAD temp, dudv, 0.025, tc2; TEX bump, temp, texture[1], 2D; MAD bump.xyz, bump, 2, -1; PARAM specfactor = 96; DP3_SAT he, he, bump; POW he, he.x, specfactor.w; MUL light, program.env[4], light.w; RCP_SAT light, light.x; MAD light, light, -program.env[3], program.env[3]; DP3_SAT invfresnel, cam, bump; MAD invfresnel, invfresnel, 0.5, 0.5; MUL temp, fragment.color, program.env[5].x; LRP temp, invfresnel, temp, reflect; TEMP col; MAD col.rgb, he, light, temp; MUL col.a, invfresnel, program.env[5].y; TEMP fog; SUB fog, state.fog.params.z, fragment.fogcoord.x; MUL_SAT fog, fog, state.fog.params.w; LRP result.color, fog, col, {0, 0, 0, 1}; END ************** VS waterreflectfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP tc; PARAM campos = program.env[0]; PARAM seconds = program.env[1]; DP4 result.texcoord[0].x, state.matrix.texture.row[0], opos; DP4 result.texcoord[0].y, state.matrix.texture.row[1], opos; SUB result.texcoord[0].z, opos.z, program.env[7]; DP4 result.texcoord[0].w, state.matrix.texture.row[3], opos; MUL tc, vertex.texcoord[0], 0.1; MAD result.texcoord[1], seconds, 0.04, tc; MAD result.texcoord[2], seconds, -0.02, tc; SUB result.texcoord[3], campos, opos; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS waterreflectfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP he, light, cam, bump, invfresnel, temp, dudv; ATTRIB projtc = fragment.texcoord[0]; ATTRIB tc1 = fragment.texcoord[1]; ATTRIB tc2 = fragment.texcoord[2]; ATTRIB camts = fragment.texcoord[3]; DP3 cam.w, camts, camts; RSQ cam.w, cam.w; MUL cam.xyz, cam.w, camts; TEX dudv, tc1, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; TEMP reflect; MAD temp, dudv, 0.4, projtc; TXP reflect, temp, texture[0], 2D; MAD temp, dudv, 0.025, tc2; TEX bump, temp, texture[1], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT invfresnel, cam, bump; MAD invfresnel, invfresnel, 0.5, 0.5; MUL temp, fragment.color, program.env[5].x; TEMP col; LRP col.rgb, invfresnel, temp, reflect; MUL col.a, invfresnel, program.env[5].y; TEMP fog; SUB fog, state.fog.params.z, fragment.fogcoord.x; MUL_SAT fog, fog, state.fog.params.w; LRP result.color, fog, col, {0, 0, 0, 1}; END ************** VS waterrefract: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP tc; PARAM campos = program.env[0]; PARAM seconds = program.env[1]; PARAM lightpos = program.env[2]; DP4 result.texcoord[0].x, state.matrix.texture.row[0], opos; DP4 result.texcoord[0].y, state.matrix.texture.row[1], opos; SUB result.texcoord[0].z, opos.z, program.env[7]; DP4 result.texcoord[0].w, state.matrix.texture.row[3], opos; MUL tc, vertex.texcoord[0], 0.1; MAD result.texcoord[1], seconds, 0.04, tc; MAD result.texcoord[2], seconds, -0.02, tc; SUB result.texcoord[3], campos, opos; SUB result.texcoord[4], lightpos, opos; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS waterrefract: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP he, light, cam, bump, invfresnel, temp, dudv; ATTRIB projtc = fragment.texcoord[0]; ATTRIB tc1 = fragment.texcoord[1]; ATTRIB tc2 = fragment.texcoord[2]; ATTRIB camts = fragment.texcoord[3]; ATTRIB lightts = fragment.texcoord[4]; DP3 cam.w, camts, camts; RSQ cam.w, cam.w; MUL cam.xyz, cam.w, camts; DP3 light.w, lightts, lightts; RSQ light.w, light.w; MUL light.xyz, light.w, lightts; ADD he, cam, light; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; TEX dudv, tc1, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; TEMP reflect, refract; MAD temp, dudv, 0.025, tc2; TEX bump, temp, texture[1], 2D; MAD bump.xyz, bump, 2, -1; TEX dudv, temp, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; RCP temp.w, projtc.w; MUL temp.xy, projtc, temp.w; MAD temp.xy, dudv, 0.01, temp; TEX reflect, temp, texture[0], 2D; TEX refract, temp, texture[3], 2D; PARAM specfactor = 96; DP3_SAT he, he, bump; POW he, he.x, specfactor.w; MUL light, program.env[4], light.w; RCP_SAT light, light.x; MAD light, light, -program.env[3], program.env[3]; DP3_SAT invfresnel, cam, bump; MAD invfresnel, invfresnel, 0.5, 0.5; LRP temp, invfresnel, refract, reflect; MAD result.color, he, light, temp; END ************** VS waterrefractfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP tc; PARAM campos = program.env[0]; PARAM seconds = program.env[1]; DP4 result.texcoord[0].x, state.matrix.texture.row[0], opos; DP4 result.texcoord[0].y, state.matrix.texture.row[1], opos; SUB result.texcoord[0].z, opos.z, program.env[7]; DP4 result.texcoord[0].w, state.matrix.texture.row[3], opos; MUL tc, vertex.texcoord[0], 0.1; MAD result.texcoord[1], seconds, 0.04, tc; MAD result.texcoord[2], seconds, -0.02, tc; SUB result.texcoord[3], campos, opos; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS waterrefractfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP he, light, cam, bump, invfresnel, temp, dudv; ATTRIB projtc = fragment.texcoord[0]; ATTRIB tc1 = fragment.texcoord[1]; ATTRIB tc2 = fragment.texcoord[2]; ATTRIB camts = fragment.texcoord[3]; DP3 cam.w, camts, camts; RSQ cam.w, cam.w; MUL cam.xyz, cam.w, camts; TEX dudv, tc1, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; TEMP reflect, refract; MAD temp, dudv, 0.4, projtc; TXP reflect, temp, texture[0], 2D; TXP refract, temp, texture[3], 2D; MAD temp, dudv, 0.025, tc2; TEX bump, temp, texture[1], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT invfresnel, cam, bump; MAD invfresnel, invfresnel, 0.5, 0.5; LRP result.color, invfresnel, refract, reflect; END ************** VS waterfade: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP tc; PARAM campos = program.env[0]; PARAM seconds = program.env[1]; PARAM lightpos = program.env[2]; DP4 result.texcoord[0].x, state.matrix.texture.row[0], opos; DP4 result.texcoord[0].y, state.matrix.texture.row[1], opos; SUB result.texcoord[0].z, opos.z, program.env[7]; DP4 result.texcoord[0].w, state.matrix.texture.row[3], opos; MUL tc, vertex.texcoord[0], 0.1; MAD result.texcoord[1], seconds, 0.04, tc; MAD result.texcoord[2], seconds, -0.02, tc; SUB result.texcoord[3], campos, opos; SUB result.texcoord[4], lightpos, opos; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS waterfade: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP he, light, cam, bump, invfresnel, temp, dudv; ATTRIB projtc = fragment.texcoord[0]; ATTRIB tc1 = fragment.texcoord[1]; ATTRIB tc2 = fragment.texcoord[2]; ATTRIB camts = fragment.texcoord[3]; ATTRIB lightts = fragment.texcoord[4]; DP3 cam.w, camts, camts; RSQ cam.w, cam.w; MUL cam.xyz, cam.w, camts; DP3 light.w, lightts, lightts; RSQ light.w, light.w; MUL light.xyz, light.w, lightts; ADD he, cam, light; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; TEX dudv, tc1, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; TEMP distort, reflect, refract, fade; MAD temp, dudv, 0.025, tc2; TEX bump, temp, texture[1], 2D; MAD bump.xyz, bump, 2, -1; TEX dudv, temp, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; RCP temp.w, projtc.w; MUL temp.xy, projtc, temp.w; MAD distort.xy, dudv, 0.01, temp; TEX reflect, distort, texture[0], 2D; TEX refract, distort, texture[3], 2D; TEX fade.a, temp, texture[3], 2D; MAD result.color.a, fade, 4, projtc.z; PARAM specfactor = 96; DP3_SAT he, he, bump; POW he, he.x, specfactor.w; MUL light, program.env[4], light.w; RCP_SAT light, light.x; MAD light, light, -program.env[3], program.env[3]; DP3_SAT invfresnel, cam, bump; MAD invfresnel, invfresnel, 0.5, 0.5; LRP temp, invfresnel, refract, reflect; MAD result.color.rgb, he, light, temp; END ************** VS waterfadefast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP tc; PARAM campos = program.env[0]; PARAM seconds = program.env[1]; DP4 result.texcoord[0].x, state.matrix.texture.row[0], opos; DP4 result.texcoord[0].y, state.matrix.texture.row[1], opos; SUB result.texcoord[0].z, opos.z, program.env[7]; DP4 result.texcoord[0].w, state.matrix.texture.row[3], opos; MUL tc, vertex.texcoord[0], 0.1; MAD result.texcoord[1], seconds, 0.04, tc; MAD result.texcoord[2], seconds, -0.02, tc; SUB result.texcoord[3], campos, opos; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS waterfadefast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP he, light, cam, bump, invfresnel, temp, dudv; ATTRIB projtc = fragment.texcoord[0]; ATTRIB tc1 = fragment.texcoord[1]; ATTRIB tc2 = fragment.texcoord[2]; ATTRIB camts = fragment.texcoord[3]; DP3 cam.w, camts, camts; RSQ cam.w, cam.w; MUL cam.xyz, cam.w, camts; TEX dudv, tc1, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; TEMP reflect, refract, fade; MAD temp, dudv, 0.4, projtc; TXP reflect, temp, texture[0], 2D; TXP refract, temp, texture[3], 2D; TXP fade.a, projtc, texture[3], 2D; MAD result.color.a, fade, 4, projtc.z; MAD temp, dudv, 0.025, tc2; TEX bump, temp, texture[1], 2D; MAD bump.xyz, bump, 2, -1; DP3_SAT invfresnel, cam, bump; MAD invfresnel, invfresnel, 0.5, 0.5; LRP result.color.rgb, invfresnel, refract, reflect; END ************** VS waterenv: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP tc; PARAM campos = program.env[0]; PARAM seconds = program.env[1]; PARAM lightpos = program.env[2]; DP4 result.texcoord[0].x, state.matrix.texture.row[0], opos; DP4 result.texcoord[0].y, state.matrix.texture.row[1], opos; SUB result.texcoord[0].z, opos.z, program.env[7]; DP4 result.texcoord[0].w, state.matrix.texture.row[3], opos; MUL tc, vertex.texcoord[0], 0.1; MAD result.texcoord[1], seconds, 0.04, tc; MAD result.texcoord[2], seconds, -0.02, tc; SUB result.texcoord[3], campos, opos; SUB result.texcoord[4], lightpos, opos; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS waterenv: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP he, light, cam, bump, invfresnel, temp, dudv; ATTRIB projtc = fragment.texcoord[0]; ATTRIB tc1 = fragment.texcoord[1]; ATTRIB tc2 = fragment.texcoord[2]; ATTRIB camts = fragment.texcoord[3]; ATTRIB lightts = fragment.texcoord[4]; DP3 cam.w, camts, camts; RSQ cam.w, cam.w; MUL cam.xyz, cam.w, camts; DP3 light.w, lightts, lightts; RSQ light.w, light.w; MUL light.xyz, light.w, lightts; ADD he, cam, light; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; TEX dudv, tc1, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; MAD temp, dudv, 0.025, tc2; TEX bump, temp, texture[1], 2D; MAD bump.xyz, bump, 2, -1; TEMP rvec, reflect; DP3_SAT invfresnel, cam, bump; MUL rvec, invfresnel, bump; MAD rvec, rvec, 2, -cam; TEX reflect, rvec, texture[0], CUBE; PARAM specfactor = 96; DP3_SAT he, he, bump; POW he, he.x, specfactor.w; MUL light, program.env[4], light.w; RCP_SAT light, light.x; MAD light, light, -program.env[3], program.env[3]; MAD invfresnel, invfresnel, 0.5, 0.5; MUL temp, fragment.color, program.env[5].x; LRP temp, invfresnel, temp, reflect; TEMP col; MAD col.rgb, he, light, temp; MUL col.a, invfresnel, program.env[5].y; TEMP fog; SUB fog, state.fog.params.z, fragment.fogcoord.x; MUL_SAT fog, fog, state.fog.params.w; LRP result.color, fog, col, program.env[6]; END ************** VS waterenvfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP tc; PARAM campos = program.env[0]; PARAM seconds = program.env[1]; DP4 result.texcoord[0].x, state.matrix.texture.row[0], opos; DP4 result.texcoord[0].y, state.matrix.texture.row[1], opos; SUB result.texcoord[0].z, opos.z, program.env[7]; DP4 result.texcoord[0].w, state.matrix.texture.row[3], opos; MUL tc, vertex.texcoord[0], 0.1; MAD result.texcoord[1], seconds, 0.04, tc; MAD result.texcoord[2], seconds, -0.02, tc; SUB result.texcoord[3], campos, opos; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS waterenvfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; TEMP he, light, cam, bump, invfresnel, temp, dudv; ATTRIB projtc = fragment.texcoord[0]; ATTRIB tc1 = fragment.texcoord[1]; ATTRIB tc2 = fragment.texcoord[2]; ATTRIB camts = fragment.texcoord[3]; DP3 cam.w, camts, camts; RSQ cam.w, cam.w; MUL cam.xyz, cam.w, camts; TEX dudv, tc1, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; MAD temp, dudv, 0.025, tc2; TEX bump, temp, texture[1], 2D; MAD bump.xyz, bump, 2, -1; TEMP rvec, reflect; DP3_SAT invfresnel, cam, bump; MUL rvec, invfresnel, bump; MAD rvec, rvec, 2, -cam; TEX reflect, rvec, texture[0], CUBE; MAD invfresnel, invfresnel, 0.5, 0.5; MUL temp, fragment.color, program.env[5].x; TEMP col; LRP col.rgb, invfresnel, temp, reflect; MUL col.a, invfresnel, program.env[5].y; TEMP fog; SUB fog, state.fog.params.z, fragment.fogcoord.x; MUL_SAT fog, fog, state.fog.params.w; LRP result.color, fog, col, program.env[6]; END ************** VS waterenvrefract: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP tc; PARAM campos = program.env[0]; PARAM seconds = program.env[1]; PARAM lightpos = program.env[2]; DP4 result.texcoord[0].x, state.matrix.texture.row[0], opos; DP4 result.texcoord[0].y, state.matrix.texture.row[1], opos; SUB result.texcoord[0].z, opos.z, program.env[7]; DP4 result.texcoord[0].w, state.matrix.texture.row[3], opos; MUL tc, vertex.texcoord[0], 0.1; MAD result.texcoord[1], seconds, 0.04, tc; MAD result.texcoord[2], seconds, -0.02, tc; SUB result.texcoord[3], campos, opos; SUB result.texcoord[4], lightpos, opos; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS waterenvrefract: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP he, light, cam, bump, invfresnel, temp, dudv; ATTRIB projtc = fragment.texcoord[0]; ATTRIB tc1 = fragment.texcoord[1]; ATTRIB tc2 = fragment.texcoord[2]; ATTRIB camts = fragment.texcoord[3]; ATTRIB lightts = fragment.texcoord[4]; DP3 cam.w, camts, camts; RSQ cam.w, cam.w; MUL cam.xyz, cam.w, camts; DP3 light.w, lightts, lightts; RSQ light.w, light.w; MUL light.xyz, light.w, lightts; ADD he, cam, light; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; TEX dudv, tc1, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; TEMP distort, reflect, refract; MAD temp, dudv, 0.025, tc2; TEX bump, temp, texture[1], 2D; MAD bump.xyz, bump, 2, -1; TEX dudv, temp, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; RCP temp.w, projtc.w; MUL temp.xy, projtc, temp.w; MAD distort.xy, dudv, 0.01, temp; TEX refract, distort, texture[3], 2D; TEMP rvec; DP3_SAT invfresnel, cam, bump; MUL rvec, invfresnel, bump; MAD rvec, rvec, 2, -cam; TEX reflect, rvec, texture[0], CUBE; PARAM specfactor = 96; DP3_SAT he, he, bump; POW he, he.x, specfactor.w; MUL light, program.env[4], light.w; RCP_SAT light, light.x; MAD light, light, -program.env[3], program.env[3]; MAD invfresnel, invfresnel, 0.5, 0.5; LRP temp, invfresnel, refract, reflect; MAD result.color.rgb, he, light, temp; END ************** VS waterenvrefractfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP tc; PARAM campos = program.env[0]; PARAM seconds = program.env[1]; DP4 result.texcoord[0].x, state.matrix.texture.row[0], opos; DP4 result.texcoord[0].y, state.matrix.texture.row[1], opos; SUB result.texcoord[0].z, opos.z, program.env[7]; DP4 result.texcoord[0].w, state.matrix.texture.row[3], opos; MUL tc, vertex.texcoord[0], 0.1; MAD result.texcoord[1], seconds, 0.04, tc; MAD result.texcoord[2], seconds, -0.02, tc; SUB result.texcoord[3], campos, opos; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS waterenvrefractfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP he, light, cam, bump, invfresnel, temp, dudv; ATTRIB projtc = fragment.texcoord[0]; ATTRIB tc1 = fragment.texcoord[1]; ATTRIB tc2 = fragment.texcoord[2]; ATTRIB camts = fragment.texcoord[3]; DP3 cam.w, camts, camts; RSQ cam.w, cam.w; MUL cam.xyz, cam.w, camts; TEX dudv, tc1, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; TEMP reflect, refract; MAD temp, dudv, 0.4, projtc; TXP refract, temp, texture[3], 2D; MAD temp, dudv, 0.025, tc2; TEX bump, temp, texture[1], 2D; MAD bump.xyz, bump, 2, -1; TEMP rvec; DP3_SAT invfresnel, cam, bump; MUL rvec, invfresnel, bump; MAD rvec, rvec, 2, -cam; TEX reflect, rvec, texture[0], CUBE; MAD invfresnel, invfresnel, 0.5, 0.5; LRP result.color.rgb, invfresnel, refract, reflect; END ************** VS waterenvfade: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP tc; PARAM campos = program.env[0]; PARAM seconds = program.env[1]; PARAM lightpos = program.env[2]; DP4 result.texcoord[0].x, state.matrix.texture.row[0], opos; DP4 result.texcoord[0].y, state.matrix.texture.row[1], opos; SUB result.texcoord[0].z, opos.z, program.env[7]; DP4 result.texcoord[0].w, state.matrix.texture.row[3], opos; MUL tc, vertex.texcoord[0], 0.1; MAD result.texcoord[1], seconds, 0.04, tc; MAD result.texcoord[2], seconds, -0.02, tc; SUB result.texcoord[3], campos, opos; SUB result.texcoord[4], lightpos, opos; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS waterenvfade: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP he, light, cam, bump, invfresnel, temp, dudv; ATTRIB projtc = fragment.texcoord[0]; ATTRIB tc1 = fragment.texcoord[1]; ATTRIB tc2 = fragment.texcoord[2]; ATTRIB camts = fragment.texcoord[3]; ATTRIB lightts = fragment.texcoord[4]; DP3 cam.w, camts, camts; RSQ cam.w, cam.w; MUL cam.xyz, cam.w, camts; DP3 light.w, lightts, lightts; RSQ light.w, light.w; MUL light.xyz, light.w, lightts; ADD he, cam, light; DP3 he.w, he, he; RSQ he.w, he.w; MUL he.xyz, he.w, he; TEX dudv, tc1, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; TEMP distort, reflect, refract, fade; MAD temp, dudv, 0.025, tc2; TEX bump, temp, texture[1], 2D; MAD bump.xyz, bump, 2, -1; TEX dudv, temp, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; RCP temp.w, projtc.w; MUL temp.xy, projtc, temp.w; MAD distort.xy, dudv, 0.01, temp; TEX refract, distort, texture[3], 2D; TEX fade.a, temp, texture[3], 2D; MAD result.color.a, fade, 4, projtc.z; TEMP rvec; DP3_SAT invfresnel, cam, bump; MUL rvec, invfresnel, bump; MAD rvec, rvec, 2, -cam; TEX reflect, rvec, texture[0], CUBE; PARAM specfactor = 96; DP3_SAT he, he, bump; POW he, he.x, specfactor.w; MUL light, program.env[4], light.w; RCP_SAT light, light.x; MAD light, light, -program.env[3], program.env[3]; MAD invfresnel, invfresnel, 0.5, 0.5; LRP temp, invfresnel, refract, reflect; MAD result.color.rgb, he, light, temp; END ************** VS waterenvfadefast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; TEMP tc; PARAM campos = program.env[0]; PARAM seconds = program.env[1]; DP4 result.texcoord[0].x, state.matrix.texture.row[0], opos; DP4 result.texcoord[0].y, state.matrix.texture.row[1], opos; SUB result.texcoord[0].z, opos.z, program.env[7]; DP4 result.texcoord[0].w, state.matrix.texture.row[3], opos; MUL tc, vertex.texcoord[0], 0.1; MAD result.texcoord[1], seconds, 0.04, tc; MAD result.texcoord[2], seconds, -0.02, tc; SUB result.texcoord[3], campos, opos; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS waterenvfadefast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP he, light, cam, bump, invfresnel, temp, dudv; ATTRIB projtc = fragment.texcoord[0]; ATTRIB tc1 = fragment.texcoord[1]; ATTRIB tc2 = fragment.texcoord[2]; ATTRIB camts = fragment.texcoord[3]; DP3 cam.w, camts, camts; RSQ cam.w, cam.w; MUL cam.xyz, cam.w, camts; TEX dudv, tc1, texture[2], 2D; MAD dudv.xy, dudv, 2, -1; TEMP reflect, refract, fade; MAD temp, dudv, 0.4, projtc; TXP refract, temp, texture[3], 2D; TXP fade.a, projtc, texture[3], 2D; MAD result.color.a, fade, 4, projtc.z; MAD temp, dudv, 0.025, tc2; TEX bump, temp, texture[1], 2D; MAD bump.xyz, bump, 2, -1; TEMP rvec; DP3_SAT invfresnel, cam, bump; MUL rvec, invfresnel, bump; MAD rvec, rvec, 2, -cam; TEX reflect, rvec, texture[0], CUBE; MAD invfresnel, invfresnel, 0.5, 0.5; LRP result.color.rgb, invfresnel, refract, reflect; END ************** VS caustic: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, state.texgen.object.s; DP3 result.texcoord[0].y, opos, state.texgen.object.t; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS caustic: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP caustic, caustic2; TEX caustic, fragment.texcoord[0], texture[0], 2D; TEX caustic2, fragment.texcoord[0], texture[1], 2D; LRP result.color, program.env[0], caustic2, caustic; END ************** VS causticfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; DP3 result.texcoord[0].x, opos, state.texgen.object.s; DP3 result.texcoord[0].y, opos, state.texgen.object.t; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS causticfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEX result.color, fragment.texcoord[0], texture[0], 2D; END ************** VS lava: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS lava: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse; TEX diffuse, fragment.texcoord[0], texture[0], 2D; MUL diffuse, diffuse, 2; MUL result.color, fragment.color, diffuse; END ************** VS glass: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; PARAM campos = program.env[0]; ATTRIB normal = vertex.normal; MOV result.texcoord[0], vertex.texcoord[0]; SUB result.texcoord[1], campos, opos; MOV result.texcoord[2], normal; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS glass: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; ATTRIB rvec = fragment.texcoord[0]; ATTRIB camvec = fragment.texcoord[1]; ATTRIB normal = fragment.texcoord[2]; TEMP reflect; TEX reflect, rvec, texture[0], CUBE; TEMP invfresnel; DP3 invfresnel.w, camvec, camvec; RSQ invfresnel.w, invfresnel.w; MUL invfresnel.xyz, invfresnel.w, camvec; DP3 invfresnel, invfresnel, normal; MAX invfresnel, invfresnel, 0.70; TEMP col; MUL col, fragment.color, 0.05; LRP col.rgb, invfresnel, col, reflect; MUL col.a, invfresnel, 0.95; TEMP fog; SUB fog, state.fog.params.z, fragment.fogcoord.x; MUL_SAT fog, fog, state.fog.params.w; LRP result.color, fog, col, {0, 0, 0, 1}; END ************** VS glassfast: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS glassfast: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; ATTRIB rvec = fragment.texcoord[0]; TEMP reflect; TEX reflect, rvec, texture[0], CUBE; PARAM invfresnel = 0.75; TEMP col; MUL col, fragment.color, 0.05; LRP col.rgb, invfresnel, col, reflect; MUL col.a, invfresnel, 0.95; TEMP fog; SUB fog, state.fog.params.z, fragment.fogcoord.x; MUL_SAT fog, fog, state.fog.params.w; LRP result.color, fog, col, {0, 0, 0, 1}; END ************** VS grass: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS grass: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse; TEX diffuse, fragment.texcoord[0], texture[0], 2D; MUL diffuse.xyz, diffuse, 2; MUL result.color, fragment.color, diffuse; END ************** VS overbrightdecal: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; MOV result.texcoord[0], vertex.texcoord[0]; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS overbrightdecal: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP diffuse; TEX diffuse, fragment.texcoord[0], texture[0], 2D; LRP result.color, fragment.color.a, diffuse, fragment.color; END ************** VS glsltest: uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water } PS glsltest: varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water } ************** VS glsltest: varying float waterfade; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap #pragma CUBE2_dynlight #pragma CUBE2_water waterfade = gl_Vertex.z*fogselect.y + fogselect.z; } PS glsltest: varying float waterfade; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water gl_FragColor.a = waterfade; } ************** VS glsltest: varying vec3 shadowmaptc; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap shadowmaptc = vec3(gl_TextureMatrix[2] * gl_Vertex); #pragma CUBE2_dynlight #pragma CUBE2_water } PS glsltest: varying vec3 shadowmaptc; uniform sampler2D shadowmap; uniform vec4 shadowmapambient; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light vec3 smvals = texture2D(shadowmap, shadowmaptc.xy).xyz; vec2 smdiff = clamp(smvals.xz - shadowmaptc.zz*smvals.y, 0.0, 1.0); float shadowed = clamp((smdiff.x > 0 ? smvals.y : 0.0) - 8*smdiff.y, 0.0, 1.0); light.rgb -= shadowed*clamp(light.rgb - shadowmapambient.rgb, 0.0, 1.0); #pragma CUBE2_dynlight light light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water } ************** VS glsltest: varying float waterfade; varying vec3 shadowmaptc; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap shadowmaptc = vec3(gl_TextureMatrix[2] * gl_Vertex); #pragma CUBE2_dynlight #pragma CUBE2_water waterfade = gl_Vertex.z*fogselect.y + fogselect.z; } PS glsltest: varying float waterfade; varying vec3 shadowmaptc; uniform sampler2D shadowmap; uniform vec4 shadowmapambient; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light vec3 smvals = texture2D(shadowmap, shadowmaptc.xy).xyz; vec2 smdiff = clamp(smvals.xz - shadowmaptc.zz*smvals.y, 0.0, 1.0); float shadowed = clamp((smdiff.x > 0 ? smvals.y : 0.0) - 8*smdiff.y, 0.0, 1.0); light.rgb -= shadowed*clamp(light.rgb - shadowmapambient.rgb, 0.0, 1.0); #pragma CUBE2_dynlight light light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water gl_FragColor.a = waterfade; } ************** VS glsltest: uniform vec4 dynlight0pos; varying vec3 dynlight0dir; varying vec3 shadowmaptc; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap shadowmaptc = vec3(gl_TextureMatrix[2] * gl_Vertex); #pragma CUBE2_dynlight dynlight0dir = gl_Vertex.xyz*dynlight0pos.w + dynlight0pos.xyz; #pragma CUBE2_water } PS glsltest: uniform vec4 dynlight0color; varying vec3 dynlight0dir; varying vec3 shadowmaptc; uniform sampler2D shadowmap; uniform vec4 shadowmapambient; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light vec3 smvals = texture2D(shadowmap, shadowmaptc.xy).xyz; vec2 smdiff = clamp(smvals.xz - shadowmaptc.zz*smvals.y, 0.0, 1.0); float shadowed = clamp((smdiff.x > 0 ? smvals.y : 0.0) - 8*smdiff.y, 0.0, 1.0); light.rgb -= shadowed*clamp(light.rgb - shadowmapambient.rgb, 0.0, 1.0); #pragma CUBE2_dynlight light light.rgb += dynlight0color.rgb * (1.0 - clamp(dot(dynlight0dir, dynlight0dir), 0.0, 1.0)); light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water } ************** VS glsltest: varying float waterfade; uniform vec4 dynlight0pos; varying vec3 dynlight0dir; varying vec3 shadowmaptc; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap shadowmaptc = vec3(gl_TextureMatrix[2] * gl_Vertex); #pragma CUBE2_dynlight dynlight0dir = gl_Vertex.xyz*dynlight0pos.w + dynlight0pos.xyz; #pragma CUBE2_water waterfade = gl_Vertex.z*fogselect.y + fogselect.z; } PS glsltest: varying float waterfade; uniform vec4 dynlight0color; varying vec3 dynlight0dir; varying vec3 shadowmaptc; uniform sampler2D shadowmap; uniform vec4 shadowmapambient; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light vec3 smvals = texture2D(shadowmap, shadowmaptc.xy).xyz; vec2 smdiff = clamp(smvals.xz - shadowmaptc.zz*smvals.y, 0.0, 1.0); float shadowed = clamp((smdiff.x > 0 ? smvals.y : 0.0) - 8*smdiff.y, 0.0, 1.0); light.rgb -= shadowed*clamp(light.rgb - shadowmapambient.rgb, 0.0, 1.0); #pragma CUBE2_dynlight light light.rgb += dynlight0color.rgb * (1.0 - clamp(dot(dynlight0dir, dynlight0dir), 0.0, 1.0)); light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water gl_FragColor.a = waterfade; } ************** VS glsltest: uniform vec4 dynlight0pos, dynlight1pos; varying vec3 dynlight0dir, dynlight1dir; varying vec3 shadowmaptc; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap shadowmaptc = vec3(gl_TextureMatrix[2] * gl_Vertex); #pragma CUBE2_dynlight dynlight0dir = gl_Vertex.xyz*dynlight0pos.w + dynlight0pos.xyz; dynlight1dir = gl_Vertex.xyz*dynlight1pos.w + dynlight1pos.xyz; #pragma CUBE2_water } PS glsltest: uniform vec4 dynlight0color, dynlight1color; varying vec3 dynlight0dir, dynlight1dir; varying vec3 shadowmaptc; uniform sampler2D shadowmap; uniform vec4 shadowmapambient; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light vec3 smvals = texture2D(shadowmap, shadowmaptc.xy).xyz; vec2 smdiff = clamp(smvals.xz - shadowmaptc.zz*smvals.y, 0.0, 1.0); float shadowed = clamp((smdiff.x > 0 ? smvals.y : 0.0) - 8*smdiff.y, 0.0, 1.0); light.rgb -= shadowed*clamp(light.rgb - shadowmapambient.rgb, 0.0, 1.0); #pragma CUBE2_dynlight light light.rgb += dynlight0color.rgb * (1.0 - clamp(dot(dynlight0dir, dynlight0dir), 0.0, 1.0)); light.rgb += dynlight1color.rgb * (1.0 - clamp(dot(dynlight1dir, dynlight1dir), 0.0, 1.0)); light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water } ************** VS glsltest: varying float waterfade; uniform vec4 dynlight0pos, dynlight1pos; varying vec3 dynlight0dir, dynlight1dir; varying vec3 shadowmaptc; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap shadowmaptc = vec3(gl_TextureMatrix[2] * gl_Vertex); #pragma CUBE2_dynlight dynlight0dir = gl_Vertex.xyz*dynlight0pos.w + dynlight0pos.xyz; dynlight1dir = gl_Vertex.xyz*dynlight1pos.w + dynlight1pos.xyz; #pragma CUBE2_water waterfade = gl_Vertex.z*fogselect.y + fogselect.z; } PS glsltest: varying float waterfade; uniform vec4 dynlight0color, dynlight1color; varying vec3 dynlight0dir, dynlight1dir; varying vec3 shadowmaptc; uniform sampler2D shadowmap; uniform vec4 shadowmapambient; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light vec3 smvals = texture2D(shadowmap, shadowmaptc.xy).xyz; vec2 smdiff = clamp(smvals.xz - shadowmaptc.zz*smvals.y, 0.0, 1.0); float shadowed = clamp((smdiff.x > 0 ? smvals.y : 0.0) - 8*smdiff.y, 0.0, 1.0); light.rgb -= shadowed*clamp(light.rgb - shadowmapambient.rgb, 0.0, 1.0); #pragma CUBE2_dynlight light light.rgb += dynlight0color.rgb * (1.0 - clamp(dot(dynlight0dir, dynlight0dir), 0.0, 1.0)); light.rgb += dynlight1color.rgb * (1.0 - clamp(dot(dynlight1dir, dynlight1dir), 0.0, 1.0)); light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water gl_FragColor.a = waterfade; } ************** VS glsltest: uniform vec4 dynlight0pos, dynlight1pos, dynlight2pos; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir; varying vec3 shadowmaptc; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap shadowmaptc = vec3(gl_TextureMatrix[2] * gl_Vertex); #pragma CUBE2_dynlight dynlight0dir = gl_Vertex.xyz*dynlight0pos.w + dynlight0pos.xyz; dynlight1dir = gl_Vertex.xyz*dynlight1pos.w + dynlight1pos.xyz; dynlight2dir = gl_Vertex.xyz*dynlight2pos.w + dynlight2pos.xyz; #pragma CUBE2_water } PS glsltest: uniform vec4 dynlight0color, dynlight1color, dynlight2color; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir; varying vec3 shadowmaptc; uniform sampler2D shadowmap; uniform vec4 shadowmapambient; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light vec3 smvals = texture2D(shadowmap, shadowmaptc.xy).xyz; vec2 smdiff = clamp(smvals.xz - shadowmaptc.zz*smvals.y, 0.0, 1.0); float shadowed = clamp((smdiff.x > 0 ? smvals.y : 0.0) - 8*smdiff.y, 0.0, 1.0); light.rgb -= shadowed*clamp(light.rgb - shadowmapambient.rgb, 0.0, 1.0); #pragma CUBE2_dynlight light light.rgb += dynlight0color.rgb * (1.0 - clamp(dot(dynlight0dir, dynlight0dir), 0.0, 1.0)); light.rgb += dynlight1color.rgb * (1.0 - clamp(dot(dynlight1dir, dynlight1dir), 0.0, 1.0)); light.rgb += dynlight2color.rgb * (1.0 - clamp(dot(dynlight2dir, dynlight2dir), 0.0, 1.0)); light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water } ************** VS glsltest: varying float waterfade; uniform vec4 dynlight0pos, dynlight1pos, dynlight2pos; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir; varying vec3 shadowmaptc; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap shadowmaptc = vec3(gl_TextureMatrix[2] * gl_Vertex); #pragma CUBE2_dynlight dynlight0dir = gl_Vertex.xyz*dynlight0pos.w + dynlight0pos.xyz; dynlight1dir = gl_Vertex.xyz*dynlight1pos.w + dynlight1pos.xyz; dynlight2dir = gl_Vertex.xyz*dynlight2pos.w + dynlight2pos.xyz; #pragma CUBE2_water waterfade = gl_Vertex.z*fogselect.y + fogselect.z; } PS glsltest: varying float waterfade; uniform vec4 dynlight0color, dynlight1color, dynlight2color; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir; varying vec3 shadowmaptc; uniform sampler2D shadowmap; uniform vec4 shadowmapambient; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light vec3 smvals = texture2D(shadowmap, shadowmaptc.xy).xyz; vec2 smdiff = clamp(smvals.xz - shadowmaptc.zz*smvals.y, 0.0, 1.0); float shadowed = clamp((smdiff.x > 0 ? smvals.y : 0.0) - 8*smdiff.y, 0.0, 1.0); light.rgb -= shadowed*clamp(light.rgb - shadowmapambient.rgb, 0.0, 1.0); #pragma CUBE2_dynlight light light.rgb += dynlight0color.rgb * (1.0 - clamp(dot(dynlight0dir, dynlight0dir), 0.0, 1.0)); light.rgb += dynlight1color.rgb * (1.0 - clamp(dot(dynlight1dir, dynlight1dir), 0.0, 1.0)); light.rgb += dynlight2color.rgb * (1.0 - clamp(dot(dynlight2dir, dynlight2dir), 0.0, 1.0)); light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water gl_FragColor.a = waterfade; } ************** VS glsltest: uniform vec4 dynlight0pos, dynlight1pos, dynlight2pos, dynlight3pos; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir, dynlight3dir; varying vec3 shadowmaptc; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap shadowmaptc = vec3(gl_TextureMatrix[2] * gl_Vertex); #pragma CUBE2_dynlight dynlight0dir = gl_Vertex.xyz*dynlight0pos.w + dynlight0pos.xyz; dynlight1dir = gl_Vertex.xyz*dynlight1pos.w + dynlight1pos.xyz; dynlight2dir = gl_Vertex.xyz*dynlight2pos.w + dynlight2pos.xyz; dynlight3dir = gl_Vertex.xyz*dynlight3pos.w + dynlight3pos.xyz; #pragma CUBE2_water } PS glsltest: uniform vec4 dynlight0color, dynlight1color, dynlight2color, dynlight3color; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir, dynlight3dir; varying vec3 shadowmaptc; uniform sampler2D shadowmap; uniform vec4 shadowmapambient; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light vec3 smvals = texture2D(shadowmap, shadowmaptc.xy).xyz; vec2 smdiff = clamp(smvals.xz - shadowmaptc.zz*smvals.y, 0.0, 1.0); float shadowed = clamp((smdiff.x > 0 ? smvals.y : 0.0) - 8*smdiff.y, 0.0, 1.0); light.rgb -= shadowed*clamp(light.rgb - shadowmapambient.rgb, 0.0, 1.0); #pragma CUBE2_dynlight light light.rgb += dynlight0color.rgb * (1.0 - clamp(dot(dynlight0dir, dynlight0dir), 0.0, 1.0)); light.rgb += dynlight1color.rgb * (1.0 - clamp(dot(dynlight1dir, dynlight1dir), 0.0, 1.0)); light.rgb += dynlight2color.rgb * (1.0 - clamp(dot(dynlight2dir, dynlight2dir), 0.0, 1.0)); light.rgb += dynlight3color.rgb * (1.0 - clamp(dot(dynlight3dir, dynlight3dir), 0.0, 1.0)); light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water } ************** VS glsltest: varying float waterfade; uniform vec4 dynlight0pos, dynlight1pos, dynlight2pos, dynlight3pos; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir, dynlight3dir; varying vec3 shadowmaptc; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap shadowmaptc = vec3(gl_TextureMatrix[2] * gl_Vertex); #pragma CUBE2_dynlight dynlight0dir = gl_Vertex.xyz*dynlight0pos.w + dynlight0pos.xyz; dynlight1dir = gl_Vertex.xyz*dynlight1pos.w + dynlight1pos.xyz; dynlight2dir = gl_Vertex.xyz*dynlight2pos.w + dynlight2pos.xyz; dynlight3dir = gl_Vertex.xyz*dynlight3pos.w + dynlight3pos.xyz; #pragma CUBE2_water waterfade = gl_Vertex.z*fogselect.y + fogselect.z; } PS glsltest: varying float waterfade; uniform vec4 dynlight0color, dynlight1color, dynlight2color, dynlight3color; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir, dynlight3dir; varying vec3 shadowmaptc; uniform sampler2D shadowmap; uniform vec4 shadowmapambient; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light vec3 smvals = texture2D(shadowmap, shadowmaptc.xy).xyz; vec2 smdiff = clamp(smvals.xz - shadowmaptc.zz*smvals.y, 0.0, 1.0); float shadowed = clamp((smdiff.x > 0 ? smvals.y : 0.0) - 8*smdiff.y, 0.0, 1.0); light.rgb -= shadowed*clamp(light.rgb - shadowmapambient.rgb, 0.0, 1.0); #pragma CUBE2_dynlight light light.rgb += dynlight0color.rgb * (1.0 - clamp(dot(dynlight0dir, dynlight0dir), 0.0, 1.0)); light.rgb += dynlight1color.rgb * (1.0 - clamp(dot(dynlight1dir, dynlight1dir), 0.0, 1.0)); light.rgb += dynlight2color.rgb * (1.0 - clamp(dot(dynlight2dir, dynlight2dir), 0.0, 1.0)); light.rgb += dynlight3color.rgb * (1.0 - clamp(dot(dynlight3dir, dynlight3dir), 0.0, 1.0)); light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water gl_FragColor.a = waterfade; } ************** VS glsltest: uniform vec4 dynlight0pos; varying vec3 dynlight0dir; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap #pragma CUBE2_dynlight dynlight0dir = gl_Vertex.xyz*dynlight0pos.w + dynlight0pos.xyz; #pragma CUBE2_water } PS glsltest: uniform vec4 dynlight0color; varying vec3 dynlight0dir; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light light.rgb += dynlight0color.rgb * (1.0 - clamp(dot(dynlight0dir, dynlight0dir), 0.0, 1.0)); light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water } ************** VS glsltest: varying float waterfade; uniform vec4 dynlight0pos; varying vec3 dynlight0dir; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap #pragma CUBE2_dynlight dynlight0dir = gl_Vertex.xyz*dynlight0pos.w + dynlight0pos.xyz; #pragma CUBE2_water waterfade = gl_Vertex.z*fogselect.y + fogselect.z; } PS glsltest: varying float waterfade; uniform vec4 dynlight0color; varying vec3 dynlight0dir; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light light.rgb += dynlight0color.rgb * (1.0 - clamp(dot(dynlight0dir, dynlight0dir), 0.0, 1.0)); light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water gl_FragColor.a = waterfade; } ************** VS glsltest: uniform vec4 dynlight0pos, dynlight1pos; varying vec3 dynlight0dir, dynlight1dir; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap #pragma CUBE2_dynlight dynlight0dir = gl_Vertex.xyz*dynlight0pos.w + dynlight0pos.xyz; dynlight1dir = gl_Vertex.xyz*dynlight1pos.w + dynlight1pos.xyz; #pragma CUBE2_water } PS glsltest: uniform vec4 dynlight0color, dynlight1color; varying vec3 dynlight0dir, dynlight1dir; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light light.rgb += dynlight0color.rgb * (1.0 - clamp(dot(dynlight0dir, dynlight0dir), 0.0, 1.0)); light.rgb += dynlight1color.rgb * (1.0 - clamp(dot(dynlight1dir, dynlight1dir), 0.0, 1.0)); light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water } ************** VS glsltest: varying float waterfade; uniform vec4 dynlight0pos, dynlight1pos; varying vec3 dynlight0dir, dynlight1dir; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap #pragma CUBE2_dynlight dynlight0dir = gl_Vertex.xyz*dynlight0pos.w + dynlight0pos.xyz; dynlight1dir = gl_Vertex.xyz*dynlight1pos.w + dynlight1pos.xyz; #pragma CUBE2_water waterfade = gl_Vertex.z*fogselect.y + fogselect.z; } PS glsltest: varying float waterfade; uniform vec4 dynlight0color, dynlight1color; varying vec3 dynlight0dir, dynlight1dir; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light light.rgb += dynlight0color.rgb * (1.0 - clamp(dot(dynlight0dir, dynlight0dir), 0.0, 1.0)); light.rgb += dynlight1color.rgb * (1.0 - clamp(dot(dynlight1dir, dynlight1dir), 0.0, 1.0)); light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water gl_FragColor.a = waterfade; } ************** VS glsltest: uniform vec4 dynlight0pos, dynlight1pos, dynlight2pos; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap #pragma CUBE2_dynlight dynlight0dir = gl_Vertex.xyz*dynlight0pos.w + dynlight0pos.xyz; dynlight1dir = gl_Vertex.xyz*dynlight1pos.w + dynlight1pos.xyz; dynlight2dir = gl_Vertex.xyz*dynlight2pos.w + dynlight2pos.xyz; #pragma CUBE2_water } PS glsltest: uniform vec4 dynlight0color, dynlight1color, dynlight2color; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light light.rgb += dynlight0color.rgb * (1.0 - clamp(dot(dynlight0dir, dynlight0dir), 0.0, 1.0)); light.rgb += dynlight1color.rgb * (1.0 - clamp(dot(dynlight1dir, dynlight1dir), 0.0, 1.0)); light.rgb += dynlight2color.rgb * (1.0 - clamp(dot(dynlight2dir, dynlight2dir), 0.0, 1.0)); light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water } ************** VS glsltest: varying float waterfade; uniform vec4 dynlight0pos, dynlight1pos, dynlight2pos; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap #pragma CUBE2_dynlight dynlight0dir = gl_Vertex.xyz*dynlight0pos.w + dynlight0pos.xyz; dynlight1dir = gl_Vertex.xyz*dynlight1pos.w + dynlight1pos.xyz; dynlight2dir = gl_Vertex.xyz*dynlight2pos.w + dynlight2pos.xyz; #pragma CUBE2_water waterfade = gl_Vertex.z*fogselect.y + fogselect.z; } PS glsltest: varying float waterfade; uniform vec4 dynlight0color, dynlight1color, dynlight2color; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light light.rgb += dynlight0color.rgb * (1.0 - clamp(dot(dynlight0dir, dynlight0dir), 0.0, 1.0)); light.rgb += dynlight1color.rgb * (1.0 - clamp(dot(dynlight1dir, dynlight1dir), 0.0, 1.0)); light.rgb += dynlight2color.rgb * (1.0 - clamp(dot(dynlight2dir, dynlight2dir), 0.0, 1.0)); light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water gl_FragColor.a = waterfade; } ************** VS glsltest: uniform vec4 dynlight0pos, dynlight1pos, dynlight2pos, dynlight3pos; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir, dynlight3dir; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap #pragma CUBE2_dynlight dynlight0dir = gl_Vertex.xyz*dynlight0pos.w + dynlight0pos.xyz; dynlight1dir = gl_Vertex.xyz*dynlight1pos.w + dynlight1pos.xyz; dynlight2dir = gl_Vertex.xyz*dynlight2pos.w + dynlight2pos.xyz; dynlight3dir = gl_Vertex.xyz*dynlight3pos.w + dynlight3pos.xyz; #pragma CUBE2_water } PS glsltest: uniform vec4 dynlight0color, dynlight1color, dynlight2color, dynlight3color; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir, dynlight3dir; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light light.rgb += dynlight0color.rgb * (1.0 - clamp(dot(dynlight0dir, dynlight0dir), 0.0, 1.0)); light.rgb += dynlight1color.rgb * (1.0 - clamp(dot(dynlight1dir, dynlight1dir), 0.0, 1.0)); light.rgb += dynlight2color.rgb * (1.0 - clamp(dot(dynlight2dir, dynlight2dir), 0.0, 1.0)); light.rgb += dynlight3color.rgb * (1.0 - clamp(dot(dynlight3dir, dynlight3dir), 0.0, 1.0)); light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water } ************** VS glsltest: varying float waterfade; uniform vec4 dynlight0pos, dynlight1pos, dynlight2pos, dynlight3pos; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir, dynlight3dir; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap #pragma CUBE2_dynlight dynlight0dir = gl_Vertex.xyz*dynlight0pos.w + dynlight0pos.xyz; dynlight1dir = gl_Vertex.xyz*dynlight1pos.w + dynlight1pos.xyz; dynlight2dir = gl_Vertex.xyz*dynlight2pos.w + dynlight2pos.xyz; dynlight3dir = gl_Vertex.xyz*dynlight3pos.w + dynlight3pos.xyz; #pragma CUBE2_water waterfade = gl_Vertex.z*fogselect.y + fogselect.z; } PS glsltest: varying float waterfade; uniform vec4 dynlight0color, dynlight1color, dynlight2color, dynlight3color; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir, dynlight3dir; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light light.rgb += dynlight0color.rgb * (1.0 - clamp(dot(dynlight0dir, dynlight0dir), 0.0, 1.0)); light.rgb += dynlight1color.rgb * (1.0 - clamp(dot(dynlight1dir, dynlight1dir), 0.0, 1.0)); light.rgb += dynlight2color.rgb * (1.0 - clamp(dot(dynlight2dir, dynlight2dir), 0.0, 1.0)); light.rgb += dynlight3color.rgb * (1.0 - clamp(dot(dynlight3dir, dynlight3dir), 0.0, 1.0)); light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water gl_FragColor.a = waterfade; } ************** VS glsltest: uniform vec4 dynlight0pos, dynlight1pos, dynlight2pos, dynlight3pos, dynlight4pos; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir, dynlight3dir, dynlight4dir; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap #pragma CUBE2_dynlight dynlight0dir = gl_Vertex.xyz*dynlight0pos.w + dynlight0pos.xyz; dynlight1dir = gl_Vertex.xyz*dynlight1pos.w + dynlight1pos.xyz; dynlight2dir = gl_Vertex.xyz*dynlight2pos.w + dynlight2pos.xyz; dynlight3dir = gl_Vertex.xyz*dynlight3pos.w + dynlight3pos.xyz; dynlight4dir = gl_Vertex.xyz*dynlight4pos.w + dynlight4pos.xyz; #pragma CUBE2_water } PS glsltest: uniform vec4 dynlight0color, dynlight1color, dynlight2color, dynlight3color, dynlight4color; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir, dynlight3dir, dynlight4dir; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light light.rgb += dynlight0color.rgb * (1.0 - clamp(dot(dynlight0dir, dynlight0dir), 0.0, 1.0)); light.rgb += dynlight1color.rgb * (1.0 - clamp(dot(dynlight1dir, dynlight1dir), 0.0, 1.0)); light.rgb += dynlight2color.rgb * (1.0 - clamp(dot(dynlight2dir, dynlight2dir), 0.0, 1.0)); light.rgb += dynlight3color.rgb * (1.0 - clamp(dot(dynlight3dir, dynlight3dir), 0.0, 1.0)); light.rgb += dynlight4color.rgb * (1.0 - clamp(dot(dynlight4dir, dynlight4dir), 0.0, 1.0)); light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water } ************** VS glsltest: varying float waterfade; uniform vec4 dynlight0pos, dynlight1pos, dynlight2pos, dynlight3pos, dynlight4pos; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir, dynlight3dir, dynlight4dir; uniform vec4 texgenS, texgenT, camera, orienttangent, orientbinormal, fogselect, fogplane; varying vec3 camvts; void main(void) { gl_Position = ftransform(); gl_TexCoord[0].st = vec2(dot(gl_Vertex.xyz, texgenS.xyz), dot(gl_Vertex.xyz, texgenT.xyz)); gl_TexCoord[1].st = vec4(gl_TextureMatrix[1] * gl_MultiTexCoord1).st; vec4 wfogplane = vec4(gl_ModelViewMatrix[0].z, gl_ModelViewMatrix[1].z, gl_ModelViewMatrix[2].z, gl_ModelViewMatrix[3].z) * fogselect + fogplane; gl_FogFragCoord = dot(-gl_Vertex, wfogplane); vec3 x, y, tangent, binormal, camv; vec3 normal = gl_Color.xyz * 2.0 - 1.0; x = dot(normal, orienttangent.xyz) * normal; tangent = orienttangent.xyz - x; x = dot(tangent, orientbinormal.xyz) * tangent; y = dot(normal, orientbinormal.xyz) * normal; binormal = (orientbinormal.xyz - x) - y; camv = camera.xyz - gl_Vertex.xyz; camvts = vec3(dot(camv, tangent), dot(camv, binormal), dot(camv, normal)); #pragma CUBE2_shadowmap #pragma CUBE2_dynlight dynlight0dir = gl_Vertex.xyz*dynlight0pos.w + dynlight0pos.xyz; dynlight1dir = gl_Vertex.xyz*dynlight1pos.w + dynlight1pos.xyz; dynlight2dir = gl_Vertex.xyz*dynlight2pos.w + dynlight2pos.xyz; dynlight3dir = gl_Vertex.xyz*dynlight3pos.w + dynlight3pos.xyz; dynlight4dir = gl_Vertex.xyz*dynlight4pos.w + dynlight4pos.xyz; #pragma CUBE2_water waterfade = gl_Vertex.z*fogselect.y + fogselect.z; } PS glsltest: varying float waterfade; uniform vec4 dynlight0color, dynlight1color, dynlight2color, dynlight3color, dynlight4color; varying vec3 dynlight0dir, dynlight1dir, dynlight2dir, dynlight3dir, dynlight4dir; varying vec3 camvts; uniform vec4 ambient, bumpscale; uniform sampler2D diffusemap, lmcolor, lmdir, normalmap; void main(void) { vec4 lmc = texture2D(lmcolor, gl_TexCoord[1].st); vec3 lmlv = texture2D(lmdir, gl_TexCoord[1].st).xyz * 2.0 - 1.0; vec3 camn = normalize(camvts); float steps = mix(5.0, 20.0, camn.z); float dh = 1.0 / steps; vec2 duv = -camn.xy*bumpscale.x / (camn.z*steps); float height = 1.0; vec2 dtc = gl_TexCoord[0].st + duv*bumpscale.y; vec4 bump = texture2D(normalmap, dtc); while(bump.w < height) { height -= dh; dtc += duv; bump = texture2D(normalmap, dtc); } vec4 diffuse = texture2D(diffusemap, dtc) * 2.0; vec3 normal = bump.xyz * 2.0 - 1.0; float intensity = dot(normal, lmlv); if(intensity > 0.0) { steps = mix(10.0, 20.0, lmlv.z); dh = 1.0 / steps; duv = lmlv.xy*bumpscale.x / (lmlv.z*steps); height = bump.w + dh*0.1; while(bump.w < height && height < 1.0) { height += dh; dtc += duv; bump = texture2D(normalmap, dtc); } if(bump.w >= height) intensity = 0.0; } vec4 light = lmc * clamp(intensity, 0.0, 1.0); #pragma CUBE2_shadowmap light #pragma CUBE2_dynlight light light.rgb += dynlight0color.rgb * (1.0 - clamp(dot(dynlight0dir, dynlight0dir), 0.0, 1.0)); light.rgb += dynlight1color.rgb * (1.0 - clamp(dot(dynlight1dir, dynlight1dir), 0.0, 1.0)); light.rgb += dynlight2color.rgb * (1.0 - clamp(dot(dynlight2dir, dynlight2dir), 0.0, 1.0)); light.rgb += dynlight3color.rgb * (1.0 - clamp(dot(dynlight3dir, dynlight3dir), 0.0, 1.0)); light.rgb += dynlight4color.rgb * (1.0 - clamp(dot(dynlight4dir, dynlight4dir), 0.0, 1.0)); light = max(light, ambient); gl_FragColor = diffuse * light; float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FragColor.rgb = mix(vec3(gl_Fog.color), gl_FragColor.rgb, clamp(fog, 0.0, 1.0)); #pragma CUBE2_water gl_FragColor.a = waterfade; } ************** init: world init: sound init: cfg init: localconnect init: mainloop read map packages/base/metl4.ogz (0.1 seconds) Mining Station by metlslime VS chaingundisplay: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; PARAM seconds = program.env[5]; MAD result.texcoord[0], seconds, 0.1, vertex.texcoord[0]; MAD result.texcoord[1], seconds, { -0.2, 0, 0, 0 }, vertex.texcoord[0]; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS chaingundisplay: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP dtc, diffuse, color, glow, masks; TEX dtc, fragment.texcoord[0], texture[0], 2D; MAD dtc.xy, dtc.yzyz, 0.2, fragment.texcoord[1]; TEX diffuse, dtc, texture[0], 2D; MOV result.color.rgb, diffuse; MUL result.color.a, diffuse, fragment.color; END ************** VS rocketpsource: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; PARAM seconds = program.env[5]; MAD result.texcoord[0], seconds, -0.05, vertex.texcoord[0]; MAD result.texcoord[1], seconds, { 0.05, 0.05, 0, 0 }, vertex.texcoord[0]; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS rocketpsource: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP dtc, diffuse; TEX dtc, fragment.texcoord[0], texture[0], 2D; MAD dtc.xy, dtc.xzxz, 0.1, fragment.texcoord[1]; TEX diffuse, dtc, texture[0], 2D; MOV result.color.rgb, diffuse; MUL result.color.a, diffuse.a, fragment.color.a; END ************** VS riflenebula: !!ARBvp1.0 OPTION ARB_position_invariant; ATTRIB opos = vertex.position; PARAM seconds = program.env[5]; MAD result.texcoord[0], seconds, 0.05, vertex.texcoord[0]; MAD result.texcoord[1], seconds, { 0.025, 0.1, 0, 0 }, vertex.texcoord[0]; MOV result.color, vertex.color; TEMP fogplane; MAD fogplane, state.matrix.modelview.row[2], program.env[8].x, program.env[9]; DP4 result.fogcoord, -opos, fogplane; END PS riflenebula: !!ARBfp1.0 OPTION ARB_precision_hint_fastest; OPTION ARB_fog_linear; TEMP dtc, diffuse; TEX dtc, fragment.texcoord[0], texture[0], 2D; MAD dtc.xy, dtc.xzxz, 0.1, fragment.texcoord[1]; TEX diffuse, dtc, texture[0], 2D; MOV result.color.rgb, diffuse; MUL result.color.a, diffuse.a, fragment.color.a; END ************** game mode is ffa/default