#version 430 core

///////////////////////////////////////////////////////////////////////////////
// shader inputs/outputs
///////////////////////////////////////////////////////////////////////////////
uniform float iGlobalTime; // in seconds
uniform vec2 iResolution; // viewport resolution (in pixels) (1080p or 720p)
uniform mat4 iMidiPad; // 16 buttons of midi controller
uniform float iMidiPadValue; // sum of all elements in iMidiPad/16

// all samplers have linear filtering applied, wraping set to repeat
//
uniform sampler1D iFFTTexture; // 1024
uniform float iFFT[8]; // latest frame
uniform float iFFTs[8]; // smoothed latest frame
uniform sampler2D iFFTsHistory; // smoothed fft history, 8x1024, x coord = bin, y coord n-frames earlier, y=0 is latest frame

// predefined textures
//
uniform sampler2D iTex1;
uniform sampler2D iTex2;
uniform sampler2D iTex3;
uniform sampler2D iTex4;
uniform sampler2D iNoise;
uniform sampler2D iChecker;

// out_color must be written in order to see anything
//
layout(location = 0) out vec4 out_color;
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

void main(void)
{
	vec2 circlepos = vec2(cos(iGlobalTime *0.25), sin(iGlobalTime*0.25) );                
	vec2 uv = vec2( gl_FragCoord.xy ) / iResolution;
	vec2 uvx = uv;
	uvx -= circlepos;
	float distance = sqrt(dot(uvx, uvx));
	float fxs = cos(uv.x + 500 *cos(iGlobalTime /0.25) * 800) + cos(uv.y + cos(iGlobalTime /0.25 ) * 1000 );
	float timex = mod(iGlobalTime, 10.0);
	out_color = vec4(uv, fxs, 1);
	
	if(distance < 0.1) {
		float x = texture(iNoise, uv);
		out_color = vec4(x, x, x, 1);
	}

	
/*			
	} else {
		
//	float f = cos(uv.x * cos(iMidiPadValue * 0.25 )) + cos(uv.y *(iMidiPadValue *0.25));
	float f = texture( iFFTTexture, uv.x ).r * 100;
//	out_color = 
	
	out_color = f * vec4(1,1,0,1);
}
*/
}