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 10 de 10 · GLSL para principiantes

El túnel

Junta todo. 1/distance. Todo lo que aprendiste en un solo output.

Esta lección no enseña nada nuevo. Junta todo lo anterior: coordenadas centradas, el tiempo, ondas, círculos, colores que cambian.

Mira el código. Cada línea ya la conoces:

Esta es tu primera obra. Anillos concéntricos que pulsan, hechos con todo lo que aprendiste en estas lecciones.

1/distance. Let's travel.

PruebaCambia el 3.5 (frecuencia del túnel) a 8. para anillos finos. A 1.5 para anillos anchos. Cambia el T * 3. (velocidad del túnel) a T * 1. y el viaje se vuelve hipnótico. Cambia los dos colores. Esta es tu obra ahora. Hazla tuya.

El código

void main(){
  vec2 p = (2.*gl_FragCoord.xy - R) / min(R.x, R.y);
  float d = length(p);
  float inv = 1. / (d + 0.12);
  float tunnel = sin(inv * 3.5 - T * 3.) * .5 + .5;
  float glow = exp(-d * 2.5) * 0.6;
  vec3 bg = vec3(0.015, 0.008, 0.05);
  vec3 ring = vec3(0.75, 0.2, 0.9);
  vec3 core = vec3(0.95, 0.85, 1.0);
  vec3 col = mix(bg, ring, tunnel * (1. - d * 0.4));
  col += core * glow;
  col += ring * pow(tunnel, 4.) * 0.25;
  col *= 0.9 + 0.1 * tunnel;
  col = hueShift(col, 0.0);
  gl_FragColor = vec4(col, 1.);
}
close