uniform vec4 DiffuseColor; uniform vec4 AmbientColor; uniform float LightIntensity; uniform sampler2D MainTexture; varying vec3 Normal; varying vec3 LightVector; varying vec3 CameraVector; varying vec2 Texcoord; void main(void) { vec4 TextureContrib = texture2D(MainTexture, Texcoord); vec4 DiffuseContrib = clamp(DiffuseColor * dot(LightVector, Normal), 0.0, 1.0); float SpecPower = 8.0; float SpecMult = 2.0; vec3 reflect_vec = reflect(CameraVector, -Normal); float Temp = max(dot(reflect_vec, LightVector), 0.0); float SpecContrib = pow(Temp, SpecPower); SpecContrib = SpecMult * clamp(SpecContrib, 0.0, 0.95); gl_FragColor = TextureContrib * LightIntensity * (AmbientColor + DiffuseContrib + SpecContrib); }