gl_FragColor. terug naar de inleiding
gl_FragColor is een speciale, of gereserveerde, variabele van het type vector4.
gl_FragColor is een 4 dimensionale vector met de kanalen of assen R, G, B en alfa, met waarden tussen de 0.0 en 1.0
gl_FragColor retourneert in de main functie kleur waarden.
Een simpel hello world shader geeft het canvas een kleur. Zie The book of shaders hoofdstuk 2
#ifdef GL_ES
precision mediump float;
#endif
void main() {
gl_FragColor = vec4(1.000,0.051,0.926,1.000);
}
#ifdef (if definded) GL_ES en #endif zijn macro commando's deze beginnen altijd met een # = hashtag
Met de code tussen deze regels wordt hier een global gedeclareerd die van toepassing is op het variabele type float.
precision mediump float = precision medium float, dwz dat alle variabelen in de schets van het type floating point zijn met een middelmatige precisie.
zo heb je ook lowp en hightp
vier manieren om het canvas een rode kleur te geven en twee manieren(regel 36, 37 en 38) om het canvas een grijze kleur te geven
// 1) met de functie red() met een return.
#ifdef GL_ES
precision mediump float;
#endif
vec4 red(){
return vec4(1.0,0.0,0.0,1.0);
}
void main() {
gl_FragColor = vec4(red());
}
// 2) met een vec4 color variabele
void main() {
vec4 color = vec4(1.0,0.0,0.0,1.0);
gl_FragColor = vec4(color);
}
// 3) vec4 samenstellen met vec3
void main() {
vec4 color = vec4(vec3(1.0,0.0,0.0),1.0);
gl_FragColor = vec4(color);
}
// 4) Nu vec4 samengesteld met vec2 en vec3
void main() {
vec4 color = vec4(vec3(vec2(1.0,0.0),0.0),1.0);
gl_FragColor = color;
}
//5) schets met een grijstint als output
void main() {
float c = 0.5;
gl_FragColor = vec4(vec3(c),1.0);
// gl_FragColor = vec4(vec3(0.5),1.0); // geeft ook de grijze tint
}