upgrade glsl code
This commit is contained in:
@@ -36,8 +36,9 @@ echo 'make -C /opt/forge-invar start-weston' >> ~/.bashrc
|
|||||||
|
|
||||||
Logical
|
Logical
|
||||||
|
|
||||||
* [ ] Play on start
|
* [x] Play on start
|
||||||
* [ ] disable services for faster boot
|
* [ ] disable services for faster boot
|
||||||
|
* [ ] special texts in demo vs classic
|
||||||
* [ ] Save while running
|
* [ ] Save while running
|
||||||
|
|
||||||
Physical
|
Physical
|
||||||
|
|||||||
+2
-2
@@ -19,8 +19,8 @@ uniform int iSeed5;
|
|||||||
uniform vec3 iGroup3_1[2];
|
uniform vec3 iGroup3_1[2];
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
float mix_value = magic(iGroup3_1[1].xy, vec3(1, 0, 0), iSeed5);
|
float mix_value = magic(iGroup3_1[1].xy, vec3(1., 0., 0.), iSeed5);
|
||||||
bool mix_type = magic_trigger(vec3(iGroup3_1[0].x, 0, 0), iSeed5 + 10);
|
bool mix_type = magic_trigger(vec3(iGroup3_1[0].x, 0., 0.), iSeed5 + 10.);
|
||||||
|
|
||||||
vec4 color_a = texture(iTex3, vUV);
|
vec4 color_a = texture(iTex3, vUV);
|
||||||
vec4 color_b = texture(iTex4, vUV);
|
vec4 color_b = texture(iTex4, vUV);
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@ uniform vec3 iGroup3_1[2];
|
|||||||
void main() {
|
void main() {
|
||||||
vec4 color = fx_stage(iState6, vUV, iTex5, iTex0, iSeed6, iGroup2_3[0], iGroup2_3[1].xy, iGroup2_3[2], iGroup2_3[3].xy, iGroup2_3[4], iGroup2_3[5].xy, iGroup2_3[6]);
|
vec4 color = fx_stage(iState6, vUV, iTex5, iTex0, iSeed6, iGroup2_3[0], iGroup2_3[1].xy, iGroup2_3[2], iGroup2_3[3].xy, iGroup2_3[4], iGroup2_3[5].xy, iGroup2_3[6]);
|
||||||
|
|
||||||
color = mix(color, vec4(0), iGroup3_1[0].y);
|
color = mix(color, vec4(0.), iGroup3_1[0].y);
|
||||||
|
|
||||||
fragColor = color;
|
fragColor = color;
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -18,7 +18,7 @@ void main() {
|
|||||||
// vec2 uv = 1 - vUV;
|
// vec2 uv = 1 - vUV;
|
||||||
vec2 uv = vUV;
|
vec2 uv = vUV;
|
||||||
vec3 c = texture(iTex0, uv).xyz;
|
vec3 c = texture(iTex0, uv).xyz;
|
||||||
c = mix(c, 1 - c, iDemo * write_int(uv * 20, vec2(1.), iFPS, 2));
|
c = mix(c, 1. - c, iDemo * write_int(uv * 20., vec2(1.), iFPS, 2));
|
||||||
c = mix(c, 1 - c, iDemo * write_5(uv * 20, vec2(1., 18.), demoStr));
|
c = mix(c, 1. - c, iDemo * write_5(uv * 20., vec2(1., 18.), demoStr));
|
||||||
fragColor = vec4(c, 1);
|
fragColor = vec4(c, 1);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-59
@@ -336,7 +336,7 @@ float write_10(vec2 uv, vec2 pos, int str[10])
|
|||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
d += char_at(uv, pos + vec2(i, 0), str[i]);
|
d += char_at(uv, pos + vec2(i, 0.), str[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return d;
|
return d;
|
||||||
@@ -386,62 +386,4 @@ float write_int_left(vec2 uv, vec2 pos, int value, int magnitude)
|
|||||||
return write_int(uv, pos, value, magnitude);
|
return write_int(uv, pos, value, magnitude);
|
||||||
}
|
}
|
||||||
|
|
||||||
int read(sampler2D tex, vec2 uv, float k, int d, float t)
|
|
||||||
{
|
|
||||||
float inv_k = 1 / k;
|
|
||||||
vec2 tex_uv = floor(uv * k) * inv_k;
|
|
||||||
tex_uv += vec2(d % 2, floor(d * .5)) * .5 * inv_k;
|
|
||||||
return
|
|
||||||
((mean(reframe(tex, tex_uv + vec2(0, 3) * inv_k * .125)) > t) ? 1 : 0) +
|
|
||||||
((mean(reframe(tex, tex_uv + vec2(0, 2) * inv_k * .125)) > t) ? 2 : 0) +
|
|
||||||
((mean(reframe(tex, tex_uv + vec2(0, 1) * inv_k * .125)) > t) ? 4 : 0) +
|
|
||||||
((mean(reframe(tex, tex_uv + vec2(0, 0) * inv_k * .125)) > t) ? 8 : 0) +
|
|
||||||
((mean(reframe(tex, tex_uv + vec2(1, 3) * inv_k * .125)) > t) ? 16 : 0) +
|
|
||||||
((mean(reframe(tex, tex_uv + vec2(1, 2) * inv_k * .125)) > t) ? 32 : 0) +
|
|
||||||
((mean(reframe(tex, tex_uv + vec2(1, 1) * inv_k * .125)) > t) ? 64 : 0) +
|
|
||||||
((mean(reframe(tex, tex_uv + vec2(1, 0) * inv_k * .125)) > t) ? 128 : 0) +
|
|
||||||
((mean(reframe(tex, tex_uv + vec2(2, 3) * inv_k * .125)) > t) ? 256 : 0) +
|
|
||||||
((mean(reframe(tex, tex_uv + vec2(2, 2) * inv_k * .125)) > t) ? 512 : 0) +
|
|
||||||
((mean(reframe(tex, tex_uv + vec2(2, 1) * inv_k * .125)) > t) ? 1024 : 0) +
|
|
||||||
((mean(reframe(tex, tex_uv + vec2(2, 0) * inv_k * .125)) > t) ? 2048 : 0) +
|
|
||||||
((mean(reframe(tex, tex_uv + vec2(3, 3) * inv_k * .125)) > t) ? 4096 : 0) +
|
|
||||||
((mean(reframe(tex, tex_uv + vec2(3, 2) * inv_k * .125)) > t) ? 8192 : 0) +
|
|
||||||
((mean(reframe(tex, tex_uv + vec2(3, 1) * inv_k * .125)) > t) ? 16384 : 0) +
|
|
||||||
((mean(reframe(tex, tex_uv + vec2(3, 0) * inv_k * .125)) > t) ? 32768 : 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// https://web.archive.org/web/20151229003112/http://blogs.msdn.com/b/jeuge/archive/2005/06/08/hakmem-bit-count.aspx
|
|
||||||
int bit_count(int u)
|
|
||||||
{
|
|
||||||
int c;
|
|
||||||
c = u - ((u >> 1) & 033333333333) - ((u >> 2) & 011111111111);
|
|
||||||
return ((c + (c >> 3)) & 030707070707) % 63;
|
|
||||||
}
|
|
||||||
|
|
||||||
int guess_char(sampler2D tex, vec2 uv, float k, float t)
|
|
||||||
{
|
|
||||||
int b0 = read(tex, uv, k, 0, t);
|
|
||||||
int b1 = read(tex, uv, k, 1, t);
|
|
||||||
int b2 = read(tex, uv, k, 2, t);
|
|
||||||
int b3 = read(tex, uv, k, 3, t);
|
|
||||||
|
|
||||||
int mc = 0;
|
|
||||||
int mb = 100;
|
|
||||||
int i;
|
|
||||||
int b;
|
|
||||||
|
|
||||||
for (i = 0x01; i <= 0xFF; i++) {
|
|
||||||
if (i == 0x20 || i == 0xff || i == 0xDB) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
b = bit_count(cp437[i * 4] ^ b0) + bit_count(cp437[i * 4 + 1] ^ b1) + bit_count(cp437[i * 4 + 2] ^ b2) + + bit_count(cp437[i * 4 + 3] ^ b3);
|
|
||||||
if (b < mb) {
|
|
||||||
mb = b;
|
|
||||||
mc = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return mc;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -64,8 +64,8 @@ vec3 cmod(vec3 x, float k) {
|
|||||||
vec3 col(float x) {
|
vec3 col(float x) {
|
||||||
return vec3(
|
return vec3(
|
||||||
.5 * (sin(x * 2. * PI) + 1.),
|
.5 * (sin(x * 2. * PI) + 1.),
|
||||||
.5 * (sin(x * 2. * PI + 2. * PI / 3.) + 1.),
|
.5 * (sin(x * 2. * PI + PI * .6666667) + 1.),
|
||||||
.5 * (sin(x * 2. * PI - 2. * PI / 3.) + 1.)
|
.5 * (sin(x * 2. * PI - PI * .6666667) + 1.)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ vec3 mix5(vec3 c1, vec3 c2, vec3 c3, vec3 c4, vec3 c5, float x) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
vec3 mix6(vec3 c1, vec3 c2, vec3 c3, vec3 c4, vec3 c5, vec3 c6, float x) {
|
vec3 mix6(vec3 c1, vec3 c2, vec3 c3, vec3 c4, vec3 c5, vec3 c6, float x) {
|
||||||
return istep(.2, x) * mix(c1, c2, x * 5)
|
return istep(.2, x) * mix(c1, c2, x * 5.)
|
||||||
+ step(.2, x) * istep(.4, x) * mix(c2, c3, x * 5. - 1.)
|
+ step(.2, x) * istep(.4, x) * mix(c2, c3, x * 5. - 1.)
|
||||||
+ step(.4, x) * istep(.6, x) * mix(c3, c4, x * 5. - 2.)
|
+ step(.4, x) * istep(.6, x) * mix(c3, c4, x * 5. - 2.)
|
||||||
+ step(.6, x) * istep(.8, x) * mix(c4, c5, x * 5. - 3.)
|
+ step(.6, x) * istep(.8, x) * mix(c4, c5, x * 5. - 3.)
|
||||||
@@ -135,8 +135,8 @@ vec2 lens(vec2 uv, float limit, float power) {
|
|||||||
|
|
||||||
vec2 kal(vec2 uv, float n) {
|
vec2 kal(vec2 uv, float n) {
|
||||||
float t = atan(uv.y, uv.x) + PI * .5;
|
float t = atan(uv.y, uv.x) + PI * .5;
|
||||||
float q = 3. / (2. * PI);
|
float q = .4774648; // 3. / (2. * PI);
|
||||||
t = abs(mod(t + PI / (n), 2. * PI / n) - PI / (n));
|
t = abs(mod(t + PI / n, 2. * PI / n) - PI / n);
|
||||||
return length(uv) * vec2(
|
return length(uv) * vec2(
|
||||||
cos(t),
|
cos(t),
|
||||||
sin(t)
|
sin(t)
|
||||||
@@ -322,7 +322,7 @@ vec4 kernel(sampler2D tex, vec2 uv, mat3x3 k, float spm)
|
|||||||
for (y = -1; y <= 1; ++y) {
|
for (y = -1; y <= 1; ++y) {
|
||||||
for (x = -1; x <= 1; ++x) {
|
for (x = -1; x <= 1; ++x) {
|
||||||
offset = vec2(x, y) * spm;
|
offset = vec2(x, y) * spm;
|
||||||
if (abs(k[x + 1][y + 1]) > 0) {
|
if (abs(k[x + 1][y + 1]) > 0.) {
|
||||||
sum += k[x + 1][y + 1] * texture(tex, uv + offset);
|
sum += k[x + 1][y + 1] * texture(tex, uv + offset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+85
-85
@@ -6,14 +6,14 @@
|
|||||||
#define INC_FX
|
#define INC_FX
|
||||||
|
|
||||||
vec4 fx_master(vec3 c0, vec3 c, int seed, vec3 m0) {
|
vec4 fx_master(vec3 c0, vec3 c, int seed, vec3 m0) {
|
||||||
float fx = magic(m0.xy, vec3(1,0,0), seed);
|
float fx = magic(m0.xy, vec3(1., 0., 0.), seed);
|
||||||
bool invert = magic_trigger(vec3(m0.z, 0, 0), seed);
|
bool invert = magic_trigger(vec3(m0.z, 0., 0.), seed);
|
||||||
|
|
||||||
vec3 c_out = mix(c0, c, fx);
|
vec3 c_out = mix(c0, c, fx);
|
||||||
|
|
||||||
c_out = mix(c_out, 1 - c_out, invert ? 1 : 0);
|
c_out = mix(c_out, 1. - c_out, invert ? 1. : 0.);
|
||||||
|
|
||||||
return vec4(c_out, 1.0);
|
return vec4(c_out, 1.);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FX 1 : thru
|
// FX 1 : thru
|
||||||
@@ -25,17 +25,17 @@ vec4 fx_1(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, v
|
|||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float hue = magic(f1, b1, seed + 10);
|
float hue = magic(f1, b1, seed + 10.);
|
||||||
float saturation = magic(f2, b2, seed + 20);
|
float saturation = magic(f2, b2, seed + 20.);
|
||||||
float light = magic(f3, b3, seed + 30);
|
float light = magic(f3, b3, seed + 30.);
|
||||||
|
|
||||||
// logic
|
// logic
|
||||||
|
|
||||||
vec3 c0 = texture(previous, uv0).xyz;
|
vec3 c0 = texture(previous, uv0).xyz;
|
||||||
vec3 c = c0;
|
vec3 c = c0;
|
||||||
c = shift3(c, hue);
|
c = shift3(c, hue);
|
||||||
c *= 1 + saturation;
|
c *= 1. + saturation;
|
||||||
c = mix(c + light * 2.0, c - (1 - light) * 2.0, step(.5, light));
|
c = mix(c + light * 2., c - (1. - light) * 2., step(.5, light));
|
||||||
|
|
||||||
return fx_master(c0, c, seed, m0);
|
return fx_master(c0, c, seed, m0);
|
||||||
}
|
}
|
||||||
@@ -47,7 +47,7 @@ vec4 fx_shift(vec2 vUV, sampler2D src0, sampler2D src1, int seed, vec3 b1, vec2
|
|||||||
|
|
||||||
vec2 uv0 = vUV.st;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
@@ -111,24 +111,24 @@ vec4 fx_5(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, v
|
|||||||
|
|
||||||
vec2 uv0 = vUV.st;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float pixel_size = magic(f1, b1, seed + 10);
|
float pixel_size = magic(f1, b1, seed + 10.);
|
||||||
float quantize = magic(f2, b2, seed + 20);
|
float quantize = magic(f2, b2, seed + 20.);
|
||||||
bool quantize_trigger = magic_trigger(b2, seed + 20);
|
bool quantize_trigger = magic_trigger(b2, seed + 20.);
|
||||||
float blur = magic(f3, b3, seed + 30);
|
float blur = magic(f3, b3, seed + 30.);
|
||||||
|
|
||||||
// logic
|
// logic
|
||||||
|
|
||||||
vec3 c0 = texture(previous, uv0).xyz;
|
vec3 c0 = texture(previous, uv0).xyz;
|
||||||
|
|
||||||
vec2 uv2 = uv1;
|
vec2 uv2 = uv1;
|
||||||
float pixel = (1 - pixel_size) * 250 + 25;
|
float pixel = (1., - pixel_size) * 250. + 25.;
|
||||||
uv2 = round(uv2 * pixel) / pixel;
|
uv2 = round(uv2 * pixel) / pixel;
|
||||||
vec3 c = gauss(previous, uv2 * vec2(1 / ratio, 1) + .5, 3, .005 * blur).xyz;
|
vec3 c = gauss(previous, uv2 * vec2(1. / ratio, 1.) + .5, 3, .005 * blur).xyz;
|
||||||
float colors = (1 - quantize) * 10 + 1;
|
float colors = (1. - quantize) * 10. + 1.;
|
||||||
if (quantize_trigger) {
|
if (quantize_trigger) {
|
||||||
c = round(c * colors) / colors;
|
c = round(c * colors) / colors;
|
||||||
}
|
}
|
||||||
@@ -144,7 +144,7 @@ vec4 fx_6(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, v
|
|||||||
|
|
||||||
vec2 uv0 = vUV.st;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
@@ -186,13 +186,13 @@ vec4 fx_7(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, v
|
|||||||
|
|
||||||
vec2 uv0 = vUV.st;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float lens_v = magic(f1, b1, seed + 10);
|
float lens_v = magic(f1, b1, seed + 10.);
|
||||||
float horizontal_noise = magic(f2, b2, seed + 20);
|
float horizontal_noise = magic(f2, b2, seed + 20.);
|
||||||
float zoom = magic(f3, b3, seed + 30);
|
float zoom = magic(f3, b3, seed + 30.);
|
||||||
|
|
||||||
// logic
|
// logic
|
||||||
|
|
||||||
@@ -200,12 +200,12 @@ vec4 fx_7(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, v
|
|||||||
|
|
||||||
vec2 uv2 = uv1;
|
vec2 uv2 = uv1;
|
||||||
float k1 = lens_v * .5;
|
float k1 = lens_v * .5;
|
||||||
uv2 *= 1 + zoom * 2;
|
uv2 *= 1. + zoom * 2.;
|
||||||
uv2 = lens(uv2, -k1, k1);
|
uv2 = lens(uv2, -k1, k1);
|
||||||
float k = horizontal_noise;
|
float k = horizontal_noise;
|
||||||
vec3 c = vec3(
|
vec3 c = vec3(
|
||||||
reframe_b(previous, uv2 + vec2((rand(uv0.y * 1000 + iTime) - .5) * k * .1)).x,
|
reframe_b(previous, uv2 + vec2((rand(uv0.y * 1000. + iTime) - .5) * k * .1)).x,
|
||||||
reframe_b(previous, uv2 + vec2((rand(uv0.y * 1100 + iTime) - .5) * k * .1)).y,
|
reframe_b(previous, uv2 + vec2((rand(uv0.y * 1100. + iTime) - .5) * k * .1)).y,
|
||||||
reframe_b(previous, uv2).z
|
reframe_b(previous, uv2).z
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -219,23 +219,23 @@ vec4 fx_8(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, v
|
|||||||
|
|
||||||
vec2 uv0 = vUV.st;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float axes = magic(f1, b1, seed + 10);
|
float axes = magic(f1, b1, seed + 10.);
|
||||||
float axes_trigger = magic_b(b1, seed + 10).x;
|
float axes_trigger = magic_b(b1, seed + 10.).x;
|
||||||
float rotation = magic(f2, b2, seed + 20);
|
float rotation = magic(f2, b2, seed + 20.);
|
||||||
float h_scroll = magic(f3, b3, seed + 30);
|
float h_scroll = magic(f3, b3, seed + 30.);
|
||||||
|
|
||||||
// logic
|
// logic
|
||||||
|
|
||||||
vec3 c0 = texture(previous, uv0).xyz;
|
vec3 c0 = texture(previous, uv0).xyz;
|
||||||
|
|
||||||
vec2 uv2 = uv1;
|
vec2 uv2 = uv1;
|
||||||
uv2 = mix(uv2, kal2(uv2 * rot(.25), floor(axes * 9 + 1)) * vec2(1, -2) + vec2(0, -.5), axes_trigger);
|
uv2 = mix(uv2, kal2(uv2 * rot(.25), floor(axes * 9. + 1.)) * vec2(1., -2.) + vec2(0., -.5), axes_trigger);
|
||||||
uv2 *= rot(rotation);
|
uv2 *= rot(rotation);
|
||||||
uv2.x = (saw(uv2.x / ratio + .5 + h_scroll * 2) - .5) * ratio;
|
uv2.x = (saw(uv2.x / ratio + .5 + h_scroll * 2.) - .5) * ratio;
|
||||||
vec3 c = reframe(previous, uv2).xyz;
|
vec3 c = reframe(previous, uv2).xyz;
|
||||||
|
|
||||||
return fx_master(c0, c, seed, m0);
|
return fx_master(c0, c, seed, m0);
|
||||||
@@ -250,35 +250,35 @@ vec4 fx_9(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, v
|
|||||||
|
|
||||||
vec2 uv0 = vUV.st;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float zoom = magic(f1, b1, seed + 10);
|
float zoom = magic(f1, b1, seed + 10.);
|
||||||
vec2 charset = magic_f(f2, b2, seed + 20);
|
vec2 charset = magic_f(f2, b2, seed + 20.);
|
||||||
vec3 charset_ctrl = magic_b(b2, seed + 20);
|
vec3 charset_ctrl = magic_b(b2, seed + 20.);
|
||||||
float char_delta = magic(f3, b3, seed + 30);
|
float char_delta = magic(f3, b3, seed + 30.);
|
||||||
float t = magic(seed + 40);
|
float t = magic(seed + 40.);
|
||||||
|
|
||||||
// logic
|
// logic
|
||||||
|
|
||||||
vec3 c0 = texture(previous, uv0).xyz;
|
vec3 c0 = texture(previous, uv0).xyz;
|
||||||
|
|
||||||
vec2 uv2 = uv1;
|
vec2 uv2 = uv1;
|
||||||
float k1 = 100 * (1 - zoom) + 10;
|
float k1 = 100. * (1. - zoom) + 10.;
|
||||||
float inv_k = 1 / k1;
|
float inv_k = 1. / k1;
|
||||||
uv2 = floor(uv2 * k1) * inv_k;
|
uv2 = floor(uv2 * k1) * inv_k;
|
||||||
int start_char = charset_ctrl.x > 0 ? charsets[int(charset.x * CHARSETS) * 2] : 0x01;
|
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));
|
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)));
|
char_span = int(char_span * max(1. - charset.y, 1. / (char_span * .75)));
|
||||||
ivec2 uv2i = ivec2(uv2 * k1);
|
ivec2 uv2i = ivec2(uv2 * k1);
|
||||||
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);
|
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);
|
||||||
vec3 c = reframe(previous, uv2 + vec2(0, 0) * inv_k * .125).xyz * .2
|
vec3 c = reframe(previous, uv2 + vec2(0., 0.) * inv_k * .125).xyz * .2
|
||||||
+ reframe(previous, uv2 + vec2(1, 0) * inv_k * .125).xyz * .2
|
+ reframe(previous, uv2 + vec2(1., 0.) * inv_k * .125).xyz * .2
|
||||||
+ reframe(previous, uv2 + vec2(1, 1) * inv_k * .125).xyz * .2
|
+ reframe(previous, uv2 + vec2(1., 1.) * inv_k * .125).xyz * .2
|
||||||
+ reframe(previous, uv2 + vec2(0, 1) * inv_k * .125).xyz * .2
|
+ reframe(previous, uv2 + vec2(0., 1.) * inv_k * .125).xyz * .2
|
||||||
+ reframe(previous, uv2 + vec2(.5, .5) * inv_k * .125).xyz * .2;
|
+ reframe(previous, uv2 + vec2(.5, .5) * inv_k * .125).xyz * .2;
|
||||||
c = char(mod(uv1 * k1, 1), code) ? c : vec3(0);
|
c = char(mod(uv1 * k1, 1.), code) ? c : vec3(0.);
|
||||||
|
|
||||||
return fx_master(c0, c, seed, m0);
|
return fx_master(c0, c, seed, m0);
|
||||||
}
|
}
|
||||||
@@ -290,22 +290,22 @@ vec4 fx_10(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1,
|
|||||||
|
|
||||||
vec2 uv0 = vUV.st;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float lens_v1 = magic(f1, b1, seed + 10);
|
float lens_v1 = magic(f1, b1, seed + 10.);
|
||||||
float lens_v2 = magic(f2, b2, seed + 20);
|
float lens_v2 = magic(f2, b2, seed + 20.);
|
||||||
float zoom = magic(f3, b3, seed + 30);
|
float zoom = magic(f3, b3, seed + 30.);
|
||||||
float k = magic(seed + 40);
|
float k = magic(seed + 40.);
|
||||||
|
|
||||||
// logic
|
// logic
|
||||||
|
|
||||||
vec3 c0 = texture(previous, uv0).xyz;
|
vec3 c0 = texture(previous, uv0).xyz;
|
||||||
|
|
||||||
vec2 uv2 = uv1;
|
vec2 uv2 = uv1;
|
||||||
uv2 *= 1 + zoom * 2;
|
uv2 *= 1. + zoom * 2.;
|
||||||
uv2 = lens(uv2, -lens_v2 * 10, lens_v1 * 10);
|
uv2 = lens(uv2, -lens_v2 * 10., lens_v1 * 10.);
|
||||||
vec3 c = reframe(previous, uv2).xyz;
|
vec3 c = reframe(previous, uv2).xyz;
|
||||||
|
|
||||||
return fx_master(c0, c, seed, m0);
|
return fx_master(c0, c, seed, m0);
|
||||||
@@ -318,13 +318,13 @@ vec4 fx_11(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1,
|
|||||||
|
|
||||||
vec2 uv0 = vUV.st;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float wall1 = magic(f1, b1, seed + 10);
|
float wall1 = magic(f1, b1, seed + 10.);
|
||||||
float wall2 = magic(f2, b2, seed + 20);
|
float wall2 = magic(f2, b2, seed + 20.);
|
||||||
float angle = magic(f3, b3, seed + 30);
|
float angle = magic(f3, b3, seed + 30.);
|
||||||
|
|
||||||
// logic
|
// logic
|
||||||
|
|
||||||
@@ -332,8 +332,8 @@ vec4 fx_11(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1,
|
|||||||
|
|
||||||
vec2 uv2 = uv1;
|
vec2 uv2 = uv1;
|
||||||
uv2 *= rot(angle);
|
uv2 *= rot(angle);
|
||||||
uv2.y = min(uv2.y, 1 - wall1);
|
uv2.y = min(uv2.y, 1. - wall1);
|
||||||
uv2.y = -min(-uv2.y, 1 - wall2);
|
uv2.y = -min(-uv2.y, 1. - wall2);
|
||||||
uv2 *= rot(-angle);
|
uv2 *= rot(-angle);
|
||||||
vec3 c = reframe(previous, uv2).xyz;
|
vec3 c = reframe(previous, uv2).xyz;
|
||||||
|
|
||||||
@@ -347,24 +347,24 @@ vec4 fx_12(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1,
|
|||||||
|
|
||||||
vec2 uv0 = vUV.st;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float pixel_size = magic(f1, b1, seed + 10);
|
float pixel_size = magic(f1, b1, seed + 10.);
|
||||||
bool pixel_size_trigger = magic_trigger(b1, seed + 10);
|
bool pixel_size_trigger = magic_trigger(b1, seed + 10.);
|
||||||
f2 = magic_f(f2, b2, seed + 20);
|
f2 = magic_f(f2, b2, seed + 20.);
|
||||||
int rule = int(f2.x * 12);
|
int rule = int(f2.x * 12.);
|
||||||
float threshold = f2.y * .9 + .05;
|
float threshold = f2.y * .9 + .05;
|
||||||
float fb = magic(f3, b3, seed + 30);
|
float fb = magic(f3, b3, seed + 30.);
|
||||||
|
|
||||||
// logic
|
// logic
|
||||||
|
|
||||||
vec3 c0 = texture(previous, uv0).xyz;
|
vec3 c0 = texture(previous, uv0).xyz;
|
||||||
|
|
||||||
vec2 uv2 = uv1;
|
vec2 uv2 = uv1;
|
||||||
float k1 = pow(2, 9 - floor(pixel_size * 5));
|
float k1 = pow(2., 9. - floor(pixel_size * 5.));
|
||||||
float p = 1 / k1;
|
float p = 1. / k1;
|
||||||
uv2 = round(uv2 * k1) / k1;
|
uv2 = round(uv2 * k1) / k1;
|
||||||
vec3 c1 = mix(
|
vec3 c1 = mix(
|
||||||
reframe(previous, uv2 + vec2(.5, .5) * p).xyz,
|
reframe(previous, uv2 + vec2(.5, .5) * p).xyz,
|
||||||
@@ -449,7 +449,7 @@ vec4 fx_12(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1,
|
|||||||
alive = n >= 6 || !alive && n == 4 || alive && (n == 3 || n == 5);
|
alive = n >= 6 || !alive && n == 4 || alive && (n == 3 || n == 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
vec3 cout = vec3(alive ? 1 : 0);
|
vec3 cout = vec3(alive ? 1. : 0.);
|
||||||
|
|
||||||
return fx_master(c0, cout, seed, m0);
|
return fx_master(c0, cout, seed, m0);
|
||||||
}
|
}
|
||||||
@@ -461,20 +461,20 @@ vec4 fx_13(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1,
|
|||||||
|
|
||||||
vec2 uv0 = vUV.st;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float sx = magic(f1, b1, seed + 10) * 2;
|
float sx = magic(f1, b1, seed + 10.) * 2.;
|
||||||
float sy = magic(f2, b2, seed + 20) * 2;
|
float sy = magic(f2, b2, seed + 20.) * 2.;
|
||||||
float disp = .005 * magic(f3, b3, seed + 30);
|
float disp = .005 * magic(f3, b3, seed + 30.);
|
||||||
|
|
||||||
// logic
|
// logic
|
||||||
|
|
||||||
vec3 c0 = texture(previous, uv0).xyz;
|
vec3 c0 = texture(previous, uv0).xyz;
|
||||||
|
|
||||||
const mat3x3 sobelx = mat3x3(-1, -2, -1, 0, 0, 0, 1, 2, 1);
|
const mat3x3 sobelx = mat3x3(-1., -2., -1., 0., 0., 0., 1., 2., 1.);
|
||||||
const mat3x3 sobely = mat3x3(-1, 0, 1, -2, 0, 2, -1, 0, 1);
|
const mat3x3 sobely = mat3x3(-1., 0., 1., -2., 0., 2., -1., 0., 1.);
|
||||||
|
|
||||||
mat3x3 sobel = sobelx * sx + sobely * sy;
|
mat3x3 sobel = sobelx * sx + sobely * sy;
|
||||||
|
|
||||||
@@ -490,13 +490,13 @@ vec4 fx_14(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1,
|
|||||||
|
|
||||||
vec2 uv0 = vUV.st;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float zoom = 1 + magic(f1, b1, seed + 10) * 9;
|
float zoom = 1 + magic(f1, b1, seed + 10.) * 9.;
|
||||||
float h_scroll = magic(f2, b2, seed + 20);
|
float h_scroll = magic(f2, b2, seed + 20.);
|
||||||
float angle = magic(f3, b3, seed + 30);
|
float angle = magic(f3, b3, seed + 30.);
|
||||||
|
|
||||||
// logic
|
// logic
|
||||||
|
|
||||||
@@ -508,11 +508,11 @@ vec4 fx_14(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1,
|
|||||||
|
|
||||||
uv3 *= rot(angle);
|
uv3 *= rot(angle);
|
||||||
|
|
||||||
uv3 += vec2(h_scroll, 0);
|
uv3 += vec2(h_scroll, 0.);
|
||||||
|
|
||||||
uv3 *= round(zoom);
|
uv3 *= round(zoom);
|
||||||
|
|
||||||
vec2 umax = vec2(round(zoom), 300);
|
vec2 umax = vec2(round(zoom), 300.);
|
||||||
|
|
||||||
vec3 c = reframe(previous, mod(uv3, umax)).xyz;
|
vec3 c = reframe(previous, mod(uv3, umax)).xyz;
|
||||||
|
|
||||||
@@ -521,7 +521,7 @@ vec4 fx_14(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1,
|
|||||||
|
|
||||||
vec4 fx_stage(int fx, vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3, vec3 m0) {
|
vec4 fx_stage(int fx, vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3, vec3 m0) {
|
||||||
if (fx >= 15) {
|
if (fx >= 15) {
|
||||||
fx = int(randTime(seed + 100) * 14) + 1;
|
fx = int(randTime(seed + 100.) * 14.) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fx == 1) {
|
if (fx == 1) {
|
||||||
|
|||||||
+21
-21
@@ -3,11 +3,11 @@
|
|||||||
#ifndef INC_MAGIC
|
#ifndef INC_MAGIC
|
||||||
#define INC_MAGIC
|
#define INC_MAGIC
|
||||||
|
|
||||||
vec2 magic_f(vec2 F, vec3 B, float i)
|
vec2 magic_f(vec2 f, vec3 b, float i)
|
||||||
{
|
{
|
||||||
return vec2(
|
return vec2(
|
||||||
mix(F.x, randTime(i + 1.), min(1., B.z)),
|
mix(f.x, randTime(i + 1.), min(1., b.z)),
|
||||||
mix(F.y, randTime(i + 2.), min(1., B.z))
|
mix(f.y, randTime(i + 2.), min(1., b.z))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -16,12 +16,12 @@ vec2 magic_f(float i)
|
|||||||
return magic_f(vec2(0.), vec3(0., 0., 1.), i);
|
return magic_f(vec2(0.), vec3(0., 0., 1.), i);
|
||||||
}
|
}
|
||||||
|
|
||||||
vec3 magic_b(vec3 B, float i)
|
vec3 magic_b(vec3 b, float i)
|
||||||
{
|
{
|
||||||
return vec3(
|
return vec3(
|
||||||
mix(B.x, step(.2, randTime(i + 3.)), min(1., B.z)),
|
mix(b.x, step(.2, randTime(i + 3.)), min(1., b.z)),
|
||||||
mix(B.y, step(.5, randTime(i + 4.)), min(1., B.z)),
|
mix(b.y, step(.5, randTime(i + 4.)), min(1., b.z)),
|
||||||
min(1., B.z)
|
min(1., b.z)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,9 +30,9 @@ vec3 magic_b(float i)
|
|||||||
return magic_b(vec3(0., 0., 1.), i);
|
return magic_b(vec3(0., 0., 1.), i);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool magic_trigger(vec3 B, float i)
|
bool magic_trigger(vec3 b, float i)
|
||||||
{
|
{
|
||||||
return magic_b(B, i).x > 0.;
|
return magic_b(b, i).x > 0.;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool magic_trigger(float i)
|
bool magic_trigger(float i)
|
||||||
@@ -40,20 +40,20 @@ bool magic_trigger(float i)
|
|||||||
return magic_b(i).x > 0.;
|
return magic_b(i).x > 0.;
|
||||||
}
|
}
|
||||||
|
|
||||||
float magic(vec2 F, vec3 B, float i)
|
float magic(vec2 f, vec3 b, float i)
|
||||||
{
|
{
|
||||||
vec2 f = magic_f(F, B, i);
|
vec2 mf = magic_f(f, b, i);
|
||||||
vec3 b = magic_b(B, i);
|
vec3 mb = magic_b(b, i);
|
||||||
|
|
||||||
return mix(0., f.x * mix(1. - modTime(f.y), cosTime(f.y) * .5 + .5, b.y), b.x);
|
return mix(0., mf.x * mix(1. - modTime(mf.y), cosTime(mf.y) * .5 + .5, mb.y), mb.x);
|
||||||
}
|
}
|
||||||
|
|
||||||
float fmagic(vec2 F, vec3 B, float i)
|
float fmagic(vec2 f, vec3 b, float i)
|
||||||
{
|
{
|
||||||
vec2 f = magic_f(F, B, i);
|
vec2 mf = magic_f(f, b, i);
|
||||||
vec3 b = magic_b(B, i);
|
vec3 mb = magic_b(b, i);
|
||||||
|
|
||||||
return f.x * mix(1. - modTime(f.y), cosTime(f.y) * .5 + .5, b.y);
|
return mf.x * mix(1. - modTime(mf.y), cosTime(mf.y) * .5 + .5, mb.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
float magic(float i)
|
float magic(float i)
|
||||||
@@ -61,12 +61,12 @@ float magic(float i)
|
|||||||
return magic(vec2(0.), vec3(0., 0., 1.), i);
|
return magic(vec2(0.), vec3(0., 0., 1.), i);
|
||||||
}
|
}
|
||||||
|
|
||||||
float magic_reverse(vec2 F, vec3 B, float i)
|
float magic_reverse(vec2 f, vec3 b, float i)
|
||||||
{
|
{
|
||||||
vec2 f = magic_f(F, B, i);
|
vec2 mf = magic_f(f, b, i);
|
||||||
vec3 b = magic_b(B, i);
|
vec3 mb = magic_b(b, i);
|
||||||
|
|
||||||
return mix(0., f.x * mix(1. - modTime(f.y), modTime(f.y), b.y), b.x);
|
return mix(0., mf.x * mix(1. - modTime(mf.y), modTime(mf.y), mb.y), mb.x);
|
||||||
}
|
}
|
||||||
|
|
||||||
float magic_reverse(float i)
|
float magic_reverse(float i)
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
#define INC_RAND
|
#define INC_RAND
|
||||||
|
|
||||||
float rand(float seed){
|
float rand(float seed){
|
||||||
float v=pow(abs(seed),6./7.);
|
float v = pow(abs(seed), .8571429); // 6. / 7.
|
||||||
v*=sin(v)+1.;
|
v *= sin(v) + 1.;
|
||||||
return fract(v);
|
return fract(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ const int lengths[] = int[SENTENCE_COUNT](
|
|||||||
|
|
||||||
float write_sentence(vec2 uv, vec2 pos, int n)
|
float write_sentence(vec2 uv, vec2 pos, int n)
|
||||||
{
|
{
|
||||||
float d = 0;
|
float d = 0.;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < SENTENCE_MAX_LENGTH; i++) {
|
for (i = 0; i < SENTENCE_MAX_LENGTH; i++) {
|
||||||
@@ -38,7 +38,7 @@ float write_sentence(vec2 uv, vec2 pos, int n)
|
|||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
d += char_at(uv, pos + vec2(i, 0), sentences[n * SENTENCE_MAX_LENGTH + i]);
|
d += char_at(uv, pos + vec2(i, 0.), sentences[n * SENTENCE_MAX_LENGTH + i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return d;
|
return d;
|
||||||
|
|||||||
+252
-256
@@ -17,9 +17,9 @@ vec4 src_thru(vec2 vUV, sampler2D tex, int seed, vec3 b1, vec2 f1, vec3 b2, vec2
|
|||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float hue = magic(f1, b1, seed + 10);
|
float hue = magic(f1, b1, seed + 10.);
|
||||||
float saturation = magic(f2, b2, seed + 20);
|
float saturation = magic(f2, b2, seed + 20.);
|
||||||
float light = magic(f3, b3, seed + 30);
|
float light = magic(f3, b3, seed + 30.);
|
||||||
|
|
||||||
// logic
|
// 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 = shift3(c, hue);
|
||||||
|
|
||||||
c *= 1 + saturation;
|
c *= 1. + saturation;
|
||||||
c = mix(c + light * 2.0, c - (1 - light) * 2.0, step(.5, light));
|
c = mix(c + light * 2., c - (1. - light) * 2., step(.5, light));
|
||||||
|
|
||||||
// output
|
// 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;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float thickness = magic(f1, b1, seed + 10);
|
float thickness = magic(f1, b1, seed + 10.);
|
||||||
float rotation = magic(f2, b2, seed + 20);
|
float rotation = magic(f2, b2, seed + 20.);
|
||||||
float distort = magic(f3, b3, seed + 30);
|
float distort = magic(f3, b3, seed + 30.);
|
||||||
|
|
||||||
// logic
|
// logic
|
||||||
|
|
||||||
vec2 uv2 = uv1;
|
vec2 uv2 = uv1;
|
||||||
uv2.y *= cos(uv2.x * 5 * distort);
|
uv2.y *= cos(uv2.x * 5. * distort);
|
||||||
uv2 *= rot(rotation + iBeats / 16);
|
uv2 *= rot(rotation + iBeats * .0625);
|
||||||
float k = thickness * 2;
|
float k = thickness * 2.;
|
||||||
uv2.y = cmod(uv2.y, k * 2 + .1);
|
uv2.y = cmod(uv2.y, k * 2. + .1);
|
||||||
float f = istep(k * .125 + .05, uv2.y) * istep(k * .125 + .01, -uv2.y);
|
float f = istep(k * .125 + .05, uv2.y) * istep(k * .125 + .01, -uv2.y);
|
||||||
|
|
||||||
return vec4(f);
|
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;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float zoom = magic(f1, b1, seed + 10);
|
float zoom = magic(f1, b1, seed + 10.);
|
||||||
float rotation = magic(f2, b2, seed + 20);
|
float rotation = magic(f2, b2, seed + 20.);
|
||||||
float lens_v = magic(f3, b3, seed + 30);
|
float lens_v = magic(f3, b3, seed + 30.);
|
||||||
|
|
||||||
// logic
|
// logic
|
||||||
|
|
||||||
vec2 uv2 = uv1;
|
vec2 uv2 = uv1;
|
||||||
float k1 = lens_v * 5;
|
float k1 = lens_v * 5.;
|
||||||
uv2 = lens(uv2, -k1, k1);
|
uv2 = lens(uv2, -k1, k1);
|
||||||
uv2 = kal(uv2, 5);
|
uv2 = kal(uv2, 5.);
|
||||||
uv2 *= rot(rotation + iBeats / 16);
|
uv2 *= rot(rotation + iBeats * .0625);
|
||||||
float k = zoom * .1 + .05;
|
float k = zoom * .1 + .05;
|
||||||
uv2 = cmod(uv2, k * 2);
|
uv2 = cmod(uv2, k * 2.);
|
||||||
float f = istep(k / (1 + length(uv1) * 2), length(uv2));
|
float f = istep(k / (1. + length(uv1) * 2.), length(uv2));
|
||||||
|
|
||||||
return vec4(f);
|
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
|
// SRC 4 : bacteria
|
||||||
vec4 src_4(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
|
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;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float zoom = 2 + magic(f1, b1, seed + 10) * 20;
|
float zoom = 2. + magic(f1, b1, seed + 10.) * 20.;
|
||||||
float details = 5 * magic(f2, b2, seed + 20);
|
float details = 5. * magic(f2, b2, seed + 20.);
|
||||||
float delta = magic(f3, b3, seed + 30);
|
float delta = magic(f3, b3, seed + 30.);
|
||||||
|
|
||||||
// logic
|
// logic
|
||||||
|
|
||||||
uv1 *= zoom;
|
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);
|
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);
|
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;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float zoom = magic(f1, b1, seed + 10);
|
float zoom = magic(f1, b1, seed + 10.);
|
||||||
float voronoi_distort = magic(f2, b2, seed + 20);
|
float voronoi_distort = magic(f2, b2, seed + 20.);
|
||||||
float details = magic(f3, b3, seed + 30);
|
float details = magic(f3, b3, seed + 30.);
|
||||||
float noise_factor = magic(seed + 40);
|
float noise_factor = magic(seed + 40.);
|
||||||
|
|
||||||
// logic
|
// logic
|
||||||
|
|
||||||
vec2 uv2 = uv1;
|
vec2 uv2 = uv1;
|
||||||
uv2 *= zoom * 20 + 3;
|
uv2 *= zoom * 20. + 3.;
|
||||||
uv2.x += iBeats;
|
uv2.x += iBeats;
|
||||||
vec4 data = voronoi(uv2, voronoi_distort, seed + 50, iBeats);
|
vec4 data = voronoi(uv2, voronoi_distort, seed + 50, iBeats);
|
||||||
float f = data.x / (data.x + data.y);
|
float f = data.x / (data.x + data.y);
|
||||||
f = sin(f * PI * (details * 20)) * .5 + 1;
|
f = sin(f * PI * (details * 20.)) * .5 + 1.;
|
||||||
int nf = int(noise_factor * 6);
|
int nf = int(noise_factor * 6.);
|
||||||
f *= mix(1, noise_f(uv2, nf - 1), step(.0, float(nf)));
|
f *= mix(1., noise_f(uv2, nf - 1), step(.0, float(nf)));
|
||||||
|
|
||||||
return vec4(f);
|
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)
|
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
|
#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;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float zoom = magic(f1, b1, seed + 10);
|
float zoom = magic(f1, b1, seed + 10.);
|
||||||
vec2 charset = magic_f(f2, b2, seed + 20);
|
vec2 charset = magic_f(f2, b2, seed + 20.);
|
||||||
vec3 charset_ctrl = magic_b(b2, seed + 20);
|
vec3 charset_ctrl = magic_b(b2, seed + 20.);
|
||||||
float char_delta = magic(f3, b3, seed + 30);
|
float char_delta = magic(f3, b3, seed + 30.);
|
||||||
|
|
||||||
// logic
|
// logic
|
||||||
|
|
||||||
vec2 uv2 = uv1;
|
vec2 uv2 = uv1;
|
||||||
uv2 *= zoom * 20 + 3;
|
uv2 *= zoom * 20. + 3.;
|
||||||
uv2 += iBeats;
|
uv2 += iBeats;
|
||||||
uv2 = mod(uv2, 100) + 100;
|
uv2 = mod(uv2, 100.) + 100.;
|
||||||
int start_char = charset_ctrl.x > 0 ? charsets[int(charset.x * CHARSETS) * 2] : 0x01;
|
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));
|
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)));
|
char_span = int(char_span * max(1. - charset.y, 1. / (char_span * .75)));
|
||||||
ivec2 uv2i = ivec2(uv2);
|
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);
|
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);
|
uv2 = mod(uv2, 1.);
|
||||||
float f = char(uv2, code) ? 1 : 0;
|
float f = char(uv2, code) ? 1. : 0.;
|
||||||
|
|
||||||
return vec4(f);
|
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;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float zoom = magic(f1, b1, seed + 10);
|
float zoom = magic(f1, b1, seed + 10.);
|
||||||
float sentence = magic_reverse(f2, b2, seed + 20);
|
float sentence = magic_reverse(f2, b2, seed + 20.);
|
||||||
float h_delta = magic(f3, b3, seed + 30);
|
float h_delta = magic(f3, b3, seed + 30.);
|
||||||
vec3 h_delta_b = magic_b(b3, seed + 30);
|
vec3 h_delta_b = magic_b(b3, seed + 30.);
|
||||||
|
|
||||||
// logic
|
// logic
|
||||||
|
|
||||||
vec2 uv2 = uv1;
|
vec2 uv2 = uv1;
|
||||||
uv2 *= (1 + zoom) * 12;
|
uv2 *= (1. + zoom) * 12.;
|
||||||
uv2.y += .5;
|
uv2.y += .5;
|
||||||
int s = int(sentence * (SENTENCE_COUNT - 1));
|
int s = int(sentence * (SENTENCE_COUNT - 1));
|
||||||
uv2.x += floor(uv2.y) * (h_delta - .5) * 2;
|
uv2.x += floor(uv2.y) * (h_delta - .5) * 2.;
|
||||||
uv2.y = mix(uv2.y, mod(uv2.y, 1), h_delta_b.x);
|
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);
|
float f = write_sentence(uv2, vec2(-float(lengths[s]) * .5, 0.), s);
|
||||||
|
|
||||||
return vec4(f);
|
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;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float h_shift = magic(f1, b1, seed + 10);
|
float h_shift = magic(f1, b1, seed + 10.);
|
||||||
float sentence = magic_reverse(f2, b2, seed + 20);
|
float sentence = magic_reverse(f2, b2, seed + 20.);
|
||||||
float h_delta = magic(f3, b3, seed + 30);
|
float h_delta = magic(f3, b3, seed + 30.);
|
||||||
vec3 h_delta_b = magic_b(b3, seed + 30);
|
vec3 h_delta_b = magic_b(b3, seed + 30.);
|
||||||
|
|
||||||
// logic
|
// logic
|
||||||
|
|
||||||
vec2 uv2 = uv1;
|
vec2 uv2 = uv1;
|
||||||
uv2.x += h_shift;
|
uv2.x += h_shift;
|
||||||
uv2 *= 15;
|
uv2 *= 15.;
|
||||||
uv2.y += .5;
|
uv2.y += .5;
|
||||||
int s = int(sentence * (SENTENCE_COUNT - 1));
|
int s = int(sentence * (SENTENCE_COUNT - 1));
|
||||||
float slen = float(lengths[s]);
|
float slen = float(lengths[s]);
|
||||||
uv2.x += floor(uv2.y) * (h_delta - .5) * 2;
|
uv2.x += floor(uv2.y) * (h_delta - .5) * 2.;
|
||||||
uv2.x = cmod(uv2.x, slen + 1);
|
uv2.x = cmod(uv2.x, slen + 1.);
|
||||||
vec2 uv3 = uv2;
|
vec2 uv3 = uv2;
|
||||||
uv3.y = mix(uv3.y, mod(uv3.y, 1), h_delta_b.x);
|
uv3.y = mix(uv3.y, mod(uv3.y, 1.), h_delta_b.x);
|
||||||
float f = write_sentence(uv3, vec2(-slen * .5, 0), s);
|
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);
|
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;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float zoom = 5 + magic(f1, b1, seed + 10) * 15;
|
float zoom = 5. + magic(f1, b1, seed + 10.) * 15.;
|
||||||
float h_scroll = magic(f2, b2, seed + 20);
|
float h_scroll = magic(f2, b2, seed + 20.);
|
||||||
float max_elevation = magic(f3, b3, seed + 30) * .5;
|
float max_elevation = magic(f3, b3, seed + 30.) * .5;
|
||||||
float thick = .1;
|
float thick = .1;
|
||||||
|
|
||||||
// logic
|
// 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);
|
vec2 uv3 = iso(uv2);
|
||||||
|
|
||||||
uv3 += vec2(h_scroll, 0);
|
uv3 += vec2(h_scroll, 0.);
|
||||||
|
|
||||||
uv3 *= round(zoom);
|
uv3 *= round(zoom);
|
||||||
|
|
||||||
vec2 umax = vec2(round(zoom), 300);
|
vec2 umax = vec2(round(zoom), 300.);
|
||||||
|
|
||||||
vec2 u0 = mod(floor(uv3), umax);
|
vec2 u0 = mod(floor(uv3), umax);
|
||||||
vec2 u1 = mod(floor(uv3 + vec2(1, 0)), umax);
|
vec2 u1 = mod(floor(uv3 + vec2(1., 0.)), umax);
|
||||||
vec2 u2 = mod(floor(uv3 + vec2(0, 1)), umax);
|
vec2 u2 = mod(floor(uv3 + vec2(0., 1.)), umax);
|
||||||
vec2 u3 = mod(floor(uv3 + vec2(-1, 0)), umax);
|
vec2 u3 = mod(floor(uv3 + vec2(-1., 0.)), umax);
|
||||||
vec2 u4 = mod(floor(uv3 + vec2(0, -1)), umax);
|
vec2 u4 = mod(floor(uv3 + vec2(0., -1.)), umax);
|
||||||
|
|
||||||
float e0 = (rand(floor(u0)) * 2 - 1) * max_elevation;
|
float e0 = (rand(floor(u0)) * 2. - 1.) * max_elevation;
|
||||||
float e1 = (rand(floor(u1)) * 2 - 1) * max_elevation;
|
float e1 = (rand(floor(u1)) * 2. - 1.) * max_elevation;
|
||||||
float e2 = (rand(floor(u2)) * 2 - 1) * max_elevation;
|
float e2 = (rand(floor(u2)) * 2. - 1.) * max_elevation;
|
||||||
float e3 = (rand(floor(u3)) * 2 - 1) * max_elevation;
|
float e3 = (rand(floor(u3)) * 2. - 1.) * max_elevation;
|
||||||
float e4 = (rand(floor(u4)) * 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)
|
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(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(-1., 0.) - iso_z(e3), thick)
|
||||||
+ line(uv3, vec2(0, 0) - iso_z(e0), vec2(0, -1) - iso_z(e4), thick);
|
+ line(uv3, vec2(0., 0.) - iso_z(e0), vec2(0., -1.) - iso_z(e4), thick);
|
||||||
|
|
||||||
return vec4(f);
|
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
|
// 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)
|
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);
|
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;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float zoom = 5 + magic(f1, b1, seed + 10) * 15;
|
float zoom = 5. + magic(f1, b1, seed + 10.) * 15.;
|
||||||
float shape = magic(f2, b2, seed + 20);
|
float shape = magic(f2, b2, seed + 20.);
|
||||||
float repeat = 1 + magic(f3, b3, seed + 30) * 10;
|
float repeat = 1. + magic(f3, b3, seed + 30.) * 10.;
|
||||||
|
|
||||||
// logic
|
// logic
|
||||||
|
|
||||||
float f = 0;
|
float f = 0.;
|
||||||
|
|
||||||
vec2 uv2 = uv1;
|
vec2 uv2 = uv1;
|
||||||
|
|
||||||
uv2 *= zoom;
|
uv2 *= zoom;
|
||||||
|
|
||||||
uv2 = mod(uv2, 4);
|
uv2 = mod(uv2, 4.);
|
||||||
|
|
||||||
vec2 uv3 = uv2;
|
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, 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, istep(2., uv2.x) * istep(2., uv2.y));
|
||||||
|
|
||||||
uv3.y = -uv3.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.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.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, 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, step(1., abs(uv2.y - 2.)) * step(2., uv2.x));
|
||||||
|
|
||||||
return vec4(f);
|
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;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float zoom = 5 + magic(f1, b1, seed + 10) * 15;
|
float zoom = 5. + magic(f1, b1, seed + 10.) * 15.;
|
||||||
float shape = .1 + magic(f2, b2, seed + 20) * .9;
|
float shape = .1 + magic(f2, b2, seed + 20.) * .9;
|
||||||
float repeat = 1 + magic(f3, b3, seed + 30) * 10;
|
float repeat = 1. + magic(f3, b3, seed + 30.) * 10.;
|
||||||
|
|
||||||
// logic
|
// 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 *= 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);
|
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;
|
vec2 uv0 = vUV.st;
|
||||||
float ratio = iResolution.x / iResolution.y;
|
float ratio = iResolution.x / iResolution.y;
|
||||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
float size = magic(f1, b1, seed + 10) * 2 + .1;
|
float size = magic(f1, b1, seed + 10.) * 2. + .1;
|
||||||
float dx = (fmagic(f2, b2, seed + 20) * (1 - size * .06) - .5) * ratio;
|
float dx = (fmagic(f2, b2, seed + 20.) * (1. - size * .06) - .5) * ratio;
|
||||||
bool flip_x = magic_trigger(b2, seed + 20);
|
bool flip_x = magic_trigger(b2, seed + 20.);
|
||||||
float dy = fmagic(f3, b3, seed + 30) * (1 - size * .17) - .5;
|
float dy = fmagic(f3, b3, seed + 30.) * (1. - size * .17) - .5;
|
||||||
bool flip_y = magic_trigger(b3, seed + 30);
|
bool flip_y = magic_trigger(b3, seed + 30.);
|
||||||
|
|
||||||
// logic
|
// 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 /= 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;
|
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);
|
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)
|
vec4 src_stage(int src, vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
|
||||||
{
|
{
|
||||||
if (src >= 15) {
|
if (src >= 15) {
|
||||||
src = int(randTime(seed + 100) * 14) + 1;
|
src = int(randTime(seed + 100.) * 14.) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (src == 1) {
|
if (src == 1) {
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ float divider(float x)
|
|||||||
|
|
||||||
float modTime(float k, float k2)
|
float modTime(float k, float k2)
|
||||||
{
|
{
|
||||||
return mod(divider(k) * iBeats * k2 / 4., 1.);
|
return mod(divider(k) * iBeats * k2 * .25, 1.);
|
||||||
}
|
}
|
||||||
|
|
||||||
float modTime(float k)
|
float modTime(float k)
|
||||||
|
|||||||
Reference in New Issue
Block a user