1//
2// Vertex shader for drawing the Mandelbrot set
3//
4// Authors: Dave Baldwin, Steve Koren, Randi Rost
5//          based on a shader by Michael Rivero
6//
7// Copyright (c) 2002-2005: 3Dlabs, Inc.
8//
9// See 3Dlabs-License.txt for license information
10//
11
12uniform vec3 LightPosition;
13uniform float SpecularContribution;
14uniform float DiffuseContribution;
15uniform float Shininess;
16
17varying float LightIntensity;
18varying vec3  Position;
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 spec      = max(dot(reflectVec, viewVec), 0.0);
28    spec            = pow(spec, Shininess);
29    LightIntensity  = DiffuseContribution * 
30                          max(dot(lightVec, tnorm), 0.0) +
31                          SpecularContribution * spec;
32    Position        = vec3(gl_MultiTexCoord0 - 0.5) * 5.0;
33    gl_Position     = ftransform();
34
35}