|
It does not appear your computer can support WebGL.
Click here for more information. |
// Author: Sol Sarratea// Title: Conjunto de Mandelbrotprecision mediump float;uniform float u_time;uniform vec2 u_resolution;uniform vec2 u_mouse;// Multilicacion de vectores : // sean a,b vectores de 2 componentes se los puede pensar como numeros complejos. Luego:// a = ax + ay i, donde `ax` es la parte real y `ay` la parte imaginaria// b = bx + by i, donde `bx` es la parte real y `by` la parte imaginaria// La multiplicacion queda definida como : // a * b = (ax * bx - ay * bx) + ( ax * by + ay * bx ) i vec2 multC(vec2 a, vec2 b){ float re = a.x*b.x - a.y*b.y; float im = a.x*b.y + a.y*b.x; return vec2(re,im);}vec2 uv(){ /* Devuelve las posiciones del canvas en rango [-1.,1.]x[-1.,1.] */ vec2 pos = gl_FragCoord.xy/u_resolution; pos = pos *2.-1.; return pos;}void main() { vec3 color; vec2 pos = uv() *1. - vec2(0.5,0.); // Descomentar las lineas 25 y 26 // para explorar la frontera // pos.x -= 14600. + u_mouse.x*0.1; // pos *= .0001; float dist = 0.; const int max_pasos =100; // zn inicia en 0 para todas las pocisiones vec2 zn = vec2(0); // En el ciclo se actualiza zn por zn ^ 2 + pos ; for (int i = 0; i < max_pasos; i++) { zn = multC(zn,zn) + pos; float magnitud = length(zn); if ( magnitud > 400.) break; dist += 2.056/float(max_pasos); } // Coloreamos con un gradiente negro-blanco que tan cerca estoy del conjunto color += dist; gl_FragColor = vec4(color,1.);}