32 lines
838 B
GLSL
32 lines
838 B
GLSL
#version 100
|
|
precision mediump float;
|
|
uniform float u_time;
|
|
uniform vec2 u_resolution;
|
|
|
|
void main() {
|
|
vec2 uv = (gl_FragCoord.xy * 2.0 - u_resolution.xy) / u_resolution.y;
|
|
|
|
// Auto zoom
|
|
float zoom = 1.0 + sin(u_time * 0.1) * 0.5;
|
|
zoom = pow(zoom, 4.0);
|
|
vec2 c = uv / zoom - vec2(0.74364388703, 0.13182590421); // Zoom into a specific interesting point
|
|
|
|
vec2 z = vec2(0.0);
|
|
float iter = 0.0;
|
|
float max_iter = 100.0;
|
|
|
|
for (float i = 0.0; i < 100.0; i++) {
|
|
z = vec2(z.x * z.x - z.y * z.y, 2.0 * z.x * z.y) + c;
|
|
if (length(z) > 4.0) break;
|
|
iter += 1.0;
|
|
}
|
|
|
|
float f = iter / max_iter;
|
|
vec3 col = vec3(f);
|
|
col = 0.5 + 0.5 * cos(3.0 + f * 10.0 + vec3(0.0, 0.6, 1.0));
|
|
|
|
if (iter >= 99.0) col = vec3(0.0);
|
|
|
|
gl_FragColor = vec4(col, 1.0);
|
|
}
|