const float PI=3.1415926535;
const float SIDESPEED=.2;

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    vec2 coord=(sin(iTime*.2)*10.6+22.6)*(fragCoord.xy-iResolution.xy/2.)/min(iResolution.y,iResolution.x);
    
    float sides=sin(iTime*SIDESPEED)*4.+6.;
    
    coord.x+=(sin(iTime+cos(coord.y))+sin(coord.x*2.))*(sin(iTime)+1.);
    coord.y+=(cos(iTime+sin(coord.x))+cos(coord.y*2.))*(sin(iTime)+1.);
    
    float angle=atan(coord.x,coord.y);
    float slice=PI*2./sides;
    float shape=cos(floor(.5+angle/slice)*slice-angle)*length(coord);
    
    vec3 color=vec3(sin(shape*(cos(iTime*.1+26.)*2.+3.)),sin(shape*(cos(iTime*.1+25.)*2.+3.)),sin(shape*(atan(iTime*.1+13.)*2.+3.)));
    fragColor=vec4(color,1.);
}
