varying vec3 normal, vert_pos; varying vec4 diffuse, ambient, specular; // pass this precalculated colors to frag shader void main() { // pre-calc the colors diffuse = gl_FrontMaterial.diffuse * gl_LightSource[0].diffuse; ambient = gl_FrontMaterial.ambient * gl_LightSource[0].ambient; specular = gl_FrontMaterial.specular * gl_LightSource[0].specular; normal = gl_NormalMatrix * gl_Normal; vert_pos = (gl_ModelViewMatrix * gl_Vertex).xyz; // vert pos in world space gl_TexCoord[0] = gl_MultiTexCoord0; gl_Position = ftransform(); }