!!VP1.0 # c[0]..c[3] contains the concatenation of the modelview and projection matrices. # c[4]..c[7] contains the inverse transpose of the modelview # c[15] contains the eye position in object space # c[16] contains the light direction in object space # c[17] contains H, the normalized sum of the eye and light direction # c[20] contains the light color * object color # c[32] contains the ambient light color * object color # c[33] contains the haze color # c[40] contains (0, 1, 0, specPower) # v[OPOS] contains the per-vertex position # v[NRML] contains the per-vertex normal # v[TEX0] contains the per-vertex texture coordinate 0 # o[HPOS] output register for homogeneous position # o[TEX0] output register for texture coordinate 0 # o[COL0] output register for primary color # R0...R11 temporary registers # Transform the vertex by the modelview matrix DP4 R1.x, c[0], v[OPOS]; DP4 R1.y, c[1], v[OPOS]; DP4 R1.z, c[2], v[OPOS]; DP4 R1.w, c[3], v[OPOS]; # Compute the diffuse light component DP3 R2, v[NRML], c[16]; # Clamp the diffuse component to zero MAX R2.x, R2, c[40].xxxx; # Get the vector from the eye to the vertex ADD R4, c[15], -v[OPOS]; # Normalize it DP3 R0.w, R4, R4; RSQ R0.w, R0.w; MUL R4.xyz, R4, R0.w; # Haze DP3 R2.y, v[NRML], R4; ADD R2.y, c[40].y, -R2.y; # MUL R2.y, R2.x, R2.y; MUL o[FOGC].x, R2.x, R2.y; # Output the texture MOV o[TEX0], v[TEX0]; # Output the primary color MOV R0, c[32]; MAD o[COL0], c[20], R2.xxxx, R0; # MUL o[COL1], R2.y, c[33]; # Output the vertex MOV o[HPOS], R1; END