!!ARBvp1.0
#
# Fragment program to ...
#
# Orion Sky Lawlor, olawlor@acm.org, 2005/2/7 (Public Domain)
#

# Compute clip coordinates by the multiplying by modelview & projection matrix 
PARAM  mvp[4]	    = { state.matrix.mvp };
# Map vertex to clip coordinates, by multiplying by mvp matrix:
DP4   result.position.x, mvp[0], vertex.position; 
DP4   result.position.y, mvp[1], vertex.position;
DP4   result.position.z, mvp[2], vertex.position;
DP4   result.position.w, mvp[3], vertex.position;

# Compute world position of vertex by multiplying by modelview
PARAM  mv[4]	    = { state.matrix.modelview };
TEMP  world; # Location of vertex in world coordinates
DP4   world.x, mv[0], vertex.position; 
DP4   world.y, mv[1], vertex.position;
DP4   world.z, mv[2], vertex.position;
MOV   world.w, {1,1,1,1};

# Compute world normal of vertex by multiplying by modelview inverse transpose
PARAM  mvi[4]	    = { state.matrix.modelview.invtrans};
TEMP worldN;
DP4   worldN.x, mvi[0], vertex.normal; 
DP4   worldN.y, mvi[1], vertex.normal;
DP4   worldN.z, mvi[2], vertex.normal;
MOV   worldN.w, {1,1,1,0};
TEMP L;
DP4   L.w,worldN,worldN; # Normalize
RSQ   L,L.w;
MUL   worldN,worldN,L;

MOV result.texcoord[3],0.1;
MOV result.texcoord[4],world; # world-space position
MOV result.texcoord[5],worldN; # world-space normal

END
