!!ARBfp1.0 TEMP H, L, N, V, attenuationxy, attenuationz, color, diffuse, dot, specular, tmp; DP3 L.x, fragment.texcoord[4], fragment.texcoord[4]; RSQ L.x, L.x; MUL L.xyz, L.x, fragment.texcoord[4]; DP3 V.x, fragment.texcoord[5], fragment.texcoord[5]; RSQ V.x, V.x; MUL V.xyz, V.x, fragment.texcoord[5]; ADD tmp, L, V; DP3 H.x, tmp, tmp; RSQ H.x, H.x; MUL H.xyz, H.x, tmp; TEX tmp.xyz, fragment.texcoord[1], texture[1], 2D; MAD tmp.xyz, tmp, 2.0, -1.0; DP3 N.x, tmp, tmp; RSQ N.x, N.x; MUL N.xyz, N.x, tmp; DP3_SAT dot.x, N, L; MUL dot.xyz, program.local[0], dot.x; TEX diffuse.xyz, fragment.texcoord[0], texture[0], 2D; DP3_SAT tmp.x, N, H; POW tmp.x, tmp.x, program.local[2].x; TEX specular.xyz, fragment.texcoord[2], texture[2], 2D; MUL specular.xyz, specular, program.local[0]; MUL specular.xyz, specular, tmp.x; TEX attenuationxy.xyz, fragment.texcoord[3], texture[3], 2D; MOV tmp.x, fragment.texcoord[3].z; MOV tmp.y, 0; TEX attenuationz.xyz, tmp, texture[4], 2D; MOV color, diffuse; MUL color.xyz, color, dot; ADD color.xyz, color, specular; MUL color.xyz, color, attenuationxy; MUL color.xyz, color, attenuationz; MUL color.xyz, color, program.local[1].x; # FIXME: MUL color.xyz, color, fragment.color; MOV result.color, color; END