
// Uniform variables for texturing
uniform sampler2D 	aaa_tex2d[4];

// Dimension of textures : 0, 1, 2, 3 dimension, -1 if unused per Tex Unit
uniform	int			aaa_tex_dim[4];

// Size of Texture for each texture unit
uniform vec2		aaa_tex_0_size;

// 0 = time
// 1 = mouse X
// 2 = mouse Y
// 3 = waves amount -> more than 1 is better :p
uniform float		aaa_pu_float[6];

void main(void) 
{
	vec2 uv = -1.0 + 2.0 * gl_FragCoord.xy / aaa_tex_0_size.xy;

	float time = aaa_pu_float[0] * 1.0;
	
	vec3 color = vec3(0.0);

	for (float i=0.0; i<aaa_pu_float[3] + 1.0; i++) 
	{
		float freq = texture2D(aaa_tex2d[0], vec2(i / aaa_pu_float[3], 0.0)).x * 7.0;

		vec2 p = vec2(uv);

		p.x += i * 0.04 + freq * 0.03;
		p.y += sin(p.x * 10.0 + time) * cos(p.x * 2.0) * freq * 0.2 * ((i + 1.0) / aaa_pu_float[3]);
		float intensity = abs(0.01 / p.y) * clamp(freq, 0.35, 2.0);
		color += vec3(1.0 * intensity * (i / 5.0), 0.5 * intensity, 1.75 * intensity) * (3.0/aaa_pu_float[3]);
	}

	gl_FragColor = vec4(color, 1.0);
}