gallium: add target-helpers/wrap_screen.c to C_SOURCES
[mesa/mesa-lb.git] / progs / glsl / CH06-brick.vert
blobe95e6f42f0b8e4300dbdb8212a4ed88f09de6bc4
1 //
2 // Vertex shader for procedural bricks
3 //
4 // Authors: Dave Baldwin, Steve Koren, Randi Rost
5 //          based on a shader by Darwyn Peachey
6 //
7 // Copyright (c) 2002-2006 3Dlabs Inc. Ltd. 
8 //
9 // See 3Dlabs-License.txt for license information
12 uniform vec3 LightPosition;
14 const float SpecularContribution = 0.3;
15 const float DiffuseContribution  = 1.0 - SpecularContribution;
17 varying float LightIntensity;
18 varying vec2  MCposition;
20 void main()
22     vec3 ecPosition = vec3(gl_ModelViewMatrix * gl_Vertex);
23     vec3 tnorm      = normalize(gl_NormalMatrix * gl_Normal);
24     vec3 lightVec   = normalize(LightPosition - ecPosition);
25     vec3 reflectVec = reflect(-lightVec, tnorm);
26     vec3 viewVec    = normalize(-ecPosition);
27     float diffuse   = max(dot(lightVec, tnorm), 0.0);
28     float spec      = 0.0;
30     if (diffuse > 0.0)
31     {
32         spec = max(dot(reflectVec, viewVec), 0.0);
33         spec = pow(spec, 16.0);
34     }
36     LightIntensity  = DiffuseContribution * diffuse +
37                       SpecularContribution * spec;
39     MCposition      = gl_Vertex.xy;
40     gl_Position     = ftransform();