learn GLSL from zero
ToolsCrea con shadersShader MakerCrea shaders gratis en líneaToolkitObras de shaders listas para tu webSketcher LabPinta el hero de tu landing con shaders3D StudioEl editor Three.js en tu navegador
GamesJuega con shadersOnomatoShaderEscribe una palabra y explótalaThe WatcherUn ojo que te sigueAetherVidrio líquido con un ojo adentroBloomcoreUna palabra hace crecer un jardín de luzPyrokineAvienta fuego a la paredVoltaicLa pirámide lanza rayosSurfSurfea un océano de shader

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 centrovec2 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.

PruebaCambia 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.);
}
close