
i
i
i
i
i
i
i
i
378 14. High-Quality 3D with OpenGL 2
// Vertex Shader - Bump mapping
//
// These two vectors pass the direction from vertex to light
varying vec3 LightDir;
// and viewpoint (IN A COORD REFERENCE FRAME of the polygon!!!)
varying vec3 EyeDir;
// this passed surface texture coords to fragment shader
varying vec2 TexCoord;
attribute vec3 Tangent; // tangent vector from application program
void main(void) {
// do the usual stuff
EyeDir = vec3 (gl_ModelViewMatrix
*
gl_Vertex);
gl_Position = ftransform();
gl_FrontColor=gl_Color;
// pass on texture coords to fragment shader
TexCoord = gl_MultiTexCoord0.st;
// Get normal, tangent and third vector to form a curviliner ...