
vec4 deepColor = vec4(0.0, 0.3, 0.1, 1.0)  ; 
vec4 shallow = vec4( 1.0) ; 


float wave(vec2 position, vec2 direction, float amplitude, float frequency,float phase, float sharpness, float time){
    return amplitude * pow(sin((position.x * direction.x + position.y * direction.y) * frequency + time * phase) 
    * 0.5 + 0.5, sharpness);
}






void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    vec2 uv = fragCoord/iResolution.xy;
    uv.x *= iResolution.x /iResolution.y;
    vec3 col = 0.5 + 0.5*sin(uv.xyx+vec3(0,3,4)*iTime*0.1);
    vec2 direction = vec2(1.0); 
    float amplitude = 0.8 ;  
    float frequency = 30.0; 
    float phase = 3.14 ;
    float sharpness = 1.5 ; 
    // Normalized pixel coordinates (from 0 to 1)
    float w = wave(uv,direction, amplitude, frequency, phase,  sharpness,  iTime ) ; 
    vec4 color = mix(deepColor , shallow , w )  ; 
    
    float r0 = 0.02037 ; 
	float intensity = mix(0.01, 0.15, smoothstep(0.1, 0.6, abs(fract(0.05*iTime + 0.5)*2.-1.)));
	vec3 n = vec3(vec2(w), sqrt(1. - dot(direction, direction)));
	vec3 x = color.xyz +  5.*pow(clamp(dot(n, normalize(vec3(w))), 0., 1.), 6.);

    fragColor = vec4(x,1.0) ;
}
