Multilight Shader
Ein Shader mit 3 Lichtquellen als uniform Variable.
Screenshot:

Vertex Shader:
uniform vec3 LightPos1; uniform vec3 LightPos2; uniform vec3 LightPos3; uniform vec3 LightColor1; uniform vec3 LightColor2; uniform vec3 LightColor3; varying vec3 LightColor; vec3 Normal; vec3 pos; void doLight(in vec3 lightPos, in vec3 lightColor, inout vec3 endColor){ vec3 toLight = lightPos - pos; endColor += max(dot(normalize(toLight), Normal), 0.0) * lightColor; } void main(){ gl_Position = ftransform(); Normal = normalize(gl_NormalMatrix * gl_Normal); pos = vec3(gl_ModelViewMatrix * gl_Vertex); vec3 endColor = vec3(0.0); doLight(LightPos1, LightColor1, endColor); doLight(LightPos2, LightColor2, endColor); doLight(LightPos3, LightColor3, endColor); LightColor = endColor; }
Fragment Shader:
varying vec3 LightColor; uniform vec3 Color; void main(){ gl_FragColor = vec4(Color * LightColor, 1.0); }