blob: e95e6f42f0b8e4300dbdb8212a4ed88f09de6bc4 [file] [log] [blame]
Brian2ccd2642007-01-15 17:27:24 -07001//
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
10//
11
12uniform vec3 LightPosition;
13
14const float SpecularContribution = 0.3;
15const float DiffuseContribution = 1.0 - SpecularContribution;
16
17varying float LightIntensity;
18varying vec2 MCposition;
19
20void main()
21{
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;
29
30 if (diffuse > 0.0)
31 {
32 spec = max(dot(reflectVec, viewVec), 0.0);
33 spec = pow(spec, 16.0);
34 }
35
36 LightIntensity = DiffuseContribution * diffuse +
37 SpecularContribution * spec;
38
39 MCposition = gl_Vertex.xy;
40 gl_Position = ftransform();
41}