upgrade glsl code

This commit is contained in:
2026-08-28 19:02:39 +02:00
parent 11d5f41402
commit fb80096569
12 changed files with 377 additions and 438 deletions
+252 -256
View File
@@ -17,9 +17,9 @@ vec4 src_thru(vec2 vUV, sampler2D tex, int seed, vec3 b1, vec2 f1, vec3 b2, vec2
// controls
float hue = magic(f1, b1, seed + 10);
float saturation = magic(f2, b2, seed + 20);
float light = magic(f3, b3, seed + 30);
float hue = magic(f1, b1, seed + 10.);
float saturation = magic(f2, b2, seed + 20.);
float light = magic(f3, b3, seed + 30.);
// logic
@@ -27,8 +27,8 @@ vec4 src_thru(vec2 vUV, sampler2D tex, int seed, vec3 b1, vec2 f1, vec3 b2, vec2
c = shift3(c, hue);
c *= 1 + saturation;
c = mix(c + light * 2.0, c - (1 - light) * 2.0, step(.5, light));
c *= 1. + saturation;
c = mix(c + light * 2., c - (1. - light) * 2., step(.5, light));
// output
@@ -48,21 +48,21 @@ vec4 src_2(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
vec2 uv0 = vUV.st;
float ratio = iResolution.x / iResolution.y;
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
// controls
float thickness = magic(f1, b1, seed + 10);
float rotation = magic(f2, b2, seed + 20);
float distort = magic(f3, b3, seed + 30);
float thickness = magic(f1, b1, seed + 10.);
float rotation = magic(f2, b2, seed + 20.);
float distort = magic(f3, b3, seed + 30.);
// logic
vec2 uv2 = uv1;
uv2.y *= cos(uv2.x * 5 * distort);
uv2 *= rot(rotation + iBeats / 16);
float k = thickness * 2;
uv2.y = cmod(uv2.y, k * 2 + .1);
uv2.y *= cos(uv2.x * 5. * distort);
uv2 *= rot(rotation + iBeats * .0625);
float k = thickness * 2.;
uv2.y = cmod(uv2.y, k * 2. + .1);
float f = istep(k * .125 + .05, uv2.y) * istep(k * .125 + .01, -uv2.y);
return vec4(f);
@@ -75,159 +75,28 @@ vec4 src_3(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
vec2 uv0 = vUV.st;
float ratio = iResolution.x / iResolution.y;
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
// controls
float zoom = magic(f1, b1, seed + 10);
float rotation = magic(f2, b2, seed + 20);
float lens_v = magic(f3, b3, seed + 30);
float zoom = magic(f1, b1, seed + 10.);
float rotation = magic(f2, b2, seed + 20.);
float lens_v = magic(f3, b3, seed + 30.);
// logic
vec2 uv2 = uv1;
float k1 = lens_v * 5;
float k1 = lens_v * 5.;
uv2 = lens(uv2, -k1, k1);
uv2 = kal(uv2, 5);
uv2 *= rot(rotation + iBeats / 16);
uv2 = kal(uv2, 5.);
uv2 *= rot(rotation + iBeats * .0625);
float k = zoom * .1 + .05;
uv2 = cmod(uv2, k * 2);
float f = istep(k / (1 + length(uv1) * 2), length(uv2));
uv2 = cmod(uv2, k * 2.);
float f = istep(k / (1. + length(uv1) * 2.), length(uv2));
return vec4(f);
}
// // SRC 4 : circuit
// vec4 src_4(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
// {
// // start
// vec2 uv0 = vUV.st;
// float ratio = iResolution.x / iResolution.y;
// vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
// // controls
// float z = 10 + magic(f1, b1, 123) * 20;
// float h = magic(f2, b2, seed + 20) * .8 + .1;
// float v = magic_reverse(f3, b3, seed + 30) * .8 + .1;
// // logic
// uv1 *= z;
// uv1 += iBeats;
// float s0 = rand(floor(mod(uv1, 1000))) * 1000;
// float s1 = rand(floor(mod(uv1 + vec2(0, 1), 1000))) * 1000;
// float s2 = rand(floor(mod(uv1 - vec2(1, 0), 1000))) * 1000;
// bool up = rand(s1 + 1) < h;
// bool left = rand(s2 + 2) < v;
// bool down = rand(s0 + 1) < h;
// bool right = rand(s0 + 2) < v;
// bool up_down = up && down;
// bool left_right = left && right;
// uv1 = mod(uv1, 1.0) - .5;
// const float t = .1;
// float f = 0;
// int c = 0;
// if (up) {
// f += stripe(uv1.x, -t * .5, t * .5) * step(-t * .5, uv1.y);
// c += 1;
// }
// if (down) {
// f += stripe(uv1.x, -t * .5, t * .5) * istep(t * .5, uv1.y);
// c += 1;
// }
// if (left) {
// f += stripe(uv1.y, -t * .5, t * .5) * istep(t * .5, uv1.x);
// c += 1;
// }
// if (right) {
// f += stripe(uv1.y, -t * .5, t * .5) * step(-t * .5, uv1.x);
// c += 1;
// }
// if (c == 1) {
// f += istep(t, length(uv1));
// }
// f = min(f, 1);
// if ((up_down ^^ left_right) && c == 2) {
// if (up_down) {
// uv1.xy = uv1.yx;
// }
// if (rand(s0 + 3) < .5) {
// uv1.x = -uv1.x;
// }
// float k = rand(s0 + 4) * 60;
// f -= rect(uv1, vec2(0), vec2(t * 3, t));
// f = max(0, f);
// if (k < 10) { // resistor
// f += line(uv1, vec2(-t * 3.25, -t * .5), vec2(-t * 2.5, t * 2), t * .75);
// f += line(uv1, vec2(-t * 2.5, t * 2), vec2(-t * 1.5, -t * 2), t * .75);
// f += line(uv1, vec2(-t * 1.5, -t * 2), vec2(-t * .5, t * 2), t * .75);
// f += line(uv1, vec2(-t * .5, t * 2), vec2(t * .5, -t * 2), t * .75);
// f += line(uv1, vec2(t * .5, -t * 2), vec2(t * 1.5, t * 2), t * .75);
// f += line(uv1, vec2(t * 1.5, t * 2), vec2(t * 2.5, -t * 2), t * .75);
// f += line(uv1, vec2(t * 2.5, -t * 2), vec2(t * 3.25, t * .5), t * .75);
// } else if (k < 20) { // capacitor
// f += rect(uv1, vec2(-t * 2, 0), vec2(t, t * .5));
// f += rect(uv1, vec2(t * 2, 0), vec2(t, t * .5));
// f += rect(uv1, vec2(t, 0), vec2(t * .5, t * 3.5));
// f += rect(uv1, vec2(-t, 0), vec2(t * .5, t * 3.5));
// } else if (k < 30) { // diode
// f += line(uv1, vec2(-t * 2, t * 2.5), vec2(t * 2, 0), t);
// f += line(uv1, vec2(-t * 2, -t * 2.5), vec2(t * 2, 0), t);
// f += rect(uv1, vec2(t * 2.5, 0), vec2(t * .5, t * 3));
// f += rect(uv1, vec2(-t * 2.5, 0), vec2(t * .5, t * 3));
// } else if (k < 40) { // lamp
// f += istep(t * 3.5, length(uv1));
// f -= istep(t * 2.5, length(uv1));
// f += line(uv1, vec2(-t * 2), vec2(t * 2), t);
// f += line(uv1, vec2(-t * 2, t * 2), vec2(t * 2, -t * 2), t);
// } else if (k < 50) { // inductor
// f += istep(t * 2, length(uv1 - vec2(t * 2.5, 0)));
// f += istep(t * 2, length(uv1 - vec2(0, 0)));
// f += istep(t * 2, length(uv1 - vec2(-t * 2.5, 0)));
// f -= 2 * istep(t, length(uv1 - vec2(t * 2.5, 0)));
// f -= 2 * istep(t, length(uv1 - vec2(0, 0)));
// f -= 2 * istep(t, length(uv1 - vec2(-t * 2.5, 0)));
// f *= step(-t * .5, uv1.y);
// } else if (k < 60) { // switch
// f += istep(t, length(uv1 - vec2(t * 2.5, 0)));
// f += istep(t, length(uv1 + vec2(t * 2.5, 0)));
// f += line(uv1, vec2(t * 2, 0), vec2(-t * 2.5, t * (k < 55 ? 3 : 1)), t);
// }
// } else if (c == 3) {
// if (left_right) {
// uv1.xy = uv1.yx;
// if (up) {
// uv1.x = -uv1.x;
// }
// } else if (right) {
// uv1.x = -uv1.x;
// }
// float k = rand(s0 + 4) * 20;
// if (k < 10) {
// f -= rect(uv1, vec2(0), vec2(t * 3));
// f = max(0, f);
// f += rect(uv1, vec2(-t * 3, 0), vec2(t * .5, t * 3));
// f += line(uv1, vec2(t * .25, t * 3.25), vec2(-t * 3, t), t);
// f += line(uv1, vec2(t * .25, -t * 3.25), vec2(-t * 3, -t), t);
// }
// }
// return vec4(f);
// }
// SRC 4 : bacteria
vec4 src_4(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
@@ -236,23 +105,23 @@ vec4 src_4(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
vec2 uv0 = vUV.st;
float ratio = iResolution.x / iResolution.y;
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
// controls
float zoom = 2 + magic(f1, b1, seed + 10) * 20;
float details = 5 * magic(f2, b2, seed + 20);
float delta = magic(f3, b3, seed + 30);
float zoom = 2. + magic(f1, b1, seed + 10.) * 20.;
float details = 5. * magic(f2, b2, seed + 20.);
float delta = magic(f3, b3, seed + 30.);
// logic
uv1 *= zoom;
vec4 data = voronoi(uv1, 1, seed + 40, iBeats * .25);
vec4 data = voronoi(uv1, 1., seed + 40, iBeats * .25);
float f = ease(data.x) + ease(data.y);
f = saw(f * (1 + data.x * details) - delta * 2.0);
f = saw(f * (1. + data.x * details) - delta * 2.);
return vec4(f);
}
@@ -264,33 +133,159 @@ vec4 src_5(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
vec2 uv0 = vUV.st;
float ratio = iResolution.x / iResolution.y;
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
// controls
float zoom = magic(f1, b1, seed + 10);
float voronoi_distort = magic(f2, b2, seed + 20);
float details = magic(f3, b3, seed + 30);
float noise_factor = magic(seed + 40);
float zoom = magic(f1, b1, seed + 10.);
float voronoi_distort = magic(f2, b2, seed + 20.);
float details = magic(f3, b3, seed + 30.);
float noise_factor = magic(seed + 40.);
// logic
vec2 uv2 = uv1;
uv2 *= zoom * 20 + 3;
uv2 *= zoom * 20. + 3.;
uv2.x += iBeats;
vec4 data = voronoi(uv2, voronoi_distort, seed + 50, iBeats);
float f = data.x / (data.x + data.y);
f = sin(f * PI * (details * 20)) * .5 + 1;
int nf = int(noise_factor * 6);
f *= mix(1, noise_f(uv2, nf - 1), step(.0, float(nf)));
f = sin(f * PI * (details * 20.)) * .5 + 1.;
int nf = int(noise_factor * 6.);
f *= mix(1., noise_f(uv2, nf - 1), step(.0, float(nf)));
return vec4(f);
}
// SRC 6 : video in 1 + thru
// SRC 6 : circuit
vec4 src_6(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
{
return src_1(vUV, seed, b1, f1, b2, f2, b3, f3);
// start
vec2 uv0 = vUV.st;
float ratio = iResolution.x / iResolution.y;
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
// controls
float z = 10. + magic(f1, b1, 123.) * 20.;
float h = magic(f2, b2, seed + 20.) * .8 + .1;
float v = magic_reverse(f3, b3, seed + 30.) * .8 + .1;
// logic
uv1 *= z;
uv1 += iBeats;
float s0 = rand(floor(mod(uv1, 1000.))) * 1000.;
float s1 = rand(floor(mod(uv1 + vec2(0., 1.), 1000.))) * 1000.;
float s2 = rand(floor(mod(uv1 - vec2(1., 0.), 1000.))) * 1000.;
bool up = rand(s1 + 1.) < h;
bool left = rand(s2 + 2.) < v;
bool down = rand(s0 + 1.) < h;
bool right = rand(s0 + 2.) < v;
bool up_down = up && down;
bool left_right = left && right;
uv1 = mod(uv1, 1.) - .5;
const float t = .1;
float f = 0.;
int c = 0;
if (up) {
f += stripe(uv1.x, -t * .5, t * .5) * step(-t * .5, uv1.y);
c += 1;
}
if (down) {
f += stripe(uv1.x, -t * .5, t * .5) * istep(t * .5, uv1.y);
c += 1;
}
if (left) {
f += stripe(uv1.y, -t * .5, t * .5) * istep(t * .5, uv1.x);
c += 1;
}
if (right) {
f += stripe(uv1.y, -t * .5, t * .5) * step(-t * .5, uv1.x);
c += 1;
}
if (c == 1) {
f += istep(t, length(uv1));
}
f = min(f, 1.);
if ((up_down ^^ left_right) && c == 2) {
if (up_down) {
uv1.xy = uv1.yx;
}
if (rand(s0 + 3.) < .5) {
uv1.x = -uv1.x;
}
float k = rand(s0 + 4.) * 60;
f -= rect(uv1, vec2(0.), vec2(t * 3., t));
f = max(0., f);
if (k < 10.) { // resistor
f += line(uv1, vec2(-t * 3.25, -t * .5), vec2(-t * 2.5, t * 2.), t * .75);
f += line(uv1, vec2(-t * 2.5, t * 2.), vec2(-t * 1.5, -t * 2.), t * .75);
f += line(uv1, vec2(-t * 1.5, -t * 2.), vec2(-t * .5, t * 2.), t * .75);
f += line(uv1, vec2(-t * .5, t * 2.), vec2(t * .5, -t * 2.), t * .75);
f += line(uv1, vec2(t * .5, -t * 2.), vec2(t * 1.5, t * 2.), t * .75);
f += line(uv1, vec2(t * 1.5, t * 2.), vec2(t * 2.5, -t * 2.), t * .75);
f += line(uv1, vec2(t * 2.5, -t * 2.), vec2(t * 3.25, t * .5), t * .75);
} else if (k < 20.) { // capacitor
f += rect(uv1, vec2(-t * 2., 0.), vec2(t, t * .5));
f += rect(uv1, vec2(t * 2., 0.), vec2(t, t * .5));
f += rect(uv1, vec2(t, 0.), vec2(t * .5, t * 3.5));
f += rect(uv1, vec2(-t, 0.), vec2(t * .5, t * 3.5));
} else if (k < 30.) { // diode
f += line(uv1, vec2(-t * 2., t * 2.5), vec2(t * 2., 0.), t);
f += line(uv1, vec2(-t * 2., -t * 2.5), vec2(t * 2., 0.), t);
f += rect(uv1, vec2(t * 2.5, 0.), vec2(t * .5, t * 3.));
f += rect(uv1, vec2(-t * 2.5, 0.), vec2(t * .5, t * 3.));
} else if (k < 40.) { // lamp
f += istep(t * 3.5, length(uv1));
f -= istep(t * 2.5, length(uv1));
f += line(uv1, vec2(-t * 2.), vec2(t * 2.), t);
f += line(uv1, vec2(-t * 2., t * 2.), vec2(t * 2., -t * 2.), t);
} else if (k < 50.) { // inductor
f += istep(t * 2., length(uv1 - vec2(t * 2.5, 0.)));
f += istep(t * 2., length(uv1 - vec2(0., 0.)));
f += istep(t * 2., length(uv1 - vec2(-t * 2.5, 0.)));
f -= 2. * istep(t, length(uv1 - vec2(t * 2.5, 0.)));
f -= 2. * istep(t, length(uv1 - vec2(0., 0.)));
f -= 2. * istep(t, length(uv1 - vec2(-t * 2.5, 0.)));
f *= step(-t * .5, uv1.y);
} else if (k < 60.) { // switch
f += istep(t, length(uv1 - vec2(t * 2.5, 0.)));
f += istep(t, length(uv1 + vec2(t * 2.5, 0.)));
f += line(uv1, vec2(t * 2., 0.), vec2(-t * 2.5, t * (k < 55. ? 3. : 1.)), t);
}
} else if (c == 3) {
if (left_right) {
uv1.xy = uv1.yx;
if (up) {
uv1.x = -uv1.x;
}
} else if (right) {
uv1.x = -uv1.x;
}
float k = rand(s0 + 4.) * 20.;
if (k < 10.) {
f -= rect(uv1, vec2(0.), vec2(t * 3.));
f = max(0., f);
f += rect(uv1, vec2(-t * 3., 0.), vec2(t * .5, t * 3.));
f += line(uv1, vec2(t * .25, t * 3.25), vec2(-t * 3., t), t);
f += line(uv1, vec2(t * .25, -t * 3.25), vec2(-t * 3., -t), t);
}
}
return vec4(f);
}
#include inc_cp437.glsl
@@ -302,28 +297,28 @@ vec4 src_7(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
vec2 uv0 = vUV.st;
float ratio = iResolution.x / iResolution.y;
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
// controls
float zoom = magic(f1, b1, seed + 10);
vec2 charset = magic_f(f2, b2, seed + 20);
vec3 charset_ctrl = magic_b(b2, seed + 20);
float char_delta = magic(f3, b3, seed + 30);
float zoom = magic(f1, b1, seed + 10.);
vec2 charset = magic_f(f2, b2, seed + 20.);
vec3 charset_ctrl = magic_b(b2, seed + 20.);
float char_delta = magic(f3, b3, seed + 30.);
// logic
vec2 uv2 = uv1;
uv2 *= zoom * 20 + 3;
uv2 *= zoom * 20. + 3.;
uv2 += iBeats;
uv2 = mod(uv2, 100) + 100;
int start_char = charset_ctrl.x > 0 ? charsets[int(charset.x * CHARSETS) * 2] : 0x01;
int char_span = int((charset_ctrl.x > 0 ? charsets[int(charset.x * CHARSETS) * 2 + 1] : 255));
char_span = int(char_span * max(1 - charset.y, 1 / (char_span * .75)));
uv2 = mod(uv2, 100.) + 100.;
int start_char = charset_ctrl.x > 0. ? charsets[int(charset.x * CHARSETS) * 2] : 0x01;
int char_span = int((charset_ctrl.x > 0. ? charsets[int(charset.x * CHARSETS) * 2 + 1] : 255));
char_span = int(char_span * max(1. - charset.y, 1. / (char_span * .75)));
ivec2 uv2i = ivec2(uv2);
int code = ((charset_ctrl.y < 1 || (uv2i.x % 2 ^ uv2i.y % 2) > 0) ? 1 : 0) * (start_char + int((rand(uv2i) + char_delta) * char_span) % char_span);
uv2 = mod(uv2, 1);
float f = char(uv2, code) ? 1 : 0;
int code = ((charset_ctrl.y < 1. || (uv2i.x % 2 ^ uv2i.y % 2) > 0) ? 1 : 0) * (start_char + int((rand(uv2i) + char_delta) * char_span) % char_span);
uv2 = mod(uv2, 1.);
float f = char(uv2, code) ? 1. : 0.;
return vec4(f);
}
@@ -338,24 +333,24 @@ vec4 src_8(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
vec2 uv0 = vUV.st;
float ratio = iResolution.x / iResolution.y;
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
// controls
float zoom = magic(f1, b1, seed + 10);
float sentence = magic_reverse(f2, b2, seed + 20);
float h_delta = magic(f3, b3, seed + 30);
vec3 h_delta_b = magic_b(b3, seed + 30);
float zoom = magic(f1, b1, seed + 10.);
float sentence = magic_reverse(f2, b2, seed + 20.);
float h_delta = magic(f3, b3, seed + 30.);
vec3 h_delta_b = magic_b(b3, seed + 30.);
// logic
vec2 uv2 = uv1;
uv2 *= (1 + zoom) * 12;
uv2 *= (1. + zoom) * 12.;
uv2.y += .5;
int s = int(sentence * (SENTENCE_COUNT - 1));
uv2.x += floor(uv2.y) * (h_delta - .5) * 2;
uv2.y = mix(uv2.y, mod(uv2.y, 1), h_delta_b.x);
float f = write_sentence(uv2, vec2(-float(lengths[s]) * .5, 0), s);
uv2.x += floor(uv2.y) * (h_delta - .5) * 2.;
uv2.y = mix(uv2.y, mod(uv2.y, 1.), h_delta_b.x);
float f = write_sentence(uv2, vec2(-float(lengths[s]) * .5, 0.), s);
return vec4(f);
}
@@ -367,30 +362,30 @@ vec4 src_9(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
vec2 uv0 = vUV.st;
float ratio = iResolution.x / iResolution.y;
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
// controls
float h_shift = magic(f1, b1, seed + 10);
float sentence = magic_reverse(f2, b2, seed + 20);
float h_delta = magic(f3, b3, seed + 30);
vec3 h_delta_b = magic_b(b3, seed + 30);
float h_shift = magic(f1, b1, seed + 10.);
float sentence = magic_reverse(f2, b2, seed + 20.);
float h_delta = magic(f3, b3, seed + 30.);
vec3 h_delta_b = magic_b(b3, seed + 30.);
// logic
vec2 uv2 = uv1;
uv2.x += h_shift;
uv2 *= 15;
uv2 *= 15.;
uv2.y += .5;
int s = int(sentence * (SENTENCE_COUNT - 1));
float slen = float(lengths[s]);
uv2.x += floor(uv2.y) * (h_delta - .5) * 2;
uv2.x = cmod(uv2.x, slen + 1);
uv2.x += floor(uv2.y) * (h_delta - .5) * 2.;
uv2.x = cmod(uv2.x, slen + 1.);
vec2 uv3 = uv2;
uv3.y = mix(uv3.y, mod(uv3.y, 1), h_delta_b.x);
float f = write_sentence(uv3, vec2(-slen * .5, 0), s);
uv3.y = mix(uv3.y, mod(uv3.y, 1.), h_delta_b.x);
float f = write_sentence(uv3, vec2(-slen * .5, 0.), s);
f *= (1 - abs(floor(uv2.y) * .125)) * (1 - abs(floor(uv2.y) * .125));
f *= (1. - abs(floor(uv2.y) * .125)) * (1. - abs(floor(uv2.y) * .125));
return vec4(f);
}
@@ -402,13 +397,13 @@ vec4 src_10(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec
vec2 uv0 = vUV.st;
float ratio = iResolution.x / iResolution.y;
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
// controls
float zoom = 5 + magic(f1, b1, seed + 10) * 15;
float h_scroll = magic(f2, b2, seed + 20);
float max_elevation = magic(f3, b3, seed + 30) * .5;
float zoom = 5. + magic(f1, b1, seed + 10.) * 15.;
float h_scroll = magic(f2, b2, seed + 20.);
float max_elevation = magic(f3, b3, seed + 30.) * .5;
float thick = .1;
// logic
@@ -417,32 +412,32 @@ vec4 src_10(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec
vec2 uv3 = iso(uv2);
uv3 += vec2(h_scroll, 0);
uv3 += vec2(h_scroll, 0.);
uv3 *= round(zoom);
vec2 umax = vec2(round(zoom), 300);
vec2 umax = vec2(round(zoom), 300.);
vec2 u0 = mod(floor(uv3), umax);
vec2 u1 = mod(floor(uv3 + vec2(1, 0)), umax);
vec2 u2 = mod(floor(uv3 + vec2(0, 1)), umax);
vec2 u3 = mod(floor(uv3 + vec2(-1, 0)), umax);
vec2 u4 = mod(floor(uv3 + vec2(0, -1)), umax);
vec2 u1 = mod(floor(uv3 + vec2(1., 0.)), umax);
vec2 u2 = mod(floor(uv3 + vec2(0., 1.)), umax);
vec2 u3 = mod(floor(uv3 + vec2(-1., 0.)), umax);
vec2 u4 = mod(floor(uv3 + vec2(0., -1.)), umax);
float e0 = (rand(floor(u0)) * 2 - 1) * max_elevation;
float e1 = (rand(floor(u1)) * 2 - 1) * max_elevation;
float e2 = (rand(floor(u2)) * 2 - 1) * max_elevation;
float e3 = (rand(floor(u3)) * 2 - 1) * max_elevation;
float e4 = (rand(floor(u4)) * 2 - 1) * max_elevation;
float e0 = (rand(floor(u0)) * 2. - 1.) * max_elevation;
float e1 = (rand(floor(u1)) * 2. - 1.) * max_elevation;
float e2 = (rand(floor(u2)) * 2. - 1.) * max_elevation;
float e3 = (rand(floor(u3)) * 2. - 1.) * max_elevation;
float e4 = (rand(floor(u4)) * 2. - 1.) * max_elevation;
uv3 = mod(uv3, 1.0) - .5;
uv3 = mod(uv3, 1.) - .5;
float f = 0;
float f = 0.;
f = line(uv3, vec2(0, 0) - iso_z(e0), vec2(1, 0) - iso_z(e1), thick)
+ line(uv3, vec2(0, 0) - iso_z(e0), vec2(0, 1) - iso_z(e2), thick)
+ line(uv3, vec2(0, 0) - iso_z(e0), vec2(-1, 0) - iso_z(e3), thick)
+ line(uv3, vec2(0, 0) - iso_z(e0), vec2(0, -1) - iso_z(e4), thick);
f = line(uv3, vec2(0., 0.) - iso_z(e0), vec2(1., 0.) - iso_z(e1), thick)
+ line(uv3, vec2(0., 0.) - iso_z(e0), vec2(0., 1.) - iso_z(e2), thick)
+ line(uv3, vec2(0., 0.) - iso_z(e0), vec2(-1., 0.) - iso_z(e3), thick)
+ line(uv3, vec2(0., 0.) - iso_z(e0), vec2(0., -1.) - iso_z(e4), thick);
return vec4(f);
}
@@ -450,6 +445,7 @@ vec4 src_10(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec
// SRC 11 : video in 2 + thru
vec4 src_11(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
{
// TODO find another source
return src_1(vUV, seed, b1, f1, b2, f2, b3, f3);
}
@@ -460,38 +456,38 @@ vec4 src_12(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec
vec2 uv0 = vUV.st;
float ratio = iResolution.x / iResolution.y;
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
// controls
float zoom = 5 + magic(f1, b1, seed + 10) * 15;
float shape = magic(f2, b2, seed + 20);
float repeat = 1 + magic(f3, b3, seed + 30) * 10;
float zoom = 5. + magic(f1, b1, seed + 10.) * 15.;
float shape = magic(f2, b2, seed + 20.);
float repeat = 1. + magic(f3, b3, seed + 30.) * 10.;
// logic
float f = 0;
float f = 0.;
vec2 uv2 = uv1;
uv2 *= zoom;
uv2 = mod(uv2, 4);
uv2 = mod(uv2, 4.);
vec2 uv3 = uv2;
uv3.y = mix(uv3.y, -uv3.y, step(2, uv2.x) * step(2, uv2.y));
uv3.y = mix(uv3.y, -uv3.y, istep(2, uv2.x) * istep(2, uv2.y));
uv3.y = mix(uv3.y, -uv3.y, step(2., uv2.x) * step(2., uv2.y));
uv3.y = mix(uv3.y, -uv3.y, istep(2., uv2.x) * istep(2., uv2.y));
uv3.y = -uv3.y;
uv3.x = mix(-uv3.x, uv3.x, istep(3, uv2.x) * step(1, uv2.x));
uv3.x = mix(-uv3.x, uv3.x, istep(3, uv2.y) * step(1, uv2.y));
uv3.x = mix(-uv3.x, uv3.x, istep(3., uv2.x) * step(1., uv2.x));
uv3.x = mix(-uv3.x, uv3.x, istep(3., uv2.y) * step(1., uv2.y));
f = istep(.5, saw((length(mod(uv3, 1)) + shape + .5) * repeat));
f = istep(.5, saw((length(mod(uv3, 1.)) + shape + .5) * repeat));
f = mix(1 - f, f, istep(1, abs(uv2.y - 2)) * istep(2, uv2.x));
f = mix(1 - f, f, step(1, abs(uv2.y - 2)) * step(2, uv2.x));
f = mix(1. - f, f, istep(1., abs(uv2.y - 2.)) * istep(2., uv2.x));
f = mix(1. - f, f, step(1., abs(uv2.y - 2.)) * step(2., uv2.x));
return vec4(f);
}
@@ -503,13 +499,13 @@ vec4 src_13(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec
vec2 uv0 = vUV.st;
float ratio = iResolution.x / iResolution.y;
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
// controls
float zoom = 5 + magic(f1, b1, seed + 10) * 15;
float shape = .1 + magic(f2, b2, seed + 20) * .9;
float repeat = 1 + magic(f3, b3, seed + 30) * 10;
float zoom = 5. + magic(f1, b1, seed + 10.) * 15.;
float shape = .1 + magic(f2, b2, seed + 20.) * .9;
float repeat = 1. + magic(f3, b3, seed + 30.) * 10.;
// logic
@@ -517,13 +513,13 @@ vec4 src_13(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec
uv2 *= zoom;
uv2 = mod(uv2, 2);
uv2 = mod(uv2, 2.);
uv2 = abs(uv2 - 1);
uv2 = abs(uv2 - 1.);
float f = istep(1, length(uv2)) * istep(1, length(1 - uv2));
float f = istep(1., length(uv2)) * istep(1., length(1. - uv2));
f *= istep(.5, saw((length(uv2) + shape + .5) * repeat)) * istep(.5, saw((length(1 - uv2) + shape + .5) * repeat));
f *= istep(.5, saw((length(uv2) + shape + .5) * repeat)) * istep(.5, saw((length(1. - uv2) + shape + .5) * repeat));
return vec4(f);
}
@@ -535,15 +531,15 @@ vec4 src_14(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec
vec2 uv0 = vUV.st;
float ratio = iResolution.x / iResolution.y;
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
// controls
float size = magic(f1, b1, seed + 10) * 2 + .1;
float dx = (fmagic(f2, b2, seed + 20) * (1 - size * .06) - .5) * ratio;
bool flip_x = magic_trigger(b2, seed + 20);
float dy = fmagic(f3, b3, seed + 30) * (1 - size * .17) - .5;
bool flip_y = magic_trigger(b3, seed + 30);
float size = magic(f1, b1, seed + 10.) * 2. + .1;
float dx = (fmagic(f2, b2, seed + 20.) * (1. - size * .06) - .5) * ratio;
bool flip_x = magic_trigger(b2, seed + 20.);
float dy = fmagic(f3, b3, seed + 30.) * (1. - size * .17) - .5;
bool flip_y = magic_trigger(b3, seed + 30.);
// logic
@@ -561,15 +557,15 @@ vec4 src_14(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec
uv2 /= size;
uv2 *= -rot(-PI / 2);
uv2 *= -rot(-PI * 0.5);
float f = istep(0, (uv2.x * 2 + uv2.y) * (uv2.x * 2 - uv2.y)) * istep(0, uv2.y);
float f = istep(0., (uv2.x * 2. + uv2.y) * (uv2.x * 2. - uv2.y)) * istep(0., uv2.y);
uv2.y += .1;
f -= istep(0, (uv2.x + uv2.y * 3) * (uv2.x - uv2.y * 3)) * istep(0, uv2.y);
f -= istep(0., (uv2.x + uv2.y * 3.) * (uv2.x - uv2.y * 3.)) * istep(0., uv2.y);
f += rect(uv2, vec2(0, -.04), vec2(.01, .04));
f += rect(uv2, vec2(0., -.04), vec2(.01, .04));
return vec4(f);
}
@@ -577,7 +573,7 @@ vec4 src_14(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec
vec4 src_stage(int src, vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
{
if (src >= 15) {
src = int(randTime(seed + 100) * 14) + 1;
src = int(randTime(seed + 100.) * 14.) + 1;
}
if (src == 1) {