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

// 0 = time
// 1 = mouse X
// 2 = mouse Y
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];

#define N 6

void main( void )
{
	vec2 v=(gl_TexCoord[0].st-0.5)*10.0;
	float t=aaa_fu_float[0] ,r=2.0;
	for (int i=1;i<N;i++)
	{
		float d=(3.14159265 / float(N))*(float(i)*14.0);
		r+=length(vec2(v.y,v.x))+1.21;
		v = vec2(v.x+cos(r+sin(r)-d)+cos(t),v.y-cos(r+sin(r)+d)+sin(t));
	}
        r = (sin(r*0.05)*0.5)+0.5;
	r = pow(r, 30.0);
	vec4 col = vec4(r,pow(max(r-0.75,0.0)*4.0,2.0),pow(max(r-1.875,0.1)*5.0,4.0), 1.0 )  * texture2D(aaa_tex2d[0], gl_TexCoord[0].st);

	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) );
}
