| // |
| // Vertex shader for procedural bumps |
| // |
| // Authors: Randi Rost, John Kessenich |
| // |
| // Copyright (c) 2002-2006 3Dlabs Inc. Ltd. |
| // |
| // See 3Dlabs-License.txt for license information |
| // |
| |
| varying vec3 LightDir; |
| varying vec3 EyeDir; |
| |
| uniform vec3 LightPosition; |
| |
| attribute vec3 Tangent; |
| |
| void main() |
| { |
| EyeDir = vec3(gl_ModelViewMatrix * gl_Vertex); |
| gl_Position = ftransform(); |
| gl_TexCoord[0] = gl_MultiTexCoord0; |
| |
| vec3 n = normalize(gl_NormalMatrix * gl_Normal); |
| vec3 t = normalize(gl_NormalMatrix * Tangent); |
| vec3 b = cross(n, t); |
| |
| vec3 v; |
| v.x = dot(LightPosition, t); |
| v.y = dot(LightPosition, b); |
| v.z = dot(LightPosition, n); |
| LightDir = normalize(v); |
| |
| v.x = dot(EyeDir, t); |
| v.y = dot(EyeDir, b); |
| v.z = dot(EyeDir, n); |
| EyeDir = normalize(v); |
| } |