Newton Fractal multiplied by e^it. Was actually attempting to rotate the whole thing, then this happened.
Log in to post a comment.
#version 300 es precision highp float; uniform vec2 iResolution; uniform float iTime; uniform float MaxIter; // value=100, min=1, max=1000, step=1 uniform int AA; // value=4, min=1, max=9, step=1 out vec4 fragColor; vec2 cMul(vec2 a, vec2 b) { // Somehow it becomes undefined for some radians. return vec2( a.x*b.x - a.y*b.y,a.x*b.y + a.y * b.x); } vec2 cInverse(vec2 a) { return vec2(a.x,-a.y)/dot(a,a); } vec2 cExp(in vec2 z){ return vec2(exp(z.x)*cos(z.y),exp(z.x)*sin(z.y)); } vec2 cDiv(vec2 a, vec2 b) { return cMul(a,cInverse(b)); } vec2 newton(vec2 z) { return cMul(z - cDiv(cMul(z,cMul(z,z)) - vec2(1.0,0.0), 3.0*cMul(z,z)),cExp(vec2(0.,0.5*(0.5+0.5*cos(iTime))))); } vec4 render(float xin, float yin){ vec2 z = vec2(xin, yin); float j = 0.; while(j<MaxIter){ z = newton(z); j++; } // Don't mind this mess. vec3 col = min(max(z.x*sqrt(xin*xin+yin*yin), 0.)*10.,1.)*vec3(0.941, 0.635, 0.007); col += min(max(z.y*sqrt(xin*xin+yin*yin), 0.)*10.,1.)*vec3(0.945, 0.533, 0.019); col += min(max(z.x*z.y*sqrt(xin*xin+yin*yin), 0.)*10.,1.)*vec3(0.850, 0.364, 0.223); return vec4(col, 1.0); } void main() { for(int m=0; m<AA; m++){ for(int n=0; n<AA; n++){ vec2 z = (2.0*(gl_FragCoord.xy+vec2(float(m),float(n))/float(AA))-iResolution.xy) / iResolution.y; fragColor += render(z.x, z.y); } } fragColor/=float(AA*AA); }