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:
- →
vec2 p = ...coordenadas centradas (lección 06) - →
length(p)distancia al centro (lección 09) - →
sin(inv * 3.5 - T * 3.)ondas que se mueven (lección 08) - →
mix(c1, c2, ...)mezclar dos colores (lección 05)
Esta es tu primera obra. Anillos concéntricos que pulsan, hechos con todo lo que aprendiste en estas lecciones.
1/distance. Let's travel.
Cambia 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.);
}