//#define MOS sqrt(abs(iMouse.x)) + sqrt(abs(iMouse.y))

vec3 nosse(float algo, float mas) {
  
  float algas = sign(algo) + cos(mas) ;
  return vec3(algas,algo,mas);
  
}
vec3 nose(vec3 equis , vec3 equis2) {
  
  vec3 nanan = equis * equis2 + 0.5 + exp(cos(equis)) / exp(cos(equis2))  ;
  return nanan;

}

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    // Normalized pixel coordinates (from 0 to 1)
    vec2 uv = fragCoord/iResolution.xy / sin(iResolution.x + iResolution.y  );

    // Time varying pixel color
    vec3 col = 0.5 + 0.5*cos(iTime+uv.xyx+vec3(0,2,4)) + nosse(uv.x,uv.y) * uv.xyx;
    
    float ch = sin(sign(iTime * uv.x / uv.y)) + 5.0 - col.x * sin( col.y - col.z * 1.5 )    ;
    
    vec3 test = sin(iTime + uv.xyx * cos( 3.0  * ch * 0.6  ) * cos( -3.0 * ch * 0.5  )) 
    * cos(nosse(uv.x , ch) * 0.2) * cos(nosse(ch , uv.y) * 0.1) - vec3(2,1,3) ; //- MOS;
    test = test + 0.5;
   
    
    vec3 colo =  uv.xyx * nose(col,test) / nosse(uv.x , uv.y) * normalize( nose(test,col)) * col ;
    //colores cool
     colo =  exp(normalize(colo))  / length(colo) ;
    

    // Output to screen
    fragColor = vec4(colo,1.0);
}
