Luminosity Map

Per Textur wird das Eigenleuchten eines Objektes bestimmt.

Screenshot:

Vertex Shader:

uniform vec3 LightPos;
varying float LightIntensity;
varying vec2 UVCoord;

vec3  Normal;

void main(){
  gl_Position    = ftransform();
  Normal         = normalize(gl_NormalMatrix * gl_Normal);
  LightIntensity = max(dot(normalize(LightPos - gl_Position.xyz), Normal), 0.0);
  UVCoord 		   = gl_MultiTexCoord0.st;
}

Fragment Shader:

varying float LightIntensity;
varying vec2 UVCoord;
uniform vec3 Color;
uniform float LuminosityLevel;
uniform sampler2D tex1;

void main(){
  vec3 thisTex   = vec3(texture2D(tex1,UVCoord));
  
  vec3 thisColor = Color * LightIntensity;
  thisColor     += LuminosityLevel * thisTex;
  gl_FragColor   = vec4(thisColor, 1.0);
}