Files
mandelia/shader/mandelia.frag
2025-07-02 22:09:58 +02:00

29 lines
632 B
GLSL

#define cx_mul(a,b) vec2(a.x*b.x-a.y*b.y, a.x*b.y+a.y*b.x)
#define cx_mag2(x) dot(x,x)
#define E 2.718281828
uniform int maxiter;
uniform float escape2;
in vec2 base;
in vec2 delta;
layout(location = 0) out vec4 diffuseColor;
void main() {
vec2 pos = base;
int i;
for (i = 0; i < maxiter; i++) {
if (cx_mag2(pos) > escape2) {
break;
}
pos = cx_mul(pos, pos) + delta;
}
float mag = cx_mag2(pos);
float sm_color = log(log(mag / 2.)) / log(escape2) * 2;
float shade = i - 1 + sm_color;
// TODO: palette mapping
diffuseColor = vec4(shade, shade, shade, 1);
}