vshader.glsl
in vec4 VertexColor
in vec4 VertexPosition
out vec4 color
void main() {
color = VertexColor
gl_Position = // calculation
}
fshader.glsl
uniform vec4 Ambient
in vec4 color
int main () {
gl_FragColor = min(color * Ambient, vec4(1.0))
}
vec3 scatteredLight = vec3(Ambient) vec3 rgb = min(color.rgb * scatteredLight, vec3(1.0)) gl_FragColor = vec4(rgb, color.a)
uniform vec3 LightDirection;
uniform vec3 LightColor;
uniform vec3 Ambient;
in vec4 color;
in vec3 Normal;
void main() {
float diffuse = max(0.0, dot(Normal, LightDirection));
..
vec3 scatteredLight = Ambient + LightColor * diffuse;
...
vec3 rgb = min (color.rgb*scatteredLight, vec3(1.0));
gl_FragColor = vec4(rgb, color.a)
}
uniform vec3 HalfVector; uniform float Shininess; uniform float Strength; ... float specular = max(0.0, dot(Normal, HalfVector)); .. if (diffuse == 0.0) specular = 0.0 else specular = pow(specular,Shininess); ... vec3 reflectedLight = LightColor * specular * Strength; vec3 rgb = min (color.rgb*scatteredLight+reflectedLight, vec3(1.0)); gl_FragColor = vec4(rgb, color.a)