65 lines
1.9 KiB
GLSL
65 lines
1.9 KiB
GLSL
#version 460
|
|
|
|
#define PI 3.1415927
|
|
|
|
in vec2 vUV;
|
|
out vec4 fragColor;
|
|
|
|
uniform float iTime; // elapsed time in seconds
|
|
uniform float iTempo; // current tempo in bpm
|
|
uniform float iBeats; // elapsed beats since last tempo reset
|
|
uniform int iFPS; // output window frames per seconds
|
|
uniform int iDemo; // 0/1 if demo mode
|
|
uniform int iSeed1; // a random seed assigned at start
|
|
uniform vec2 iResolution; // output window resolution in pixels
|
|
uniform vec3 iMidi1_1[20]; // all midi inputs defined
|
|
uniform sampler2D iTex0; // available texture (this code output, so feedback)
|
|
|
|
void main() {
|
|
// all available buttons and faders
|
|
vec3 b1 = iMidi1_1[0];
|
|
vec2 f1 = iMidi1_1[1].xy;
|
|
vec3 b2 = iMidi1_1[2];
|
|
vec2 f2 = iMidi1_1[3].xy;
|
|
vec3 b3 = iMidi1_1[4];
|
|
vec2 f3 = iMidi1_1[5].xy;
|
|
vec3 b4 = iMidi1_1[6];
|
|
vec2 f4 = iMidi1_1[7].xy;
|
|
vec3 b5 = iMidi1_1[8];
|
|
vec2 f5 = iMidi1_1[9].xy;
|
|
vec3 b6 = iMidi1_1[10];
|
|
vec2 f6 = iMidi1_1[11].xy;
|
|
vec3 b7 = iMidi1_1[12];
|
|
vec2 f7 = iMidi1_1[13].xy;
|
|
vec3 b8 = iMidi1_1[14];
|
|
vec2 f8 = iMidi1_1[15].xy;
|
|
vec3 b9 = iMidi1_1[16];
|
|
vec3 b10 = iMidi1_1[17];
|
|
vec3 b11 = iMidi1_1[18];
|
|
vec3 b12 = iMidi1_1[19];
|
|
|
|
// center UV and scale it to ratio
|
|
vec2 uv0 = vUV.st;
|
|
float ratio = iResolution.x / iResolution.y;
|
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
|
|
|
// make small circle controlled by fader 1 and 2
|
|
float circle_dist = 0.1 + 0.9 * f1.x;
|
|
float circle_size = 0.1 + 0.9 * f2.x;
|
|
vec2 circle_pos = circle_dist * vec2(
|
|
sin(iBeats * 2 * PI),
|
|
cos(iBeats * 2 * PI)
|
|
);
|
|
float circle = 1 - step(circle_size, length(uv1 - circle_pos));
|
|
|
|
// fader 3, 4 and 5 controls the color
|
|
vec3 color = vec3(
|
|
f3.x,
|
|
f4.x,
|
|
f5.x
|
|
);
|
|
vec3 out_color = mix(color, 1 - color, circle);
|
|
|
|
// fader 8 controls the feedback value
|
|
fragColor = mix(vec4(out_color, 1), texture(iTex0, vUV.st), f8.x);
|
|
} |