1//
2// Vertex shader for procedural bumps
3//
4// Authors: Randi Rost, John Kessenich
5//
6// Copyright (c) 2002-2006 3Dlabs Inc. Ltd. 
7//
8// See 3Dlabs-License.txt for license information
9//
10
11varying vec3 LightDir;
12varying vec3 EyeDir;
13
14uniform vec3 LightPosition;
15
16attribute vec3 Tangent;
17
18void main() 
19{
20    EyeDir         = vec3(gl_ModelViewMatrix * gl_Vertex);
21    gl_Position    = ftransform();
22    gl_TexCoord[0] = gl_MultiTexCoord0;
23
24    vec3 n = normalize(gl_NormalMatrix * gl_Normal);
25    vec3 t = normalize(gl_NormalMatrix * Tangent);
26    vec3 b = cross(n, t);
27
28    vec3 v;
29    v.x = dot(LightPosition, t);
30    v.y = dot(LightPosition, b);
31    v.z = dot(LightPosition, n);
32    LightDir = normalize(v);
33
34    v.x = dot(EyeDir, t);
35    v.y = dot(EyeDir, b);
36    v.z = dot(EyeDir, n);
37    EyeDir = normalize(v);
38}
39