//////////////////////////////////////////////////////////////// // Vertex shader for procedural bumps // Authors: Randi Rost, John Kessenich // Copyright (c) 2002-2005 3Dlabs Inc. Ltd. // See 3Dlabs-License.txt for license information varying vec3 LightDir; varying vec3 EyeDir; uniform vec3 LightPosition; attribute vec3 Tangent; void main(void) { EyeDir = vec3 (gl_ModelViewMatrix * gl_Vertex); gl_Position = ftransform(); gl_TexCoord[0] = gl_MultiTexCoord0; // convert normal and tangent (from main program) into eye space vec3 n = normalize(gl_NormalMatrix * gl_Normal); vec3 t = normalize(gl_NormalMatrix * Tangent); // compute b in eye space vec3 b = cross(n, t); // convert light direction from eye space to tangent space vec3 v; v.x = dot(LightPosition, t); v.y = dot(LightPosition, b); v.z = dot(LightPosition, n); LightDir = normalize(v); // convert eye direction from eye space to tangent space v.x = dot(EyeDir, t); v.y = dot(EyeDir, b); v.z = dot(EyeDir, n); EyeDir = normalize(v); }