//copyright ztarby, created by ztarby :v
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    // Time xdxd
    float time = iTime + 4000.0;
    
    
    // Normalized pixel coordinates (from 0 to 1)
    vec2 uv = fragCoord/iResolution.xy * sqrt(iResolution.y) + vec2(40,40);
    
   

    // Time varying pixel color
    vec3 col = 0.5 + 1.0*cos(time + uv.xyx + cos(time / abs(uv.x)) + 
    cos(time / abs(uv.y)) / vec3(1,1,1)) * abs(sin(time * 
    normalize(uv.xyx) )) / vec3(1,1,1);
    
    vec3 sem = cos(time * normalize(uv.xyx) / vec3(40,40,40) + time )  ;
    
    vec3 emm = length(col)  + normalize(sin(time - uv.xyx / sqrt(uv.x) 
    / length(uv.y) * vec3(15,20,23)) + sem ) / exp(sem) - sem  ;
    
    
    // Output to screen
    fragColor = vec4(emm,1.0);
}
