132001f49Smrg//
232001f49Smrg// Vertex shader for procedural bumps
332001f49Smrg//
432001f49Smrg// Authors: Randi Rost, John Kessenich
532001f49Smrg//
632001f49Smrg// Copyright (c) 2002-2006 3Dlabs Inc. Ltd. 
732001f49Smrg//
832001f49Smrg// See 3Dlabs-License.txt for license information
932001f49Smrg//
1032001f49Smrg
1132001f49Smrgvarying vec3 LightDir;
1232001f49Smrgvarying vec3 EyeDir;
1332001f49Smrg
1432001f49Smrguniform vec3 LightPosition;
1532001f49Smrg
1632001f49Smrgattribute vec3 Tangent;
1732001f49Smrg
1832001f49Smrgvoid main() 
1932001f49Smrg{
2032001f49Smrg    EyeDir         = vec3(gl_ModelViewMatrix * gl_Vertex);
2132001f49Smrg    gl_Position    = ftransform();
2232001f49Smrg    gl_TexCoord[0] = gl_MultiTexCoord0;
2332001f49Smrg
2432001f49Smrg    vec3 n = normalize(gl_NormalMatrix * gl_Normal);
2532001f49Smrg    vec3 t = normalize(gl_NormalMatrix * Tangent);
2632001f49Smrg    vec3 b = cross(n, t);
2732001f49Smrg
2832001f49Smrg    vec3 v;
2932001f49Smrg    v.x = dot(LightPosition, t);
3032001f49Smrg    v.y = dot(LightPosition, b);
3132001f49Smrg    v.z = dot(LightPosition, n);
3232001f49Smrg    LightDir = normalize(v);
3332001f49Smrg
3432001f49Smrg    v.x = dot(EyeDir, t);
3532001f49Smrg    v.y = dot(EyeDir, b);
3632001f49Smrg    v.z = dot(EyeDir, n);
3732001f49Smrg    EyeDir = normalize(v);
3832001f49Smrg}
39