#define S smoothstep
    vec3 palette( in float colo )
{
    vec3 a = vec3(0.765,0.259,1.000);
    vec3 b = vec3(0.235,0.180,1.000);
    vec3 c = vec3(1.000,0.322,0.616);
    vec3 d = vec3(0.859,0.996,1.000);
    return a + b*cos( 6.28318*(c*colo+d) );
}

vec4 Line(vec2 uv, float speed, float height, vec3 col) {
    uv.x += S(1., 0.0, abs(uv.y)) * cos(iTime * speed + uv.y * height) * .5;
    return vec4(S(0.05 * S(.2, .8, abs(uv.y)), 0.0, abs(uv.x) - .01) * col, 1.0) * S(1., .3, abs(uv.y));
}

void mainImage(out vec4 O, in vec2 I) {

    //vec2 uv = (I - .5 * iResolution.xy) / iResolution.y;
    vec2 uv = I / iResolution.xy*2.0-1.;
    uv.x*= iResolution.x/iResolution.y;
    O = vec4 (0.);
    for (float i = 0.; i <= 5.; i += 1.) {

     //  float i = 0.;
        float t = i ;
        O += Line(uv, .005 + t, .005 + t, vec3(.1 + t * .7, .05 + t * .4, 0.1));

        vec3 col = palette(iTime*.5);
        O *= vec4(col, 1.0);


   }
}
