demo
This commit is contained in:
31
shaders/mandelbrot.frag
Normal file
31
shaders/mandelbrot.frag
Normal file
@@ -0,0 +1,31 @@
|
||||
#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);
|
||||
}
|
||||
Reference in New Issue
Block a user