Lección 6 de 10 · GLSL para principiantes
El centro
El punto de origen de cada shader.
Hasta ahora p iba de 0 (esquina) a 1 (esquina opuesta). Eso es útil para gradientes, pero no para cosas centradas, como un círculo en el medio.
(0, 0). Ground zero. Todo se mide desde aquí.
Hay una fórmula que todos los shaders usan al inicio. Piénsalo como afinar tu instrumento antes de tocar:
La fórmula del centro
Lo que hace: el centro de la pantalla ahora es (0,0). La esquina superior derecha es (1,1). La inferior izquierda es (-1,-1). Y funciona aunque la pantalla sea cuadrada o alargada, no se distorsiona.
vec2 p = (2.*gl_FragCoord.xy - R) / min(R.x, R.y);Lo que hace: el centro de la pantalla ahora es (0,0). La esquina superior derecha es (1,1). La inferior izquierda es (-1,-1). Y funciona aunque la pantalla sea cuadrada o alargada, no se distorsiona.
No tienes que entender la fórmula completa todavía. Es la primera línea de casi cualquier shader que escribas.
Cambia el
0.4 (azul) a 0.9 y el centro se vuelve lavanda. Cambia p.x por p.y en la primera línea del color y el gradiente se voltea.El código
void main(){
vec2 p = (2.*gl_FragCoord.xy - R) / min(R.x, R.y);
vec3 col = vec3(p.x * 0.5 + 0.5, p.y * 0.5 + 0.5, 0.4);
col *= 0.9 + 0.1 * (1.0 - length(p));
col = hueShift(col, 0.0);
gl_FragColor = vec4(col, 1.);
}