Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- vec3 hsv2rgb(vec3 c)
- {
- vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
- vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
- return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
- }
- vec2 cMul(in vec2 c1, in vec2 c2)
- {
- return vec2(c1.x*c2.x - c1.y*c2.y, c1.x*c2.y + c1.y*c2.x);
- }
- vec2 cInv(in vec2 c)
- {
- return vec2(c.x, -c.y)/length(c)/length(c);
- }
- vec2 cDiv(in vec2 c1, in vec2 c2)
- {
- return cMul(c1, cInv(c2));
- }
- vec2 cPow(in vec2 c1, in vec2 c2)
- {
- float l, a, r, t, x, y;
- l = log(length(c1));
- a = atan(c1.y, c1.x);
- r = exp(c2.x * l - c2.y * a);
- t = c2.x * a + c2.y * l;
- x = r * cos(t);
- y = r * sin(t);
- return vec2(x, y);
- }
- vec2 f(in vec2 z) {
- //vec2 C = z;
- //vec2 C = cMul(z, vec2(cos(iTime/3.), sin(iTime/3.)));
- //vec2 C = z + vec2(cos(iTime/3.), sin(iTime/3.));
- //for (int i=0; i < int(iTime/2.); i++) {
- // C = cPow(C,cPow(C,C)) + z;
- //}
- //return C;
- float s1 = iTime * .7;
- float s2 = -iTime * .3 + 1.0;
- float s3 = iTime * 1. - 1.0;
- vec2 p1 = vec2(cos(s1), sin(s1));
- vec2 p2 = 2.0 * vec2(cos(s2), sin(s2));
- vec2 p3 = 3.0 * vec2(cos(s3), sin(s3));
- vec2 a = cMul(z, z) - p1;
- vec2 b = cPow(z - p2, vec2(2, 0));
- vec2 c = cMul(z, z) + p3;
- return cMul(cMul(a, b), cInv(c));
- }
- void mainImage( out vec4 fragColor, in vec2 fragCoord )
- {
- float SCALE = 5.;
- // Normalized pixel coordinates (from 0 to 1)
- vec2 uv = fragCoord/iResolution.xy - vec2(.5);
- uv.x *= iResolution.x/iResolution.y;
- uv *= SCALE;
- uv.x += -1.;
- vec2 o = f(uv);
- float h = atan(o.y, o.x);
- vec3 col = hsv2rgb(vec3(h/6.28, 1, 1));
- float sa, sb;
- float w = 0.05;
- sa = log(length(o)) + .24;
- sa = abs(sa - floor(sa));
- col *= mix(.8, 1.0, sa);
- sb = atan(o.y, o.x);
- sb = (sb + 3.1415)/6.2832 * 8.0;
- sb = abs(sb - floor(sb));
- col *= mix(.8, 1.0, sb);
- //col = mix(col, vec3(1), smoothstep(2.0, .0, abs(fract(sb+.5+w)-.5-w)/fwidth(sb)));
- if (sb < w) col = mix(col, vec3(1), .8);
- // Output to screen
- fragColor = vec4(col,1.0);
- }
Add Comment
Please, Sign In to add comment