#version 430 core uniform float fGlobalTime; // in seconds uniform vec2 v2Resolution; // viewport resolution (in pixels) uniform sampler1D texFFT; // towards 0.0 is bass / lower freq, towards 1.0 is higher / treble freq uniform sampler1D texFFTSmoothed; // this one has longer falloff and less harsh transients uniform sampler2D texBricks; uniform sampler2D texGrunge; uniform sampler2D texMono; uniform sampler2D texNoise; uniform sampler2D texNormal; uniform sampler2D texPaper; uniform sampler2D texPooBrain; layout(location = 0) out vec4 out_color; // out_color must be written in order to see anything /* vec4 plas( vec2 v, float time ) { float c = 0.5 + sin( v.x * 10.0 ) + cos( sin( time + v.y ) * 20.0 ); return vec4( sin(c * 0.2 + cos(time)), c * 0.15, cos( c * 0.1 + time / .4 ) * .25, 1.0 ); }*/ vec2 r2d(in vec2 v, in float a){ return vec2(v.x * cos(a) - v.y * sin(a),v.x * cos(a) + v.y * sin(a)); } void main(void) { vec2 uv = gl_FragCoord.xy / v2Resolution.xy; out_color = vec4(vec3(0.), 1.0); uv.x += 1.2; for (float i = fract(fGlobalTime); i < 1.; i += 0.1) { float fft = texture(texFFT, uv.x+i*0.01).x * 1.2; uv.x += fft * 10.; vec2 ruv = r2d(uv,0.9 + fft * 10.);// fft * 2. + fGlobalTime); if (ruv.y - .2 - pow(uv.x, ruv.y - i) + i * 2.2 < fft) { if (i < 0.3) out_color.r += 0.33; else if (i < 0.6) out_color.g += 0.33; else out_color.b += 0.333; } } if (out_color.r < 0.1) { out_color = texture2D(texPooBrain, gl_FragCoord.xy / v2Resolution.xy); } }