//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
#define OPTION 0


//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
void mainImage( out vec4 fragColor, in vec2 fragCoord ) {
    vec2 ScreenUV;
    ScreenUV.x = fragCoord.x/iResolution.x;
    ScreenUV.y = fragCoord.y/iResolution.y;
    
    ScreenUV.y = tan(ScreenUV.y-2.63)-2.0;
    ScreenUV.x = (ScreenUV.x-0.5) * (5.0 + ScreenUV.y);

//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
#if OPTION == 0
    float Scale = 0.001875;
    float s0 =  6.9*Scale;
    float s1 = 10.1*Scale;
    float s2 =  8.5*Scale;
    float s3 =  7.7*Scale;

    float TimeScale = 0.1875;
    float t0 =  6.9*iTime*Scale*TimeScale;
    float t1 = 10.1*iTime*Scale*TimeScale;
    float t2 =  8.5*iTime*Scale*TimeScale;
    float t3 =  7.7*iTime*Scale*TimeScale;

    float TexSample0 = texture(iChannel0, vec2( ScreenUV.x*s0+t0,  ScreenUV.y*s0+t0)).r;
    float TexSample1 = texture(iChannel0, vec2(-ScreenUV.x*s1+t1, -ScreenUV.y*s1+t1)).g;
    float TexSample2 = texture(iChannel0, vec2(-ScreenUV.x*s2+t2,  ScreenUV.y*s2+t2)).b;
    float TexSample3 = texture(iChannel0, vec2( ScreenUV.x*s3+t3, -ScreenUV.y*s3+t3)).a;

    float Water = (TexSample0 + TexSample1 + TexSample2 + TexSample3) * 0.27;
    Water = Water * Water * Water * Water;

    Water = Water < 0.09 || Water > 0.48 ? Water : 0.0;
//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
#elif OPTION == 1
    float Scale = 0.001875;
    float s0 =  6.9*Scale;
    float s1 = 10.1*Scale;
    float s2 =  8.5*Scale;
    float s3 =  7.7*Scale;

    float TimeScale = 0.1875;
    float t0 =  6.9*iTime*Scale*TimeScale;
    float t1 = 10.1*iTime*Scale*TimeScale;
    float t2 =  8.5*iTime*Scale*TimeScale;
    float t3 =  7.7*iTime*Scale*TimeScale;

    float TexSample0 = texture(iChannel0, vec2( ScreenUV.x*s0+t0,  ScreenUV.y*s0+t0)).r;
    float TexSample1 = texture(iChannel0, vec2(-ScreenUV.x*s1+t1, -ScreenUV.y*s1+t1)).g;
    float TexSample2 = texture(iChannel0, vec2(-ScreenUV.x*s2+t2,  ScreenUV.y*s2+t2)).b;
    float TexSample3 = texture(iChannel0, vec2( ScreenUV.x*s3+t3, -ScreenUV.y*s3+t3)).a;

    float Water = (TexSample0 + TexSample1 + TexSample2 + TexSample3) * 0.2;
    Water = Water * Water * Water;

    //Water = Water < 0.09 || Water > 0.9 ? Water : 0.0;
//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
#elif OPTION == 2
    float Scale = 0.01;
    float s0 =  6.9*Scale;
    float s1 = 10.1*Scale;
    float s2 =  8.5*Scale;
    float s3 =  7.7*Scale;

    float TimeScale = 0.1875;
    float t0 =  6.9*iTime*Scale*TimeScale;
    float t1 = 10.1*iTime*Scale*TimeScale;
    float t2 =  8.5*iTime*Scale*TimeScale;
    float t3 =  7.7*iTime*Scale*TimeScale;

    float TexSample0 = texture(iChannel2, vec2( ScreenUV.x*s0+t0,  ScreenUV.y*s0+t0)).r;
    float TexSample1 = texture(iChannel2, vec2(-ScreenUV.x*s1+t1, -ScreenUV.y*s1+t1)).g;
    float TexSample2 = texture(iChannel2, vec2(-ScreenUV.x*s2+t2,  ScreenUV.y*s2+t2)).b;
    float TexSample3 = texture(iChannel2, vec2( ScreenUV.x*s3+t3, -ScreenUV.y*s3+t3)).g;

    float Water = (TexSample0 + TexSample1 + TexSample2 + TexSample3) * 0.333;
    Water = Water * Water * Water;

    Water = Water < 0.09 || Water > 0.5 ? Water : 0.0;
//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
#else
    float Scale = 0.0025;
    float s0 =  6.9*Scale;
    float s1 = 10.1*Scale;
    float s2 =  8.5*Scale;
    float s3 =  7.7*Scale;

    float TimeScale = 0.1875;
    float t0 =  6.9*iTime*Scale*TimeScale;
    float t1 = 10.1*iTime*Scale*TimeScale;
    float t2 =  8.5*iTime*Scale*TimeScale;
    float t3 =  7.7*iTime*Scale*TimeScale;

    float TexSample0 = texture(iChannel0, vec2( ScreenUV.x*s0+t0,  ScreenUV.y*s0+t0)).r;
    float TexSample1 = texture(iChannel0, vec2(-ScreenUV.x*s1+t1, -ScreenUV.y*s1+t1)).g;
    float TexSample2 = texture(iChannel0, vec2(-ScreenUV.x*s2+t2,  ScreenUV.y*s2+t2)).b;
    float TexSample3 = texture(iChannel0, vec2( ScreenUV.x*s3+t3, -ScreenUV.y*s3+t3)).a;

    float Water = (TexSample0 * TexSample1 * TexSample2 * TexSample3);
    Water = Water * Water;
    Water = Water * 1.5;
    Water = Water + 0.015;
    
    //Water = Water < 0.09 || Water > 0.9 ? Water : 0.0;
//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
#endif

#if 0
    vec3 Color = vec3(Water);
#else
    vec3 Color = mix(vec3(0.38,0.87,0.95), vec3(0.01,0.38,0.57), fragCoord.y/iResolution.y) + Water;
#endif

    fragColor = vec4(Color,1.0);
}

