Animation of Julia set ,written by gpt-4o
Log in to post a comment.
#version 300 es #define pi 3.1415926 precision highp float; uniform float iTime; uniform vec2 iResolution; out vec4 fragColor; // Complex power of 2 for z = z^2 + c vec2 complexPow2(vec2 v) { return vec2(v.x * v.x - v.y * v.y, 2.0 * v.x * v.y); } // Calculate the number of iterations before escaping float juliaIterations(vec2 c, vec2 z) { int maxIterations = 256; int i = 0; while (length(z) < 4.0 && i < maxIterations) { z = complexPow2(z) + c; i++; } // Smooth coloring return float(i) + 1.0 - log(log(length(z))) / log(2.0); } // Generate a color based on iteration count vec3 colorMap(float iteration) { if (iteration < 256.0) { return vec3(0.5 + 0.5 * cos(iteration / 12.0), 0.5 + 0.5 * sin(iteration / 18.0), 0.5 + 0.5 * sin(iteration / 24.0)); } return vec3(0.0); } void main() { // Normalize coordinates to [-aspect, -1] to [aspect, 1] vec2 uv = (2.0 * gl_FragCoord.xy - iResolution) / iResolution.y; // Julia set parameters vec2 c = vec2(0.355 + 0.3 * sin(iTime * 0.3), 0.355 + 0.3 * cos(iTime * 0.4)); // Animate 'c' vec2 z = uv; // Calculate iterations float iteration = juliaIterations(c, z); // Compute color vec3 color = colorMap(iteration); // Output final color fragColor = vec4(color, 1.0); }