Files
2026-06-08 21:00:34 +02:00

76 lines
1.4 KiB
GLSL

#ifdef GL_ES
precision mediump float;
#endif
//dashxdr
// showing the points while performing the mandelbrot function
uniform float time;
uniform vec2 resolution;
uniform vec2 mouse;
uniform sampler2D bb;
void main( void )
{
float sum = 0.0;
float size = .0025;
vec2 tpos = gl_FragCoord.xy / resolution;
float px,py;
float scale = 1.0;
float basex = -1.0;
float basey = 0.0;
float x = basex + (mouse.x-.5)*scale;
float y = basey + (mouse.y-.5)*scale;
float t;
if(true) // change to false to control with mouse
{
t = time;
float t1 = t;
float scale1 = .3;
float t2 = t *.61223;
float scale2 = .5;
x = basex + scale1*cos(t1) + scale2*cos(t2);
y = basey + scale1*sin(t1) + scale2*sin(t2);
}
vec2 position = 2.0*(tpos + vec2(-0.75, -0.5));
#define NUM 30
float u, v;
u = v = .317;
for(int j=0;j<4;++j)
{
px = py = 0.0;
float x0, y0;
x0 = x + u;
y0 = y + v;
for (int i=0; i < NUM; ++i) {
t = (px*px-py*py)+x0;
py = (2.0*px*py) + y0;
px = t;
float dist = length(vec2(px, py) - position);
if(dist > .0001)
sum += size/dist;
else break;
}
t = u;
u = -v;
v = t;
}
float val = sum;
vec3 color;
color = vec3(val, val*0.66666, 0.0);
tpos = .5 + 1.2 * (tpos - .5);
#define INDENT .02
vec3 tcolor;
if(tpos.x>INDENT && tpos.y>INDENT &&
tpos.x < 1.0-INDENT && tpos.y < 1.0-INDENT)
tcolor = .9*texture2D(bb, tpos).rgb;
else tcolor = vec3(0.0);
gl_FragColor = vec4(max(color,tcolor), 1.0);
}