Lección 6 de 10 · Fractales en GLSL
Julia
Fija c, suelta z. Filamentos por todas partes.
Mandelbrot arranca z = 0 y deja que c sea el frag. El conjunto de Julia hace lo contrario: c es una constante fija y z arranca en el frag. Misma ecuación, papeles invertidos, otra criatura.
Cada c genera un Julia distinto. (-0.8, 0.16) da filamentos finos y conectados. Cambia un decimal y muta toda la galaxia.
vec2 c = vec2(-0.8, 0.16)La constante de Julia. La parte real
-0.8 y la imaginaria 0.16 definen la forma completa. Es el ADN: misma iteración para toda la pantalla, una sola semilla decide si tienes espirales, polvo o ramas.Cambia
vec2 c=vec2(-0.8, 0.16) a vec2(0.285, 0.01) para espirales clásicas, o a vec2(-0.4, 0.6) para un dragón. Mueve zoom para acercarte a los filamentos.El código
precision highp float;
void main(){
vec2 uv=(gl_FragCoord.xy*2.0 - R)/R.y;
float zoom=1.5;
vec2 z=uv*zoom;
vec2 c=vec2(-0.8, 0.16);
float n=0.0; bool esc=false;
const int IT=150;
for(int i=0;i<IT;i++){
z=vec2(z.x*z.x-z.y*z.y, 2.0*z.x*z.y)+c;
if(dot(z,z)>256.0){ n=float(i); esc=true; break; }
}
float sn=esc ? (n - log2(log2(dot(z,z))) + 4.0) : 0.0;
float band=sn * 0.5;
vec3 col=0.5+0.5*cos(0.35*band + vec3(0.4,1.6,3.4));
col=esc ? col : vec3(0.03,0.0,0.05);
gl_FragColor=vec4(col,1.0);
}