Fractal Tunnel Shader Tutorial
Here is a tutorial on a Fractal Tunnel Shader Tutorial
#float speed 0.5 0.1 2.0
#float zoom 2.0 0.5 5.0
#float twist 3.0 0.0 10.0
#color color1 #ff3366
#color color2 #3366ff
#color color3 #33ff66
void main() {
vec2 uv = v_uv * 2.0 - 1.0;
uv.x *= u_resolution.x / u_resolution.y;
float t = u_time * speed;
float r = length(uv);
float a = atan(uv.y, uv.x);
float tunnel = 1.0 / (r + 0.1);
float angle = a + tunnel * twist + t;
float pattern = 0.0;
for (int i = 0; i < 4; i++) {
float fi = float(i);
float scale = zoom * (1.0 + fi * 0.5);
float wave = sin(tunnel * scale - t * (1.0 + fi * 0.2));
wave += sin(angle * (3.0 + fi) + t);
pattern += wave / (2.0 + fi);
}
pattern = pattern * 0.5 + 0.5;
vec3 color = mix(color1, color2, sin(pattern * PI) * 0.5 + 0.5);
color = mix(color, color3, sin(pattern * 6.28318 + t) * 0.5 + 0.5);
color *= 1.0 - r * 0.5;
fragColor = vec4(color, u_opacity);
}