#define M_PI 3.14159265358979323846
#define SPEED 10000.0

uniform int currentTime;
uniform highp vec2 windowSize;

highp float noise(highp vec2 co)
{
    return 0.5 * fract(sin(dot(co.xy, vec2(12.9898,78.233))) * 43758.5453);
}

highp float curvSpeed()
{
   return (mod(float(currentTime), SPEED) / SPEED) * (2.0 * M_PI);
}

highp float curv(int curvCount)
{
    highp float curv_y = 0.1 *(cos((gl_FragCoord.x / windowSize.x) * (float(curvCount * 2) * M_PI) - curvSpeed())) + 0.5;
    highp float frag_y = gl_FragCoord.y / windowSize.y;
    return 1.0 - abs(curv_y - frag_y);
}

void main()
{
    highp float coordNoise = noise(gl_FragCoord.xy);
    highp float proximity = smoothstep(0.85, 1.0, (curv(6) + 1.0) * (coordNoise ));
    highp vec3 color = vec3(coordNoise) * proximity;
    gl_FragColor = vec4(color, 1.0);
}
