From 674dc50ff7dc6613785b19c2cefd21b5cdb2073d Mon Sep 17 00:00:00 2001 From: klemek Date: Fri, 28 Aug 2026 20:08:41 +0200 Subject: [PATCH] refactor(default): glsl cleaning (2/2) --- default/frag1.glsl | 2 +- default/frag10.glsl | 130 +++--------- default/frag2.glsl | 2 +- default/frag3.glsl | 2 - default/frag4.glsl | 2 - default/frag7.glsl | 2 +- default/frag9.glsl | 2 +- default/inc_cp437.glsl | 2 +- default/inc_debug.glsl | 93 ++------- default/inc_fx.glsl | 245 +++++++++++----------- default/inc_src.glsl | 450 +++++++++++++++-------------------------- 11 files changed, 329 insertions(+), 603 deletions(-) diff --git a/default/frag1.glsl b/default/frag1.glsl index cb8b68c..82bc156 100644 --- a/default/frag1.glsl +++ b/default/frag1.glsl @@ -1,4 +1,4 @@ -#version 460 +#version 140 // VIDEO 1 // ----------- diff --git a/default/frag10.glsl b/default/frag10.glsl index fb3273d..a707d2a 100644 --- a/default/frag10.glsl +++ b/default/frag10.glsl @@ -1,4 +1,4 @@ -#version 460 +#version 140 // MONITOR // --- @@ -25,92 +25,18 @@ float s(vec2 uv, float x0, float y0) { step(-y0 - 1, -uv.y); } -const int texts[12][5] = { - { - 0x49, - 0x4E, - 0x20, - 0x41, - 0x00 - }, // IN A - { - 0x49, - 0x4E, - 0x20, - 0x42, - 0x00 - }, // IN B - { - 0x53, - 0x52, - 0x43, - 0x20, - 0x41 - }, // SRC A - { - 0x53, - 0x52, - 0x43, - 0x20, - 0x42 - }, // SRC B - { - 0x46, - 0x58, - 0x20, - 0x41, - 0x00 - }, // FX A - { - 0x46, - 0x58, - 0x20, - 0x42, - 0x00 - }, // FX B - { - 0x41, - 0x2B, - 0x42, - 0x00, - 0x00 - }, // A+B - { - 0x4D, - 0x46, - 0x58, - 0x00, - 0x00 - }, // MFX - { - 0x46, - 0x50, - 0x53, - 0x00, - 0x00 - }, // FPS - { - 0x4F, - 0x46, - 0x46, - 0x00, - 0x00 - }, // OFF - { - 0x44, - 0x45, - 0x4D, - 0x4F, - 0x00 - }, // DEMO - { - 0x4C, - 0x49, - 0x56, - 0x45, - 0x00 - }, // LIVE - }; +const int textINA[] = int[5](0x49, 0x4E, 0x20, 0x41, 0x00); +const int textINB[] = int[5](0x49, 0x4E, 0x20, 0x42, 0x00); +const int textSRCA[] = int[5](0x49, 0x4E, 0x20, 0x41, 0x00); +const int textSRCB[] = int[5](0x49, 0x4E, 0x20, 0x42, 0x00); +const int textFXA[] = int[5](0x46, 0x58, 0x20, 0x41, 0x00); +const int textFXB[] = int[5](0x46, 0x58, 0x20, 0x42, 0x00); +const int textAB[] = int[5](0x41, 0x2B, 0x42, 0x00, 0x00); +const int textMFX[] = int[5](0x4D, 0x46, 0x58, 0x00, 0x00); +const int textFPS[] = int[5](0x46, 0x50, 0x53, 0x00, 0x00); +const int textOFF[] = int[5](0x4F, 0x46, 0x46, 0x00, 0x00); +const int textDEMO[] = int[5](0x44, 0x45, 0x4D, 0x4F, 0x00); +const int textLIVE[] = int[5](0x4C, 0x49, 0x56, 0x45, 0x00); void main() { vec2 uv0 = vUV.st; @@ -146,65 +72,65 @@ void main() { float t = 0; f += rect(uv3, vec2(-35, 28.5), vec2(2.1, 0.7)); - t += write_5(uv3, vec2(-37, 28), texts[0]); + t += write_5(uv3, vec2(-37, 28), textINA); if (iInputFormat1 == YUYV_FOURCC) { c += s(uv2, 0, 2) * texture(iTex3, uv2); f += rect(uv3, vec2(-35, 26.75), vec2(2.8, 0.7)); t += write_int(uv3, vec2(-37.6, 26.1), iInputFPS1, 2); - t += write_5(uv3, vec2(-35.1, 26.1), texts[8]); + t += write_5(uv3, vec2(-35.1, 26.1), textFPS); } else { f += rect(uv3, vec2(-35, 26.75), vec2(1.6, 0.7)); - t += write_5(uv3, vec2(-36.5, 26.1), texts[9]); + t += write_5(uv3, vec2(-36.5, 26.1), textOFF); } f += rect(uv3, vec2(-35, -11.5), vec2(2.1, 0.7)); - t += write_5(uv3, vec2(-37, -12), texts[1]); + t += write_5(uv3, vec2(-37, -12), textINB); if (iInputFormat2 == YUYV_FOURCC) { c += s(uv2, 0, 0) * texture(iTex4, uv2); f += rect(uv3, vec2(-35, -13.25), vec2(2.8, 0.7)); t += write_int(uv3, vec2(-37.6, -13.9), iInputFPS2, 2); - t += write_5(uv3, vec2(-35.1, -13.9), texts[8]); + t += write_5(uv3, vec2(-35.1, -13.9), textFPS); } else { f += rect(uv3, vec2(-35, -13.25), vec2(1.6, 0.7)); - t += write_5(uv3, vec2(-36.5, -13.9), texts[9]); + t += write_5(uv3, vec2(-36.5, -13.9), textOFF); } f += rect(uv3, vec2(-35, 8.5), vec2(2.1, 0.7)); if (iDemo > 0) { - t += write_5(uv3, vec2(-37, 8), texts[10]); + t += write_5(uv3, vec2(-37, 8), textDEMO); } else { - t += write_5(uv3, vec2(-37, 8), texts[11]); + t += write_5(uv3, vec2(-37, 8), textLIVE); } f += rect(uv3, vec2(0, 28.5), vec2(2.6, 0.7)); f += iActive1 == 1 ? h_rect(uv3, vec2(0, 28.5), vec2(3, 1), 0.2) : 0; - t += write_5(uv3, vec2(-2.5, 28), texts[2]); + t += write_5(uv3, vec2(-2.5, 28), textSRCA); f += rect(uv3, vec2(0, -11.5), vec2(2.6, 0.7)); f += iActive1 == 2 ? h_rect(uv3, vec2(0, -11.5), vec2(3, 1), 0.2) : 0; - t += write_5(uv3, vec2(-2.5, -12), texts[3]); + t += write_5(uv3, vec2(-2.5, -12), textSRCB); f += rect(uv3, vec2(35, 28.5), vec2(2.1, 0.7)); f += iActive2 == 1 ? h_rect(uv3, vec2(35, 28.5), vec2(2.5, 1), 0.2) : 0; - t += write_5(uv3, vec2(33, 28), texts[4]); + t += write_5(uv3, vec2(33, 28), textFXA); f += rect(uv3, vec2(35, -11.5), vec2(2.1, 0.7)); f += iActive2 == 2 ? h_rect(uv3, vec2(35, -11.5), vec2(2.5, 1), 0.2) : 0; - t += write_5(uv3, vec2(33, -12), texts[5]); + t += write_5(uv3, vec2(33, -12), textFXB); f += rect(uv3, vec2(0, 8.5), vec2(1.6, 0.7)); - t += write_5(uv3, vec2(-1.5, 8), texts[6]); + t += write_5(uv3, vec2(-1.5, 8), textAB); f += rect(uv3, vec2(35, 8.5), vec2(1.6, 0.7)); f += iActive2 == 3 ? h_rect(uv3, vec2(35, 8.5), vec2(2, 1), 0.2) : 0; - t += write_5(uv3, vec2(33.5, 8), texts[7]); + t += write_5(uv3, vec2(33.5, 8), textMFX); f += rect(uv3, vec2(35, 6.75), vec2(2.8, 0.7)); t += write_int(uv3, vec2(32.4, 6.1), iFPS, 2); - t += write_5(uv3, vec2(34.9, 6.1), texts[8]); + t += write_5(uv3, vec2(34.9, 6.1), textFPS); fragColor = mix(c, vec4(min(1, f) - t), min(1, f)); } diff --git a/default/frag2.glsl b/default/frag2.glsl index 5ed8d53..7ffca4e 100644 --- a/default/frag2.glsl +++ b/default/frag2.glsl @@ -1,4 +1,4 @@ -#version 460 +#version 140 // VIDEO 2 // ----------- diff --git a/default/frag3.glsl b/default/frag3.glsl index 5e538f1..23b3b9d 100644 --- a/default/frag3.glsl +++ b/default/frag3.glsl @@ -10,8 +10,6 @@ out vec4 fragColor; #include inc_src.glsl -subroutine uniform src_stage_sub src_stage; - uniform int iSeed3; uniform vec3 iGroup1_1[6]; diff --git a/default/frag4.glsl b/default/frag4.glsl index ac7860f..8238eb0 100644 --- a/default/frag4.glsl +++ b/default/frag4.glsl @@ -9,8 +9,6 @@ out vec4 fragColor; #include inc_src.glsl -subroutine uniform src_stage_sub src_stage; - uniform int iSeed4; uniform vec3 iGroup1_2[6]; diff --git a/default/frag7.glsl b/default/frag7.glsl index eeba13b..de561f9 100644 --- a/default/frag7.glsl +++ b/default/frag7.glsl @@ -1,4 +1,4 @@ -#version 460 +#version 140 // A+B // ------------ diff --git a/default/frag9.glsl b/default/frag9.glsl index 1c07e67..a033120 100644 --- a/default/frag9.glsl +++ b/default/frag9.glsl @@ -1,4 +1,4 @@ -#version 460 +#version 140 // OUT // --- diff --git a/default/inc_cp437.glsl b/default/inc_cp437.glsl index 58a2113..526aa5c 100644 --- a/default/inc_cp437.glsl +++ b/default/inc_cp437.glsl @@ -364,7 +364,7 @@ float write_int(vec2 uv, vec2 pos, int value, int magnitude) { value = max(0, value); int i; - uint m = 1; + int m = 1; float d = 0.; for (i = 0; i < magnitude; i++) { if (i == 0 || value >= m) { diff --git a/default/inc_debug.glsl b/default/inc_debug.glsl index 338c7cb..2cbe47f 100644 --- a/default/inc_debug.glsl +++ b/default/inc_debug.glsl @@ -103,78 +103,13 @@ vec4 debug(vec2 vUV) // logic - const int texts[10][5] = { - { - 0x46, - 0x50, - 0x53, - 0x00, - 0x00 - }, // FPS - { - 0x54, - 0x45, - 0x4D, - 0x50, - 0x4F - }, // TEMPO - { - 0x54, - 0x49, - 0x4D, - 0x45, - 0x00 - }, // TIME - { - 0x44, - 0x45, - 0x4D, - 0x4F, - 0x00 - }, // DEMO - { - 0x4C, - 0x49, - 0x56, - 0x45, - 0x00 - }, // LIVE - { - 0x52, - 0x41, - 0x4E, - 0x44, - 0x00 - }, // RAND - { - 0x53, - 0x52, - 0x43, - 0x00, - 0x00 - }, // SRC - { - 0x46, - 0x58, - 0x00, - 0x00, - 0x00 - }, // FX - { - 0x49, - 0x4E, - 0x00, - 0x00, - 0x00 - }, // IN - { - 0x4D, - 0x46, - 0x58, - 0x00, - 0x00 - }, // MFX - }; + const int textTEMPO[] = int[5](0x54, 0x45, 0x4D, 0x50, 0x4F); + const int textTIME[] = int[5](0x54, 0x49, 0x4D, 0x45, 0x00); + const int textRAND[] = int[5](0x52, 0x41, 0x4E, 0x44, 0x00); + const int textSRC[] = int[5](0x53, 0x52, 0x43, 0x00, 0x00); + const int textFX[] = int[5](0x46, 0x58, 0x00, 0x00, 0x00); + const int textIN[] = int[5](0x49, 0x4E, 0x00, 0x00, 0x00); + const int textMFX[] = int[5](0x4D, 0x46, 0x58, 0x00, 0x00); vec2 uv2 = uv1; @@ -241,14 +176,14 @@ vec4 debug(vec2 vUV) // show src/fx - f += write_5(uv3 * .75, vec2(-11.6, -1.8), texts[6]); - f += write_5(uv3 * .75, vec2(-4.2, -1.8), texts[7]); + f += write_5(uv3 * .75, vec2(-11.6, -1.8), textSRC); + f += write_5(uv3 * .75, vec2(-4.2, -1.8), textFX); f += char_at(uv3 * .5, vec2(-11.5, 3.5), 0x41); f += char_at(uv3 * .5, vec2(-11.5, -6.), 0x42); if (iDemo < 1 && (iInputFormat1 == YUYV_FOURCC || iInputFormat2 == YUYV_FOURCC)) { - f += write_5(uv3 * .75, vec2(-19.7, -1.8), texts[8]); + f += write_5(uv3 * .75, vec2(-19.7, -1.8), textIN); } - f += write_5(uv3 * .75, vec2(10.9, 2.), texts[9]); + f += write_5(uv3 * .75, vec2(10.9, 2.), textMFX); // show inputs / feedback float line_a_a = rect(uv2, vec2(-7.5, 2.), vec2(1.5, .1)); @@ -294,7 +229,7 @@ vec4 debug(vec2 vUV) float x = 0.; x = -15.; - f += write_5(uv3, vec2(x - 4.5, 13.), texts[1]); + f += write_5(uv3, vec2(x - 4.5, 13.), textTEMPO); f += write_int(uv3, vec2(x + 1.5, 13.), int(iTempo), 3); v = fract(iBeats); f += h_rect(uv3, vec2(x, 12.), vec2(4., .5), .2); @@ -302,13 +237,13 @@ vec4 debug(vec2 vUV) x = 15.; if (iAutoRand > 0) { - f += write_5(uv3, vec2(x - 4.5, 13.), texts[5]); + f += write_5(uv3, vec2(x - 4.5, 13.), textRAND); f += write_int(uv3, vec2(x - .5, 13.), int(iAutoRandCycle), 5); v = fract(iBeats / iAutoRandCycle); } else { f += write_int(uv3, vec2(x - .5, 13.), int(iTime), 5); v = fract(iTime); - f += write_5(uv3, vec2(x - 4.5, 13.), texts[2]); + f += write_5(uv3, vec2(x - 4.5, 13.), textTIME); } f += h_rect(uv3, vec2(x, 12.), vec2(4., .5), .2); f += rect(uv3, vec2(x + 4. * v - 4., 12), vec2(4. * v, .4)); diff --git a/default/inc_fx.glsl b/default/inc_fx.glsl index e8aa96a..073dd31 100644 --- a/default/inc_fx.glsl +++ b/default/inc_fx.glsl @@ -1,19 +1,20 @@ #include inc_res.glsl #include inc_magic.glsl #include inc_functions.glsl +#include inc_cp437.glsl #ifndef INC_FX #define INC_FX vec4 fx_master(vec3 c0, vec3 c, int seed, vec3 m0) { - float fx = magic(m0.xy, vec3(1,0,0), seed); - bool invert = magic_trigger(vec3(m0.z, 0, 0), seed); + float fx = magic(m0.xy, vec3(1., 0., 0.), seed); + bool invert = magic_trigger(vec3(m0.z, 0., 0.), seed); 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.); } subroutine vec4 fx_stage_sub(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3, vec3 m0); @@ -29,29 +30,29 @@ subroutine(fx_stage_sub) vec4 fx_1(vec2 vUV, sampler2D previous, sampler2D feedb // 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 vec3 c0 = texture(previous, uv0).xyz; vec3 c = c0; c = shift3(c, hue); - c *= 1 + saturation; - c = mix(c + light * 2.0, c - (1 - light) * 2.0, step(0.5, light)); + c *= 1. + saturation; + c = mix(c + light * 2., c - (1. - light) * 2., step(.5, light)); return fx_master(c0, c, seed, m0); } // FX 2 : feedback + shift -vec4 fx_shift(vec2 vUV, sampler2D src0, sampler2D src1, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3, vec3 m0) +subroutine(fx_stage_sub) vec4 fx_shift(vec2 vUV, sampler2D src0, sampler2D src1, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3, vec3 m0) { // start 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 @@ -64,7 +65,7 @@ vec4 fx_shift(vec2 vUV, sampler2D src0, sampler2D src1, int seed, vec3 b1, vec2 vec3 c0 = texture(src0, uv0).xyz; vec2 uv2 = uv1; - uv2 = mix(uv2 * (1 + zoom * 2), uv2 * (zoom), step(0.5, zoom)); + uv2 = mix(uv2 * (1 + zoom * 2), uv2 * (zoom), step(.5, zoom)); uv2 += vec2(x_shift * ratio, y_shift) * 2; vec3 c = reframe(src1, uv2).xyz; @@ -115,28 +116,28 @@ subroutine(fx_stage_sub) vec4 fx_5(vec2 vUV, sampler2D previous, sampler2D feedb 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 pixel_size = magic(f1, b1, seed + 10); - float quantize = magic(f2, b2, seed + 20); - bool quantize_trigger = magic_trigger(b2, seed + 20); - float blur = magic(f3, b3, seed + 30); + float pixel_size = magic(f1, b1, seed + 10.); + float quantize = magic(f2, b2, seed + 20.); + bool quantize_trigger = magic_trigger(b2, seed + 20.); + float blur = magic(f3, b3, seed + 30.); // logic vec3 c0 = texture(previous, uv0).xyz; vec2 uv2 = uv1; - float pixel = (1 - pixel_size) * 250 + 25; + float pixel = (1., - pixel_size) * 250. + 25.; uv2 = round(uv2 * pixel) / pixel; - vec3 c = gauss(previous, uv2 * vec2(1 / ratio, 1) + .5, 3, 0.005 * blur).xyz; - float colors = (1 - quantize) * 10 + 1; + vec3 c = gauss(previous, uv2 * vec2(1. / ratio, 1.) + .5, 3, .005 * blur).xyz; + float colors = (1. - quantize) * 10. + 1.; if (quantize_trigger) { c = round(c * colors) / colors; } - // c = mix(c, 1 - c, step(noise_f(uv0 * 10 + vec2(iTime * 0.1, 0), 5), 0.5)); + // c = mix(c, 1 - c, step(noise_f(uv0 * 10 + vec2(iTime * .1, 0), 5), .5)); return fx_master(c0, c, seed, m0); } @@ -148,7 +149,7 @@ subroutine(fx_stage_sub) vec4 fx_6(vec2 vUV, sampler2D previous, sampler2D feedb 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 @@ -168,7 +169,7 @@ subroutine(fx_stage_sub) vec4 fx_6(vec2 vUV, sampler2D previous, sampler2D feedb if (pixel_size_trigger) { uv2 = floor(uv2 * k1) / k1; } - vec3 c = gauss(previous, uv2 * vec2(1 / ratio, 1) + .5, 3, 0.005 * blur).xyz; + vec3 c = gauss(previous, uv2 * vec2(1 / ratio, 1) + .5, 3, .005 * blur).xyz; float k3 = pow(2, 5 - floor(quantize * 5)); if (quantize_trigger) { c *= k3; @@ -190,26 +191,26 @@ subroutine(fx_stage_sub) vec4 fx_7(vec2 vUV, sampler2D previous, sampler2D feedb 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 lens_v = magic(f1, b1, seed + 10); - float horizontal_noise = magic(f2, b2, seed + 20); - float zoom = magic(f3, b3, seed + 30); + float lens_v = magic(f1, b1, seed + 10.); + float horizontal_noise = magic(f2, b2, seed + 20.); + float zoom = magic(f3, b3, seed + 30.); // logic vec3 c0 = texture(previous, uv0).xyz; vec2 uv2 = uv1; - float k1 = lens_v * 0.5; - uv2 *= 1 + zoom * 2; + float k1 = lens_v * .5; + uv2 *= 1. + zoom * 2.; uv2 = lens(uv2, -k1, k1); float k = horizontal_noise; vec3 c = vec3( - reframe_b(previous, uv2 + vec2((rand(uv0.y * 1000 + iTime) - 0.5) * k * 0.1)).x, - reframe_b(previous, uv2 + vec2((rand(uv0.y * 1100 + iTime) - 0.5) * k * 0.1)).y, + 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).z ); @@ -223,30 +224,28 @@ subroutine(fx_stage_sub) vec4 fx_8(vec2 vUV, sampler2D previous, sampler2D feedb 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 axes = magic(f1, b1, seed + 10); - float axes_trigger = magic_b(b1, seed + 10).x; - float rotation = magic(f2, b2, seed + 20); - float h_scroll = magic(f3, b3, seed + 30); + float axes = magic(f1, b1, seed + 10.); + float axes_trigger = magic_b(b1, seed + 10.).x; + float rotation = magic(f2, b2, seed + 20.); + float h_scroll = magic(f3, b3, seed + 30.); // logic vec3 c0 = texture(previous, uv0).xyz; vec2 uv2 = uv1; - uv2 = mix(uv2, kal2(uv2 * rot(0.25), floor(axes * 9 + 1)) * vec2(1, -2) + vec2(0, -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.x = (saw(uv2.x / ratio + 0.5 + h_scroll * 2) - 0.5) * ratio; + uv2.x = (saw(uv2.x / ratio + .5 + h_scroll * 2.) - .5) * ratio; vec3 c = reframe(previous, uv2).xyz; return fx_master(c0, c, seed, m0); } -#include inc_cp437.glsl - // FX 9 : cp437 subroutine(fx_stage_sub) vec4 fx_9(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3, vec3 m0) { @@ -254,35 +253,35 @@ subroutine(fx_stage_sub) vec4 fx_9(vec2 vUV, sampler2D previous, sampler2D feedb 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 t = magic(seed + 40); + 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 t = magic(seed + 40.); // logic vec3 c0 = texture(previous, uv0).xyz; vec2 uv2 = uv1; - float k1 = 100 * (1 - zoom) + 10; - float inv_k = 1 / k1; + float k1 = 100. * (1. - zoom) + 10.; + float inv_k = 1. / k1; uv2 = floor(uv2 * k1) * inv_k; - 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 * 0.75))); + 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 * 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); - vec3 c = reframe(previous, uv2 + vec2(0, 0) * inv_k * 0.125).xyz * 0.2 - + reframe(previous, uv2 + vec2(1, 0) * inv_k * 0.125).xyz * 0.2 - + reframe(previous, uv2 + vec2(1, 1) * inv_k * 0.125).xyz * 0.2 - + reframe(previous, uv2 + vec2(0, 1) * inv_k * 0.125).xyz * 0.2 - + reframe(previous, uv2 + vec2(0.5, 0.5) * inv_k * 0.125).xyz * 0.2; - c = char(mod(uv1 * k1, 1), code) ? c : vec3(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); + 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., 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; + c = char(mod(uv1 * k1, 1.), code) ? c : vec3(0.); return fx_master(c0, c, seed, m0); } @@ -294,22 +293,22 @@ subroutine(fx_stage_sub) vec4 fx_10(vec2 vUV, sampler2D previous, sampler2D feed 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 lens_v1 = magic(f1, b1, seed + 10); - float lens_v2 = magic(f2, b2, seed + 20); - float zoom = magic(f3, b3, seed + 30); - float k = magic(seed + 40); + float lens_v1 = magic(f1, b1, seed + 10.); + float lens_v2 = magic(f2, b2, seed + 20.); + float zoom = magic(f3, b3, seed + 30.); + float k = magic(seed + 40.); // logic vec3 c0 = texture(previous, uv0).xyz; vec2 uv2 = uv1; - uv2 *= 1 + zoom * 2; - uv2 = lens(uv2, -lens_v2 * 10, lens_v1 * 10); + uv2 *= 1. + zoom * 2.; + uv2 = lens(uv2, -lens_v2 * 10., lens_v1 * 10.); vec3 c = reframe(previous, uv2).xyz; return fx_master(c0, c, seed, m0); @@ -322,13 +321,13 @@ subroutine(fx_stage_sub) vec4 fx_11(vec2 vUV, sampler2D previous, sampler2D feed 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 wall1 = magic(f1, b1, seed + 10); - float wall2 = magic(f2, b2, seed + 20); - float angle = magic(f3, b3, seed + 30); + float wall1 = magic(f1, b1, seed + 10.); + float wall2 = magic(f2, b2, seed + 20.); + float angle = magic(f3, b3, seed + 30.); // logic @@ -336,8 +335,8 @@ subroutine(fx_stage_sub) vec4 fx_11(vec2 vUV, sampler2D previous, sampler2D feed vec2 uv2 = uv1; uv2 *= rot(angle); - uv2.y = min(uv2.y, 1 - wall1); - uv2.y = -min(-uv2.y, 1 - wall2); + uv2.y = min(uv2.y, 1. - wall1); + uv2.y = -min(-uv2.y, 1. - wall2); uv2 *= rot(-angle); vec3 c = reframe(previous, uv2).xyz; @@ -351,33 +350,33 @@ subroutine(fx_stage_sub) vec4 fx_12(vec2 vUV, sampler2D previous, sampler2D feed vec2 uv0 = vUV.st; float ratio = iResolution.x / iResolution.y; - vec2 uv1 = (uv0 - 0.5) * vec2(ratio, 1); + vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.); // controls - float pixel_size = magic(f1, b1, seed + 10); - bool pixel_size_trigger = magic_trigger(b1, seed + 10); - f2 = magic_f(f2, b2, seed + 20); - int rule = int(f2.x * 12); - float threshold = f2.y * 0.9 + 0.05; - float fb = magic(f3, b3, seed + 30); + float pixel_size = magic(f1, b1, seed + 10.); + bool pixel_size_trigger = magic_trigger(b1, seed + 10.); + f2 = magic_f(f2, b2, seed + 20.); + int rule = int(f2.x * 12.); + float threshold = f2.y * .9 + .05; + float fb = magic(f3, b3, seed + 30.); // logic vec3 c0 = texture(previous, uv0).xyz; vec2 uv2 = uv1; - float k1 = pow(2, 9 - floor(pixel_size * 5)); - float p = 1 / k1; + float k1 = pow(2., 9. - floor(pixel_size * 5.)); + float p = 1. / k1; uv2 = round(uv2 * k1) / k1; vec3 c1 = mix( - reframe(previous, uv2 + vec2(0.5, 0.5) * p).xyz, - reframe(feedback, uv2 + vec2(0.5, 0.5) * p).xyz, + reframe(previous, uv2 + vec2(.5, .5) * p).xyz, + reframe(feedback, uv2 + vec2(.5, .5) * p).xyz, fb ); vec3 c2 = mix( - reframe(previous, uv2 + vec2(1.5, 0.5) * p).xyz, - reframe(feedback, uv2 + vec2(1.5, 0.5) * p).xyz, + reframe(previous, uv2 + vec2(1.5, .5) * p).xyz, + reframe(feedback, uv2 + vec2(1.5, .5) * p).xyz, fb ); vec3 c3 = mix( @@ -386,33 +385,33 @@ subroutine(fx_stage_sub) vec4 fx_12(vec2 vUV, sampler2D previous, sampler2D feed fb ); vec3 c4 = mix( - reframe(previous, uv2 + vec2(0.5, 1.5) * p).xyz, - reframe(feedback, uv2 + vec2(0.5, 1.5) * p).xyz, + reframe(previous, uv2 + vec2(.5, 1.5) * p).xyz, + reframe(feedback, uv2 + vec2(.5, 1.5) * p).xyz, fb ); vec3 c5 = mix( - reframe(previous, uv2 + vec2(-0.5, 1.5) * p).xyz, - reframe(feedback, uv2 + vec2(-0.5, 1.5) * p).xyz, + reframe(previous, uv2 + vec2(-.5, 1.5) * p).xyz, + reframe(feedback, uv2 + vec2(-.5, 1.5) * p).xyz, fb ); vec3 c6 = mix( - reframe(previous, uv2 + vec2(-0.5, 0.5) * p).xyz, - reframe(feedback, uv2 + vec2(-0.5, 0.5) * p).xyz, + reframe(previous, uv2 + vec2(-.5, .5) * p).xyz, + reframe(feedback, uv2 + vec2(-.5, .5) * p).xyz, fb ); vec3 c7 = mix( - reframe(previous, uv2 + vec2(-0.5, -0.5) * p).xyz, - reframe(feedback, uv2 + vec2(-0.5, -0.5) * p).xyz, + reframe(previous, uv2 + vec2(-.5, -.5) * p).xyz, + reframe(feedback, uv2 + vec2(-.5, -.5) * p).xyz, fb ); vec3 c8 = mix( - reframe(previous, uv2 + vec2(0.5, -0.5) * p).xyz, - reframe(feedback, uv2 + vec2(0.5, -0.5) * p).xyz, + reframe(previous, uv2 + vec2(.5, -.5) * p).xyz, + reframe(feedback, uv2 + vec2(.5, -.5) * p).xyz, fb ); vec3 c9 = mix( - reframe(previous, uv2 + vec2(-0.5, -0.5) * p).xyz, - reframe(feedback, uv2 + vec2(-0.5, -0.5) * p).xyz, + reframe(previous, uv2 + vec2(-.5, -.5) * p).xyz, + reframe(feedback, uv2 + vec2(-.5, -.5) * p).xyz, fb ); bool alive = mean(c1) >= threshold; @@ -453,7 +452,7 @@ subroutine(fx_stage_sub) vec4 fx_12(vec2 vUV, sampler2D previous, sampler2D feed 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); } @@ -465,20 +464,20 @@ subroutine(fx_stage_sub) vec4 fx_13(vec2 vUV, sampler2D previous, sampler2D feed 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 sx = magic(f1, b1, seed + 10) * 2; - float sy = magic(f2, b2, seed + 20) * 2; - float disp = 0.005 * magic(f3, b3, seed + 30); + float sx = magic(f1, b1, seed + 10.) * 2.; + float sy = magic(f2, b2, seed + 20.) * 2.; + float disp = .005 * magic(f3, b3, seed + 30.); // logic vec3 c0 = texture(previous, uv0).xyz; - const mat3x3 sobelx = {{-1, -2, -1}, {0, 0, 0}, {1, 2, 1}}; - const mat3x3 sobely = {{-1, 0, 1}, {-2, 0, 2}, {-1, 0, 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.); mat3x3 sobel = sobelx * sx + sobely * sy; @@ -494,13 +493,13 @@ subroutine(fx_stage_sub) vec4 fx_14(vec2 vUV, sampler2D previous, sampler2D feed 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 = 1 + magic(f1, b1, seed + 10) * 9; - float h_scroll = magic(f2, b2, seed + 20); - float angle = magic(f3, b3, seed + 30); + float zoom = 1 + magic(f1, b1, seed + 10.) * 9.; + float h_scroll = magic(f2, b2, seed + 20.); + float angle = magic(f3, b3, seed + 30.); // logic @@ -512,11 +511,11 @@ subroutine(fx_stage_sub) vec4 fx_14(vec2 vUV, sampler2D previous, sampler2D feed uv3 *= rot(angle); - 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.); vec3 c = reframe(previous, mod(uv3, umax)).xyz; @@ -526,33 +525,33 @@ subroutine(fx_stage_sub) vec4 fx_14(vec2 vUV, sampler2D previous, sampler2D feed // FX 15 : Random subroutine(fx_stage_sub) vec4 fx_15(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3, vec3 m0) { - int fx = int(randTime(seed + 100) * 14); + int fx = int(randTime(seed + 100.) * 14.) + 1; - if (fx == 0) { + if (fx == 1) { return fx_1(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); - } else if (fx == 1) { - return fx_2(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); } else if (fx == 2) { - return fx_3(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); + return fx_2(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); } else if (fx == 3) { - return fx_4(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); + return fx_3(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); } else if (fx == 4) { - return fx_5(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); + return fx_4(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); } else if (fx == 5) { - return fx_6(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); + return fx_5(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); } else if (fx == 6) { - return fx_7(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); + return fx_6(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); } else if (fx == 7) { - return fx_8(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); + return fx_7(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); } else if (fx == 8) { - return fx_9(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); + return fx_8(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); } else if (fx == 9) { - return fx_10(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); + return fx_9(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); } else if (fx == 10) { - return fx_11(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); + return fx_10(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); } else if (fx == 11) { - return fx_12(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); + return fx_11(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); } else if (fx == 12) { + return fx_12(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); + } else if (fx == 13) { return fx_13(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); } else { return fx_14(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); diff --git a/default/inc_src.glsl b/default/inc_src.glsl index 690035d..8d36575 100644 --- a/default/inc_src.glsl +++ b/default/inc_src.glsl @@ -1,6 +1,7 @@ #include inc_res.glsl #include inc_magic.glsl #include inc_functions.glsl +#include inc_cp437.glsl #ifndef INC_SRC #define INC_SRC @@ -13,6 +14,8 @@ uniform sampler2D iTex4; subroutine vec4 src_stage_sub(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3); +subroutine uniform src_stage_sub src_stage; + vec4 src_thru(vec2 vUV, sampler2D tex, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) { // start @@ -21,9 +24,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 @@ -31,8 +34,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(0.5, light)); + c *= 1. + saturation; + c = mix(c + light * 2., c - (1. - light) * 2., step(.5, light)); // output @@ -40,259 +43,128 @@ vec4 src_thru(vec2 vUV, sampler2D tex, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 } // SRC 1: feedback + thru -subroutine ( src_stage_sub ) vec4 src_1(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) +subroutine(src_stage_sub) vec4 src_1(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) { return src_thru(vUV, iTex0, seed, b1, f1, b2, f2, b3, f3); } // SRC 2 : lines -subroutine ( src_stage_sub ) vec4 src_2(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) +subroutine(src_stage_sub) vec4 src_2(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); + 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 + 0.1); - float f = istep(k * 0.125 + 0.05, uv2.y) * istep(k * 0.125 + 0.01, -uv2.y); + 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); } // SRC 3 : dots -subroutine ( src_stage_sub ) vec4 src_3(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) +subroutine(src_stage_sub) vec4 src_3(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); + 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); - float k = zoom * 0.1 + 0.05; - uv2 = cmod(uv2, k * 2); - float f = istep(k / (1 + length(uv1) * 2), length(uv2)); + 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)); return vec4(f); } -// // SRC 4 : circuit -// subroutine ( src_stage_sub ) 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) * 0.8 + 0.1; -// float v = magic_reverse(f3, b3, seed + 30) * 0.8 + 0.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) - 0.5; - -// const float t = 0.1; - -// float f = 0; -// int c = 0; - -// if (up) { -// f += stripe(uv1.x, -t * 0.5, t * 0.5) * step(-t * 0.5, uv1.y); -// c += 1; -// } - -// if (down) { -// f += stripe(uv1.x, -t * 0.5, t * 0.5) * istep(t * 0.5, uv1.y); -// c += 1; -// } - -// if (left) { -// f += stripe(uv1.y, -t * 0.5, t * 0.5) * istep(t * 0.5, uv1.x); -// c += 1; -// } - -// if (right) { -// f += stripe(uv1.y, -t * 0.5, t * 0.5) * step(-t * 0.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) < 0.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 * 0.5), vec2(-t * 2.5, t * 2), t * 0.75); -// f += line(uv1, vec2(-t * 2.5, t * 2), vec2(-t * 1.5, -t * 2), t * 0.75); -// f += line(uv1, vec2(-t * 1.5, -t * 2), vec2(-t * 0.5, t * 2), t * 0.75); -// f += line(uv1, vec2(-t * 0.5, t * 2), vec2(t * 0.5, -t * 2), t * 0.75); -// f += line(uv1, vec2(t * 0.5, -t * 2), vec2(t * 1.5, t * 2), t * 0.75); -// f += line(uv1, vec2(t * 1.5, t * 2), vec2(t * 2.5, -t * 2), t * 0.75); -// f += line(uv1, vec2(t * 2.5, -t * 2), vec2(t * 3.25, t * 0.5), t * 0.75); -// } else if (k < 20) { // capacitor -// f += rect(uv1, vec2(-t * 2, 0), vec2(t, t * 0.5)); -// f += rect(uv1, vec2(t * 2, 0), vec2(t, t * 0.5)); -// f += rect(uv1, vec2(t, 0), vec2(t * 0.5, t * 3.5)); -// f += rect(uv1, vec2(-t, 0), vec2(t * 0.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 * 0.5, t * 3)); -// f += rect(uv1, vec2(-t * 2.5, 0), vec2(t * 0.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 * 0.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 * 0.5, t * 3)); -// f += line(uv1, vec2(t * 0.25, t * 3.25), vec2(-t * 3, t), t); -// f += line(uv1, vec2(t * 0.25, -t * 3.25), vec2(-t * 3, -t), t); -// } -// } - -// return vec4(f); -// } // SRC 4 : bacteria -subroutine ( src_stage_sub ) vec4 src_4(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) +subroutine(src_stage_sub) 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); + 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 * 0.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); } // SRC 5 : noise -subroutine ( src_stage_sub ) vec4 src_5(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) +subroutine(src_stage_sub) vec4 src_5(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); + 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)) * 0.5 + 1; - int nf = int(noise_factor * 6); - f *= mix(1, noise_f(uv2, nf - 1), step(0.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 -subroutine ( src_stage_sub ) vec4 src_6(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) +subroutine(src_stage_sub) vec4 src_6(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) { if (iDemo > 0) { return src_2(vUV, seed, b1, f1, b2, f2, b3, f3); @@ -301,121 +173,119 @@ subroutine ( src_stage_sub ) vec4 src_6(vec2 vUV, int seed, vec3 b1, vec2 f1, ve return src_thru(vUV, iTex3, seed, b1, f1, b2, f2, b3, f3); } -#include inc_cp437.glsl - // SRC 7 : cp437 -subroutine ( src_stage_sub ) vec4 src_7(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) +subroutine(src_stage_sub) vec4 src_7(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); + 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 * 0.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); } // SRC 8 : sentences -subroutine ( src_stage_sub ) vec4 src_8(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) +subroutine(src_stage_sub) vec4 src_8(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); + 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.y += 0.5; + uv2 *= (1. + zoom) * 12.; + uv2.y += .5; int s = int(sentence * (SENTENCE_COUNT - 1)); - uv2.x += floor(uv2.y) * (h_delta - 0.5) * 2; - uv2.y = mix(uv2.y, mod(uv2.y, 1), h_delta_b.x); - float f = write_sentence(uv2, vec2(-float(lengths[s]) * 0.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); } // SRC 9 : sentences repeat -subroutine ( src_stage_sub ) vec4 src_9(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) +subroutine(src_stage_sub) vec4 src_9(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); + 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.y += 0.5; + uv2 *= 15.; + uv2.y += .5; int s = int(sentence * (SENTENCE_COUNT - 1)); float slen = float(lengths[s]); - uv2.x += floor(uv2.y) * (h_delta - 0.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 * 0.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) * 0.125)) * (1 - abs(floor(uv2.y) * 0.125)); + f *= (1. - abs(floor(uv2.y) * .125)) * (1. - abs(floor(uv2.y) * .125)); return vec4(f); } // SRC 10 : isometric grid -subroutine ( src_stage_sub ) vec4 src_10(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) +subroutine(src_stage_sub) vec4 src_10(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); + 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) * 0.5; - float thick = 0.1; + 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 @@ -423,38 +293,38 @@ subroutine ( src_stage_sub ) vec4 src_10(vec2 vUV, int seed, vec3 b1, vec2 f1, v 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) - 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); } // SRC 11 : video in 2 + thru -subroutine ( src_stage_sub ) vec4 src_11(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) +subroutine(src_stage_sub) vec4 src_11(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) { if (iDemo > 0) { return src_3(vUV, seed, b1, f1, b2, f2, b3, f3); @@ -464,62 +334,62 @@ subroutine ( src_stage_sub ) vec4 src_11(vec2 vUV, int seed, vec3 b1, vec2 f1, v } // SRC 12 : Scales -subroutine ( src_stage_sub ) vec4 src_12(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) +subroutine(src_stage_sub) vec4 src_12(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); + 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(0.5, saw((length(mod(uv3, 1)) + shape + 0.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); } // SRC 13 : Credenza -subroutine ( src_stage_sub ) vec4 src_13(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) +subroutine(src_stage_sub) vec4 src_13(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); + vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.); // controls - float zoom = 5 + magic(f1, b1, seed + 10) * 15; - float shape = 0.1 + magic(f2, b2, seed + 20) * 0.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 @@ -527,33 +397,33 @@ subroutine ( src_stage_sub ) vec4 src_13(vec2 vUV, int seed, vec3 b1, vec2 f1, v 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(0.5, saw((length(uv2) + shape + 0.5) * repeat)) * istep(0.5, saw((length(1 - uv2) + shape + 0.5) * repeat)); + f *= istep(.5, saw((length(uv2) + shape + .5) * repeat)) * istep(.5, saw((length(1. - uv2) + shape + .5) * repeat)); return vec4(f); } // SRC 14 : Cursor -subroutine ( src_stage_sub ) vec4 src_14(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) +subroutine(src_stage_sub) vec4 src_14(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); + vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.); // controls - float size = magic(f1, b1, seed + 10) * 2 + 0.1; - float dx = (fmagic(f2, b2, seed + 20) * (1 - size * 0.06) - 0.5) * ratio; - bool flip_x = magic_trigger(b2, seed + 20); - float dy = fmagic(f3, b3, seed + 30) * (1 - size * 0.17) - 0.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 @@ -571,49 +441,49 @@ subroutine ( src_stage_sub ) vec4 src_14(vec2 vUV, int seed, vec3 b1, vec2 f1, v 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 += 0.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, -0.04), vec2(0.01, 0.04)); + f += rect(uv2, vec2(0., -.04), vec2(.01, .04)); return vec4(f); } // SRC 15 : Random -subroutine ( src_stage_sub ) vec4 src_15(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) +subroutine(src_stage_sub) vec4 src_15(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) { - int src = int(randTime(seed + 100) * 14); + int src = int(randTime(seed + 100.) * 14.) + 1; - if (src == 0) { + if (src == 1) { return src_1(vUV, seed, b1, f1, b2, f2, b3, f3); - } else if (src == 1) { - return src_2(vUV, seed, b1, f1, b2, f2, b3, f3); } else if (src == 2) { - return src_3(vUV, seed, b1, f1, b2, f2, b3, f3); + return src_2(vUV, seed, b1, f1, b2, f2, b3, f3); } else if (src == 3) { - return src_4(vUV, seed, b1, f1, b2, f2, b3, f3); + return src_3(vUV, seed, b1, f1, b2, f2, b3, f3); } else if (src == 4) { - return src_5(vUV, seed, b1, f1, b2, f2, b3, f3); + return src_4(vUV, seed, b1, f1, b2, f2, b3, f3); } else if (src == 5) { - return src_6(vUV, seed, b1, f1, b2, f2, b3, f3); + return src_5(vUV, seed, b1, f1, b2, f2, b3, f3); } else if (src == 6) { - return src_7(vUV, seed, b1, f1, b2, f2, b3, f3); + return src_6(vUV, seed, b1, f1, b2, f2, b3, f3); } else if (src == 7) { - return src_8(vUV, seed, b1, f1, b2, f2, b3, f3); + return src_7(vUV, seed, b1, f1, b2, f2, b3, f3); } else if (src == 8) { - return src_9(vUV, seed, b1, f1, b2, f2, b3, f3); + return src_8(vUV, seed, b1, f1, b2, f2, b3, f3); } else if (src == 9) { - return src_10(vUV, seed, b1, f1, b2, f2, b3, f3); + return src_9(vUV, seed, b1, f1, b2, f2, b3, f3); } else if (src == 10) { - return src_11(vUV, seed, b1, f1, b2, f2, b3, f3); + return src_10(vUV, seed, b1, f1, b2, f2, b3, f3); } else if (src == 11) { - return src_12(vUV, seed, b1, f1, b2, f2, b3, f3); + return src_11(vUV, seed, b1, f1, b2, f2, b3, f3); } else if (src == 12) { + return src_12(vUV, seed, b1, f1, b2, f2, b3, f3); + } else if (src == 13) { return src_13(vUV, seed, b1, f1, b2, f2, b3, f3); } else { return src_14(vUV, seed, b1, f1, b2, f2, b3, f3);