Shure! Though it is just a simple light shader from the GLSL Orange Book.

Here’s the vertex shader:

```
#version 120
#extension GL_ARB_texture_rectangle : enable
#extension GL_EXT_gpu_shader4 : enable
varying float LightIntensity;
uniform vec3 LightPosition = vec3(0.0, 0.0, 4.0);
uniform float specSharp = 16.0;
const float specularContribution = 1.0;
const float diffuseContribution = 4.0 - specularContribution;
void main() {
vec3 ecPosition = vec3(gl_ModelViewMatrix * gl_Vertex); //eye coordinates of the vertex
vec3 tnorm = normalize(gl_NormalMatrix * gl_Normal); //normalized normal in eye coordinates
vec3 lightVec = normalize(LightPosition - ecPosition); //vector from the object to the light source
vec3 reflectVec = reflect(-lightVec, tnorm); //reflection vector of light in respect of normal
vec3 viewVec = normalize(-ecPosition); //vector pointing to the viewer
float spec = clamp(dot(reflectVec, viewVec), 0.0, 2.0); //specular light value
spec = pow(spec, specSharp);
float diffuse = max(dot(lightVec, tnorm), 0.0); //diffuse light value. If angle > 90º the value is clamped to 0.0
LightIntensity = diffuseContribution * diffuse + specularContribution * spec; //resulting light intensity
}
```

in the frag shader you just have to multiply the gl_color for the varying variable LightIntensity:

```
gl_FragColor = gl_Color * LightIntensity;
```

Hope this helped!

Federico