Spracherkennung für: .glsl vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
// Originally from:
https://www.shadertoy.com/view/wdBfDK
// License: CC0
#define MANDELBROT_ZOOM_START
0.
0
#define MANDELBROT_ITER
240
void pR(inout vec2 p, in float a) {
p = cos(a)*p + sin(a)*vec2(p.y, -p.x);
}
vec2 pMod2(inout vec2 p, in vec2 size) {
vec2 c = floor((p + size*
0.
5)/size);
p = mod(p + size*
0.
5,size) - size*
0.
5;
return c;
}
vec3 mandelbrot(float time, vec2 p, out float ii) {
vec3 col = vec3(
0.
0);
float ztime = (time - MANDELBROT_ZOOM_START)*step(MANDELBROT_ZOOM_START, time);
float zoo =
0.
64 +
0.
36*cos(.
07*ztime);
float coa = cos(
0.
15*(
1.
0-zoo)*ztime);
float sia = sin(
0.
15*(
1.
0-zoo)*ztime);
zoo = pow(zoo,
8.
0);
vec2 xy = vec2( p.x*coa-p.y*sia, p.x*sia+p.y*coa);
vec2 c = vec2(-.
745,.
186) + xy*zoo;
const float B =
10.
0;
float l =
0.
0;
vec2 z = vec2(
0.
0);
vec2 zc = vec2(
1.
0);
pR(zc, ztime);
float d =
1e20;
int i =
0;
for(int j =
0; j < MANDELBROT_ITER; ++j) {
float re2 = z.x*z.x;
float im2 = z.y*z.y;
float reim= z.x*z.y;
if(re2 + im2 > (B*B)) break;
z = vec2(re2 - im2,
2.
0*reim) + c;
vec2 zm = z;
vec2 n = pMod2(zm, vec2(
4));
vec2 pp = zm - zc;
float dd = dot(pp, pp);
d = min(d, dd);
l +=
1.
0;
i = j;
}
ii = float(i)/float(MANDELBROT_ITER);
float sl = l - log2(log2(dot(z,z))) +
4.
0;
vec3 dc = vec3(pow(max(
1.
0 - d,
0.
0),
20.
0));
vec3 gc =
0.
5 +
0.
5*cos(
3.
0 + sl*
0.
15 + vec3(
0.
1,
0.
5,
0.
9));
return gc + dc*smoothstep(
28.
8,
29.
0, ztime);
}
void mainImage(out vec4 fragColor, in vec2 fragCoord) {
float s =
2.
0/iResolution.y;
vec2 o1 = vec2(
1.
0/
8.
0,
3.
0/
8.
0)*s;
vec2 o2 = vec2(-
3.
0/
8.
0,
1.
0/
8.
0)*s;
vec2 p = (-iResolution.xy +
2.
0*fragCoord.xy)/iResolution.y;
float ii =
0.
0;
vec3 col = mandelbrot(iTime, p+o1, ii);
// "smart" AA? Is that a good idea?
vec2 dii2 = vec2(dFdx(ii), dFdy(ii));
float dii = length(dii2);
if(abs(dii) >
0.
01) {
col += mandelbrot(iTime, p-o1, ii);
col += mandelbrot(iTime, p+o2, ii);
col += mandelbrot(iTime, p-o2, ii);
col *=
0.
25;
// col = vec3(
1.
0,
0.
0,
0.
0);
}
fragColor = vec4(col,
1.
0);
}