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


// Size of Texture for each texture unit
uniform vec2		aaa_tex_size[];

// 0 = time
// 1 = mouse X
// 2 = mouse Y
// 3 = Thickness
// 4 = PI factor
uniform float		aaa_fu_float[8];

// 0 = iterations
uniform int			aaa_fu_int[4];


// balance between texture and effect
uniform float		aaa_fu_src;
uniform float		aaa_fu_out;


// Colors factors
// 0 = src colors
// 1 = out color
uniform vec4		aaa_fu_vec4[8];

void main (void)
{
	vec2 position = gl_TexCoord[0].st - 0.5;
	position.x *= aaa_tex_size[0].x / aaa_tex_size[0].y;
	float d2D = 1.0 / length (position) + aaa_fu_float[0];
	float a2D = atan (position.y, position.x) + sin (aaa_fu_float[0] * 0.2) * 3.14159;

	vec4 col = vec4 (0.5 + sin (d2D * 8.0) * 0.5, 0.5 + sin (a2D * 8.0) * 0.5, 0.5 + sin (d2D * 4.0) * sin (a2D * 4.0) * 0.5, 1.0);


	vec4 src = (texture2D(aaa_tex2d[0], gl_TexCoord[0].st) * aaa_fu_src) * aaa_fu_vec4[0];
	vec4 fx  = (col * aaa_fu_out) * aaa_fu_vec4[1];

	gl_FragColor = vec4( (src + fx) );
}