View Full Version : ARB_fragment_program view vector

04-14-2005, 08:15 AM
Does anyone know how to get/calculate the view vector in ARB_fragment_program? I am trying to implement phong with a fragment program. So I need to get/calculate the view vector in order to computer the specular component.

Or does any know how to implement phong in ARB_fragment_program?

Java Cool Dude
04-14-2005, 08:52 AM
Multiplying the inverse modelview matrix by {0.0,0.0,0.0,1.0} will give you the camera position.
You can pass your vertex position to the fragment processor through the vertex program and the rest is basic math :)

04-14-2005, 08:56 AM
Thx for the help.

You can pass your vertex position to the fragment processor through the vertex program How do I do this?

Java Cool Dude
04-14-2005, 09:00 AM
Use one of the spare texcoord?
I usually use the 4th (texcoord[3]) since I reserve the first through the 3rd are for texture coordinates, binomals and tangent components...

04-14-2005, 09:13 AM
This is what I use for my view direction:

SUB result.texcoord[1], mvit[3], vertex.position;That's in the vertex program, then I normalize it in the fragment program (mvit is the inverse transpose of the modelview matrix BTW).

04-14-2005, 09:25 AM
Vertices are in EYE space after transformation through the modelview matrix it should be clear that the vertex coordinate for any vertex location expressed as a vector is the view vector (you may have to normalize or negate depending on your math).

object_space_vertex * modelview_matrix = eye_space_vertex = unnormalized_view_vector

Now if you have the object space view vector going in from the application you'd want to transform through inverse modelview (just because it's a vector) but that would be an expensive contortion for no reason.