#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); } */ }