From 749206746d0f9aabeb3383955cab869103102fea Mon Sep 17 00:00:00 2001 From: klemek Date: Fri, 28 Aug 2026 19:46:46 +0200 Subject: [PATCH] refactor(default): glsl cleaning (1/2) --- default/inc_cp437.glsl | 120 ++++++++-------------- default/inc_debug.glsl | 182 ++++++++++++++++---------------- default/inc_functions.glsl | 205 ++++++++++++++++++------------------- default/inc_magic.glsl | 52 +++++----- default/inc_map.glsl | 12 +-- default/inc_rand.glsl | 6 +- default/inc_sentences.glsl | 45 ++++---- default/inc_src.glsl | 6 +- default/inc_time.glsl | 22 ++-- default/inc_yuyv.glsl | 32 ++---- scripts/sentences.py | 21 ++-- 11 files changed, 323 insertions(+), 380 deletions(-) diff --git a/default/inc_cp437.glsl b/default/inc_cp437.glsl index bb4cc76..58a2113 100644 --- a/default/inc_cp437.glsl +++ b/default/inc_cp437.glsl @@ -1,7 +1,9 @@ +#include inc_sentences.glsl + #ifndef INC_CP437 #define INC_CP437 -const int cp437[] = { +const int cp437[] = int[1024]( 0x0000, 0x0000, 0x0000, 0x0000, // 0x00, NUL 0x151E, 0x8A87, 0xE19D, 0x789B, // 0x01, SOH, SMILEY BLACK 0xFBFE, 0xFDF7, 0xEF73, 0x7FEC, // 0x02, STX, SMILEY LIGHT @@ -257,10 +259,10 @@ const int cp437[] = { 0x666E, 0x3331, 0x0006, 0x0003, // 0xFC, ⁿ 0x6C8E, 0x0010, 0x000E, 0x0001, // 0xFD, ² 0xCC00, 0x3300, 0x00CC, 0x0033, // 0xFE, ■ - 0x0000, 0x0000, 0x0000, 0x0000, // 0xFF, NBSP -}; + 0x0000, 0x0000, 0x0000, 0x0000 // 0xFF, NBSP +); -const int charsets[] = { +const int charsets[] = int[18]( 0x30, 10, // NUMBERS 0x41, 26, // UPPERCASE LETTERS 0x61, 26, // LOWERCASE LETTERS @@ -269,12 +271,12 @@ const int charsets[] = { 0xB3, 40, // BARS 0xE0, 16, // GREEK 0x80, 28, // ACCENTS - 0xB0, 3, // SHADES -}; + 0xB0, 3 // SHADES +); #define CHARSETS 8 -const int hex_chars[] = { +const int hex_chars[] = int[16]( 0x30, 0x31, 0x32, @@ -290,29 +292,29 @@ const int hex_chars[] = { 0x43, 0x44, 0x45, - 0x46, -}; + 0x46 +); bool char(vec2 pos, int code) { - if (pos.x < 0.0 || pos.y < 0.0 || pos.x >= 1.0 || pos.y >= 1.0) { + if (pos.x < .0 || pos.y < .0 || pos.x >= 1. || pos.y >= 1.) { return false; } - ivec2 pos2 = ivec2(pos.x * 8.0, (1 - pos.y) * 8.0); + ivec2 pos2 = ivec2(pos.x * 8., (1 - pos.y) * 8.); ivec2 subpos = pos2 % 4; - int v = int(pow(2, subpos.y * 4 + subpos.x)); - int d = int(pos2.y * 0.25) * 2 + int(pos2.x * 0.25); + int v = int(pow(2., subpos.y * 4. + subpos.x)); + int d = int(pos2.y * .25) * 2 + int(pos2.x * .25); return (cp437[code * 4 + d] & v) > 0; } float char_at(vec2 uv, vec2 pos, int code) { - return char(uv - pos, code) ? 1 : 0; + return char(uv - pos, code) ? 1. : 0.; } float write_5(vec2 uv, vec2 pos, int str[5]) { - float d = 0; + float d = 0.; int i; for (i = 0; i < 5; i++) { @@ -320,7 +322,7 @@ float write_5(vec2 uv, vec2 pos, int str[5]) return d; } - d += char_at(uv, pos + vec2(i, 0), str[i]); + d += char_at(uv, pos + vec2(i, 0.), str[i]); } return d; @@ -328,7 +330,7 @@ float write_5(vec2 uv, vec2 pos, int str[5]) float write_10(vec2 uv, vec2 pos, int str[10]) { - float d = 0; + float d = 0.; int i; for (i = 0; i < 10; i++) { @@ -336,7 +338,7 @@ float write_10(vec2 uv, vec2 pos, int str[10]) return d; } - d += char_at(uv, pos + vec2(i, 0), str[i]); + d += char_at(uv, pos + vec2(i, 0.), str[i]); } return d; @@ -344,7 +346,7 @@ float write_10(vec2 uv, vec2 pos, int str[10]) float write_20(vec2 uv, vec2 pos, int str[20]) { - float d = 0; + float d = 0.; int i; for (i = 0; i < 20; i++) { @@ -352,96 +354,56 @@ float write_20(vec2 uv, vec2 pos, int str[20]) return d; } - d += char_at(uv, pos + vec2(i, 0), str[i]); + d += char_at(uv, pos + vec2(i, 0.), str[i]); } return d; } -float write_int(vec2 uv, vec2 pos, uint value, uint magnitude) +float write_int(vec2 uv, vec2 pos, int value, int magnitude) { + value = max(0, value); int i; uint m = 1; - float d = 0; + float d = 0.; for (i = 0; i < magnitude; i++) { if (i == 0 || value >= m) { - d += char_at(uv, pos + vec2(magnitude - i - 1, 0), int(0x30 + (value % (m * 10u)) / m)); - m *= 10u; + d += char_at(uv, pos + vec2(magnitude - i - 1, 0.), int(0x30 + (value % (m * 10)) / m)); + m *= 10; } } return d; } -float write_int_left(vec2 uv, vec2 pos, uint value, uint magnitude) +float write_int_left(vec2 uv, vec2 pos, int value, int magnitude) { + value = max(0, value); int i; - uint m = 1; - float d = 0; + int m = 1; + float d = 0.; for (i = 0; i < magnitude; i++) { if (i == 0 || value >= m) { - pos.x += 1; - m *= 10u; + pos.x += 1.; + m *= 10; } } return write_int(uv, pos, value, magnitude); } -int read(sampler2D tex, vec2 uv, float k, int d, float t) +float write_sentence(vec2 uv, vec2 pos, int n) { - float inv_k = 1 / k; - vec2 tex_uv = floor(uv * k) * inv_k; - tex_uv += vec2(d % 2, floor(d * 0.5)) * 0.5 * inv_k; - return - ((mean(reframe(tex, tex_uv + vec2(0, 3) * inv_k * 0.125)) > t) ? 1 : 0) + - ((mean(reframe(tex, tex_uv + vec2(0, 2) * inv_k * 0.125)) > t) ? 2 : 0) + - ((mean(reframe(tex, tex_uv + vec2(0, 1) * inv_k * 0.125)) > t) ? 4 : 0) + - ((mean(reframe(tex, tex_uv + vec2(0, 0) * inv_k * 0.125)) > t) ? 8 : 0) + - ((mean(reframe(tex, tex_uv + vec2(1, 3) * inv_k * 0.125)) > t) ? 16 : 0) + - ((mean(reframe(tex, tex_uv + vec2(1, 2) * inv_k * 0.125)) > t) ? 32 : 0) + - ((mean(reframe(tex, tex_uv + vec2(1, 1) * inv_k * 0.125)) > t) ? 64 : 0) + - ((mean(reframe(tex, tex_uv + vec2(1, 0) * inv_k * 0.125)) > t) ? 128 : 0) + - ((mean(reframe(tex, tex_uv + vec2(2, 3) * inv_k * 0.125)) > t) ? 256 : 0) + - ((mean(reframe(tex, tex_uv + vec2(2, 2) * inv_k * 0.125)) > t) ? 512 : 0) + - ((mean(reframe(tex, tex_uv + vec2(2, 1) * inv_k * 0.125)) > t) ? 1024 : 0) + - ((mean(reframe(tex, tex_uv + vec2(2, 0) * inv_k * 0.125)) > t) ? 2048 : 0) + - ((mean(reframe(tex, tex_uv + vec2(3, 3) * inv_k * 0.125)) > t) ? 4096 : 0) + - ((mean(reframe(tex, tex_uv + vec2(3, 2) * inv_k * 0.125)) > t) ? 8192 : 0) + - ((mean(reframe(tex, tex_uv + vec2(3, 1) * inv_k * 0.125)) > t) ? 16384 : 0) + - ((mean(reframe(tex, tex_uv + vec2(3, 0) * inv_k * 0.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; + float d = 0.; 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; + for (i = 0; i < SENTENCE_MAX_LENGTH; i++) { + if (sentences[n * SENTENCE_MAX_LENGTH + i] == 0) { + return d; } + + d += char_at(uv, pos + vec2(i, 0.), sentences[n * SENTENCE_MAX_LENGTH + i]); } - return mc; + return d; } #endif diff --git a/default/inc_debug.glsl b/default/inc_debug.glsl index 6b7cd98..338c7cb 100644 --- a/default/inc_debug.glsl +++ b/default/inc_debug.glsl @@ -46,27 +46,27 @@ vec4 debug(vec2 vUV) vec2 uv0 = vUV.st; float ratio = iResolution.x / iResolution.y; - vec2 uv1 = (uv0 - .5) * vec2(ratio, 1); + vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.); // inputs int selected_srca = iState3 - 1; bool random_srca = iState3 == 15; if (random_srca) { - selected_srca = int(randTime(iSeed3 + 100) * 14); + selected_srca = int(randTime(iSeed3 + 100.) * 14.); } - if (selected_srca == 5 && iDemo > 0) { + if (selected_srca == 5 && iDemo > 0.) { selected_srca = 1; random_srca = true; } - if (selected_srca == 10 && iDemo > 0) { + if (selected_srca == 10 && iDemo > 0.) { selected_srca = 2; random_srca = true; } int selected_srcb = iState4 - 1; bool random_srcb = iState4 == 15; if (random_srcb) { - selected_srcb = int(randTime(iSeed4 + 100) * 14); + selected_srcb = int(randTime(iSeed4 + 100.) * 14.); } if (selected_srcb == 5 && iDemo > 0) { selected_srcb = 1; @@ -79,27 +79,27 @@ vec4 debug(vec2 vUV) int selected_fxa = iState5 - 1; bool random_fxa = iState5 == 15; if (random_fxa) { - selected_fxa = int(randTime(iSeed5 + 100) * 14); + selected_fxa = int(randTime(iSeed5 + 100.) * 14.); } int selected_fxb = iState6 - 1; bool random_fxb = iState6 == 15; if (random_fxb) { - selected_fxb = int(randTime(iSeed6 + 100) * 14); + selected_fxb = int(randTime(iSeed6 + 100.) * 14.); } int selected_mfx = iState8 - 1; bool random_mfx = iState8 == 15; if (random_mfx) { - selected_mfx = int(randTime(iSeed8 + 100) * 14); + selected_mfx = int(randTime(iSeed8 + 100.) * 14.); } - float fxa_value = magic(iGroup2_1[6].xy, vec3(1, 0, 0), iSeed5); - bool fxa_invert = magic_trigger(vec3(iGroup2_1[6].z, 0, 0), iSeed5); - float fxb_value = magic(iGroup2_2[6].xy, vec3(1, 0, 0), iSeed6); - bool fxb_invert = magic_trigger(vec3(iGroup2_2[6].z, 0, 0), iSeed6); - float mfx_value = magic(iGroup2_3[6].xy, vec3(1, 0, 0), iSeed8); - bool mfx_invert = magic_trigger(vec3(iGroup2_3[6].z, 0, 0), iSeed8); - float mix_value = magic(iGroup3_1[1].xy, vec3(1, 0, 0), iSeed7); - mix_value = mix(mix_value, mix_value * 0.9 + 0.05, iDemo); - bool mix_type = magic_trigger(vec3(iGroup3_1[0].x, 0, 0), iSeed7 + 10); + float fxa_value = magic(iGroup2_1[6].xy, vec3(1., 0., 0.), iSeed5); + bool fxa_invert = magic_trigger(vec3(iGroup2_1[6].z, 0., 0.), iSeed5); + float fxb_value = magic(iGroup2_2[6].xy, vec3(1., 0., 0.), iSeed6); + bool fxb_invert = magic_trigger(vec3(iGroup2_2[6].z, 0., 0.), iSeed6); + float mfx_value = magic(iGroup2_3[6].xy, vec3(1., 0., 0.), iSeed8); + bool mfx_invert = magic_trigger(vec3(iGroup2_3[6].z, 0., 0.), iSeed8); + float mix_value = magic(iGroup3_1[1].xy, vec3(1., 0., 0.), iSeed7); + mix_value = mix(mix_value, mix_value * .9 + .05, iDemo); + bool mix_type = magic_trigger(vec3(iGroup3_1[0].x, 0., 0.), iSeed7 + 10.); // logic @@ -178,82 +178,82 @@ vec4 debug(vec2 vUV) vec2 uv2 = uv1; - uv2 *= 10; - uv2.x -= 0.5; - uv2.y += 0.5; + uv2 *= 10.; + uv2.x -= .5; + uv2.y += .5; - vec2 uv3 = uv1 * 30; + vec2 uv3 = uv1 * 30.; // base frame float f = - h_rect(uv2, vec2(-5, -2), vec2(1), 0.1) + - h_rect(uv2, vec2(-2, -2), vec2(1), 0.1) + - rect(uv2, vec2(-3.5, -2), vec2(0.5, 0.1)) + - h_rect(uv2, vec2(-5, 2), vec2(1), 0.1) + - h_rect(uv2, vec2(-2, 2), vec2(1), 0.1) + - rect(uv2, vec2(-3.5, 2), vec2(0.5, 0.1)) + - h_rect(uv2, vec2(2, 0), vec2(1), 0.1) + - h_rect(uv2, vec2(5, 0), vec2(1), 0.1) + - rect(uv2, vec2(3.5, 0), vec2(0.5, 0.1)) + - rect(uv2, vec2(0.55, -2), vec2(1.5, 0.1)) + - rect(uv2, vec2(2, -1.55), vec2(0.1, 0.55)) + - rect(uv2, vec2(0.55, 2), vec2(1.5, 0.1)) + - rect(uv2, vec2(2, 1.55), vec2(0.1, 0.55)) + - rect(uv2, vec2(6.8, 0), vec2(0.75, 0.1)) + - h_circle(uv2, vec2(7.8, 0), 0.3, 0.1); + h_rect(uv2, vec2(-5., -2.), vec2(1.), .1) + + h_rect(uv2, vec2(-2., -2.), vec2(1.), .1) + + rect(uv2, vec2(-3.5, -2.), vec2(.5, .1)) + + h_rect(uv2, vec2(-5, 2.), vec2(1.), .1) + + h_rect(uv2, vec2(-2, 2.), vec2(1.), .1) + + rect(uv2, vec2(-3.5, 2.), vec2(.5, .1)) + + h_rect(uv2, vec2(2., 0.), vec2(1.), .1) + + h_rect(uv2, vec2(5., 0.), vec2(1.), .1) + + rect(uv2, vec2(3.5, 0.), vec2(.5, .1)) + + rect(uv2, vec2(.55, -2.), vec2(1.5, .1)) + + rect(uv2, vec2(2., -1.55), vec2(.1, .55)) + + rect(uv2, vec2(.55, 2.), vec2(1.5, .1)) + + rect(uv2, vec2(2., 1.55), vec2(.1, .55)) + + rect(uv2, vec2(6.8, 0.), vec2(.75, .1)) + + h_circle(uv2, vec2(7.8, 0.), .3, .1); if (iDemo < 1 && iInputFormat1 == YUYV_FOURCC) { - f += circle(uv2, vec2(-9, 2), 0.3); + f += circle(uv2, vec2(-9., 2.), .3); } if (iDemo < 1 && iInputFormat2 == YUYV_FOURCC) { - f += circle(uv2, vec2(-9, -2), 0.3); + f += circle(uv2, vec2(-9., -2.), .3); } // show selected src/fx f += char_at(uv2, vec2(-5.4, 1.45), hex_chars[selected_srca]); - f += random_srca ? circle(uv2, vec2(-4.25, 2.7), 0.1) : 0; + f += random_srca ? circle(uv2, vec2(-4.25, 2.7), .1) : 0.; f += char_at(uv2, vec2(-5.4, -2.55), hex_chars[selected_srcb]); - f += random_srcb ? circle(uv2, vec2(-4.25, -1.3), 0.1) : 0; + f += random_srcb ? circle(uv2, vec2(-4.25, -1.3), .1) : 0.; f += char_at(uv2, vec2(-2.4, 1.45), hex_chars[selected_fxa]); - f += fxa_invert ? rect(uv2, vec2(-2, 2.7), vec2(0.5, 0.05)) : 0; - f += random_fxa ? circle(uv2, vec2(-1.25, 2.7), 0.1) : 0; + f += fxa_invert ? rect(uv2, vec2(-2., 2.7), vec2(.5, .05)) : 0.; + f += random_fxa ? circle(uv2, vec2(-1.25, 2.7), .1) : 0.; f += char_at(uv2, vec2(-2.4, -2.55), hex_chars[selected_fxb]); - f += fxb_invert ? rect(uv2, vec2(-2, -1.3), vec2(0.5, 0.05)) : 0; - f += random_fxb ? circle(uv2, vec2(-1.25, -1.3), 0.1) : 0; - f += char_at(uv2, vec2(4.6, -0.55), hex_chars[selected_mfx]); - f += mfx_invert ? rect(uv2, vec2(5, 0.7), vec2(0.5, 0.05)) : 0; - f += random_mfx ? circle(uv2, vec2(5.75, 0.7), 0.1) : 0; + f += fxb_invert ? rect(uv2, vec2(-2., -1.3), vec2(.5, .05)) : 0.; + f += random_fxb ? circle(uv2, vec2(-1.25, -1.3), .1) : 0.; + f += char_at(uv2, vec2(4.6, -.55), hex_chars[selected_mfx]); + f += mfx_invert ? rect(uv2, vec2(5., .7), vec2(.5, .05)) : 0.; + f += random_mfx ? circle(uv2, vec2(5.75, .7), .1) : 0.; // show current selected - f += iSelected == 3 ? h_rect(uv2, vec2(-5, 2), vec2(1.2), 0.1) : 0; - f += iSelected == 4 ? h_rect(uv2, vec2(-5, -2), vec2(1.2), 0.1) : 0; - f += iSelected == 5 ? h_rect(uv2, vec2(-2, 2), vec2(1.2), 0.1) : 0; - f += iSelected == 6 ? h_rect(uv2, vec2(-2, -2), vec2(1.2), 0.1) : 0; - f += iSelected == 8 ? h_rect(uv2, vec2(5, 0), vec2(1.2), 0.1) : 0; + f += iSelected == 3 ? h_rect(uv2, vec2(-5., 2.), vec2(1.2), .1) : 0.; + f += iSelected == 4 ? h_rect(uv2, vec2(-5., -2.), vec2(1.2), .1) : 0.; + f += iSelected == 5 ? h_rect(uv2, vec2(-2., 2.), vec2(1.2), .1) : 0.; + f += iSelected == 6 ? h_rect(uv2, vec2(-2., -2.), vec2(1.2), .1) : 0.; + f += iSelected == 8 ? h_rect(uv2, vec2(5., 0.), vec2(1.2), .1) : 0.; // show selected src/fx - f += iActive1 == 1 ? h_rect(uv2, vec2(-5, 0.8), vec2(1, 0), 0.1) : 0; - f += iActive1 == 2 ? h_rect(uv2, vec2(-5, -3.2), vec2(1, 0), 0.1) : 0; - f += iActive2 == 1 ? h_rect(uv2, vec2(-2, 0.8), vec2(1.2, 0), 0.1) : 0; - f += iActive2 == 2 ? h_rect(uv2, vec2(-2, -3.2), vec2(1, 0), 0.1) : 0; - f += iActive2 == 3 ? h_rect(uv2, vec2(5, -1.2), vec2(1, 0), 0.1) : 0; + f += iActive1 == 1 ? h_rect(uv2, vec2(-5., .8), vec2(1., 0.), .1) : 0.; + f += iActive1 == 2 ? h_rect(uv2, vec2(-5., -3.2), vec2(1., 0.), .1) : 0.; + f += iActive2 == 1 ? h_rect(uv2, vec2(-2., .8), vec2(1.2, 0.), .1) : 0.; + f += iActive2 == 2 ? h_rect(uv2, vec2(-2., -3.2), vec2(1., 0.), .1) : 0.; + f += iActive2 == 3 ? h_rect(uv2, vec2(5., -1.2), vec2(1., 0.), .1) : 0.; // show src/fx - f += write_5(uv3 * 0.75, vec2(-11.6, -1.8), texts[6]); - f += write_5(uv3 * 0.75, vec2(-4.2, -1.8), texts[7]); - f += char_at(uv3 * 0.5, vec2(-11.5, 3.5), 0x41); - f += char_at(uv3 * 0.5, vec2(-11.5, -6), 0x42); + 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 += 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 * 0.75, vec2(-19.7, -1.8), texts[8]); + f += write_5(uv3 * .75, vec2(-19.7, -1.8), texts[8]); } - f += write_5(uv3 * 0.75, vec2(10.9, 2), texts[9]); + f += write_5(uv3 * .75, vec2(10.9, 2.), texts[9]); // show inputs / feedback - float line_a_a = rect(uv2, vec2(-7.5, 2), vec2(1.5, 0.1)); - float line_a_b = rect(uv2, vec2(-6.5, 2), vec2(0.5, 0.1)) + rect(uv2, vec2(-8.5, -2), vec2(0.5, 0.1)) + line(uv2, vec2(-7, 2.1), vec2(-8, -2.1), 0.2); - float line_a_f = rect(uv2, vec2(-6.5, 2), vec2(0.5, 0.1)) + rect(uv2, vec2(0, 3.6), vec2(7, 0.1)) + rect(uv2, vec2(-7, 2.8), vec2(0.1, 0.9)) + rect(uv2, vec2(7, 1.8), vec2(0.1, 1.9)); + float line_a_a = rect(uv2, vec2(-7.5, 2.), vec2(1.5, .1)); + float line_a_b = rect(uv2, vec2(-6.5, 2.), vec2(.5, .1)) + rect(uv2, vec2(-8.5, -2), vec2(.5, .1)) + line(uv2, vec2(-7., 2.1), vec2(-8., -2.1), .2); + float line_a_f = rect(uv2, vec2(-6.5, 2.), vec2(.5, .1)) + rect(uv2, vec2(0., 3.6), vec2(7., .1)) + rect(uv2, vec2(-7., 2.8), vec2(.1, .9)) + rect(uv2, vec2(7., 1.8), vec2(.1, 1.9)); if (selected_srca == 5 && iInputFormat1 == YUYV_FOURCC) { f += line_a_a; } else if (selected_srca == 10 && iInputFormat2 == YUYV_FOURCC) { @@ -262,9 +262,9 @@ vec4 debug(vec2 vUV) f += line_a_f; } - float line_b_a = rect(uv2, vec2(-6.5, -2), vec2(0.5, 0.1)) + rect(uv2, vec2(-8.5, 2), vec2(0.5, 0.1)) + line(uv2, vec2(-7, -2.1), vec2(-8, 2.1), 0.2); - float line_b_b = rect(uv2, vec2(-7.5, -2), vec2(1.5, 0.1)); - float line_b_f = rect(uv2, vec2(-6.5, -2), vec2(0.5, 0.1)) + rect(uv2, vec2(0, -3.6), vec2(7, 0.1)) + rect(uv2, vec2(-7, -2.8), vec2(0.1, 0.9)) + rect(uv2, vec2(7, -1.8), vec2(0.1, 1.9)); + float line_b_a = rect(uv2, vec2(-6.5, -2.), vec2(.5, .1)) + rect(uv2, vec2(-8.5, 2.), vec2(.5, .1)) + line(uv2, vec2(-7., -2.1), vec2(-8., 2.1), .2); + float line_b_b = rect(uv2, vec2(-7.5, -2.), vec2(1.5, .1)); + float line_b_f = rect(uv2, vec2(-6.5, -2.), vec2(.5, .1)) + rect(uv2, vec2(0., -3.6), vec2(7., .1)) + rect(uv2, vec2(-7., -2.8), vec2(.1, .9)) + rect(uv2, vec2(7., -1.8), vec2(.1, 1.9)); if (selected_srcb == 5 && iInputFormat1 == YUYV_FOURCC) { f += line_b_a; } else if (selected_srcb == 10 && iInputFormat2 == YUYV_FOURCC) { @@ -274,44 +274,44 @@ vec4 debug(vec2 vUV) } // show page - f += iPage == 0 ? circle(uv2, vec2(-0.75, -4.1), 0.3) : h_circle(uv2, vec2(-0.75, -4.1), 0.25, 0.1); - f += iPage == 1 ? circle(uv2, vec2(0, -4.1), 0.3) : h_circle(uv2, vec2(0, -4.1), 0.20, 0.1); - f += iPage == 2 ? circle(uv2, vec2(0.75, -4.1), 0.3) : h_circle(uv2, vec2(0.75, -4.1), 0.20, 0.1); + f += iPage == 0 ? circle(uv2, vec2(-.75, -4.1), .3) : h_circle(uv2, vec2(-.75, -4.1), .25, .1); + f += iPage == 1 ? circle(uv2, vec2(0., -4.1), .3) : h_circle(uv2, vec2(0., -4.1), .20, .1); + f += iPage == 2 ? circle(uv2, vec2(.75, -4.1), .3) : h_circle(uv2, vec2(.75, -4.1), .20, .1); // show fx values float fx_rect = 0; - f = mix(f, 1 - f, rect(uv2, vec2(-2, 1.1 + 0.9 * fxa_value), vec2(0.9, 0.9 * fxa_value))); - f = mix(f, 1 - f, rect(uv2, vec2(-2, -2.9 + 0.9 * fxb_value), vec2(0.9, 0.9 * fxb_value))); - f = mix(f, 1 - f, rect(uv2, vec2(5, -0.9 + 0.9 * mfx_value), vec2(0.9, 0.9 * mfx_value))); + f = mix(f, 1 - f, rect(uv2, vec2(-2., 1.1 + .9 * fxa_value), vec2(.9, .9 * fxa_value))); + f = mix(f, 1 - f, rect(uv2, vec2(-2., -2.9 + .9 * fxb_value), vec2(.9, .9 * fxb_value))); + f = mix(f, 1 - f, rect(uv2, vec2(5., -.9 + .9 * mfx_value), vec2(.9, .9 * mfx_value))); // show mix - f += char_at(uv2, vec2(1.55, -0.6), mix_type ? 0x4B : 0x4D); - f = mix(f, 1 - f, rect(uv2, vec2(2, -0.9 + 0.9 * mix_value), vec2(0.9, 0.9 * mix_value))); + f += char_at(uv2, vec2(1.55, -.6), mix_type ? 0x4B : 0x4D); + f = mix(f, 1 - f, rect(uv2, vec2(.2, -.9 + .9 * mix_value), vec2(.9, .9 * mix_value))); // show debug info - float v = 0; - float x = 0; + float v = 0.; + float x = 0.; - x = -15; - f += write_5(uv3, vec2(x - 4.5, 13), texts[1]); - f += write_int(uv3, vec2(x + 1.5, 13), int(iTempo), 3); + x = -15.; + f += write_5(uv3, vec2(x - 4.5, 13.), texts[1]); + f += write_int(uv3, vec2(x + 1.5, 13.), int(iTempo), 3); v = fract(iBeats); - f += h_rect(uv3, vec2(x, 12), vec2(4, 0.5), 0.2); - f += rect(uv3, vec2(x + 4 * v - 4, 12), vec2(4 * v, 0.4)); + f += h_rect(uv3, vec2(x, 12.), vec2(4., .5), .2); + f += rect(uv3, vec2(x + 4. * v - 4., 12.), vec2(4. * v, .4)); - x = 15; + x = 15.; if (iAutoRand > 0) { - f += write_5(uv3, vec2(x - 4.5, 13), texts[5]); - f += write_int(uv3, vec2(x - 0.5, 13), int(iAutoRandCycle), 5); + f += write_5(uv3, vec2(x - 4.5, 13.), texts[5]); + f += write_int(uv3, vec2(x - .5, 13.), int(iAutoRandCycle), 5); v = fract(iBeats / iAutoRandCycle); } else { - f += write_int(uv3, vec2(x - 0.5, 13), int(iTime), 5); + 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.), texts[2]); } - f += h_rect(uv3, vec2(x, 12), vec2(4, 0.5), 0.2); - f += rect(uv3, vec2(x + 4 * v - 4, 12), vec2(4 * v, 0.4)); + f += h_rect(uv3, vec2(x, 12.), vec2(4., .5), .2); + f += rect(uv3, vec2(x + 4. * v - 4., 12), vec2(4. * v, .4)); return vec4(f); } diff --git a/default/inc_functions.glsl b/default/inc_functions.glsl index f9c9b6b..dc5c4c5 100644 --- a/default/inc_functions.glsl +++ b/default/inc_functions.glsl @@ -12,51 +12,51 @@ // BASICS float istep(float x, float y) { - return 1 - step(x, y); + return 1. - step(x, y); } float estep(float x, float y) { - return smoothstep(x - 0.0001, x + 0.0001, y); + return smoothstep(x - .0001, x + .0001, y); } float iestep(float x, float y) { - return 1 - estep(x, y); + return 1. - estep(x, y); } float ease(float x) { - return 0.5 - cos(max(min(x, 1.0), 0.0) * PI) * 0.5; + return .5 - cos(max(min(x, 1.), 0.) * PI) * .5; } vec2 ease(vec2 x) { - return 0.5 - cos(max(min(x, 1.0), 0.0) * PI) * 0.5; + return .5 - cos(max(min(x, 1.), 0.) * PI) * .5; } vec3 ease(vec3 x) { - return 0.5 - cos(max(min(x, 1.0), 0.0) * PI) * 0.5; + return .5 - cos(max(min(x, 1.), 0.) * PI) * .5; } float saw(float x) { - return abs(mod(x + 1, 2) - 1); + return abs(mod(x + 1., 2.) - 1.); } vec2 saw(vec2 x) { - return abs(mod(x + 1, 2) - 1); + return abs(mod(x + 1., 2.) - 1.); } vec3 saw(vec3 x) { - return abs(mod(x + 1, 2) - 1); + return abs(mod(x + 1., 2.) - 1.); } float cmod(float x, float k) { - return mod(x + k * 0.5, k) - k * 0.5; + return mod(x + k * .5, k) - k * .5; } vec2 cmod(vec2 x, float k) { - return mod(x + k * 0.5, k) - k * 0.5; + return mod(x + k * .5, k) - k * .5; } vec3 cmod(vec3 x, float k) { - return mod(x + k * 0.5, k) - k * 0.5; + return mod(x + k * .5, k) - k * .5; } // COLORS @@ -64,16 +64,16 @@ vec3 cmod(vec3 x, float k) { vec3 col(float x) { return vec3( .5 * (sin(x * 2. * PI) + 1.), - .5 * (sin(x * 2. * PI + 2. * PI / 3.) + 1.), - .5 * (sin(x * 2. * PI - 2. * PI / 3.) + 1.) + .5 * (sin(x * 2. * PI + PI * .6666667) + 1.), + .5 * (sin(x * 2. * PI - PI * .6666667) + 1.) ); } vec3 shift(vec3 c, float f) { return vec3( - c.x * (1 - f) + c.y * f, - c.y * (1 - f) + c.z * f, - c.z * (1 - f) + c.x * f + c.x * (1. - f) + c.y * f, + c.y * (1. - f) + c.z * f, + c.z * (1. - f) + c.x * f ); } @@ -82,40 +82,40 @@ vec3 shift3(vec3 c, float f) { } vec3 mix3(vec3 c1, vec3 c2, vec3 c3, float x) { - return istep(0.5, x) * mix(c1, c2, x * 2) - + step(0.5, x) * mix(c2, c3, x * 2 - 1); + return istep(.5, x) * mix(c1, c2, x * 2.) + + step(.5, x) * mix(c2, c3, x * 2. - 1.); } vec3 mix4(vec3 c1, vec3 c2, vec3 c3, vec3 c4, float x) { - return istep(0.333, x) * mix(c1, c2, x * 3) - + step(0.333, x) * istep(0.667, x) * mix(c2, c3, x * 3 - 1) - + step(0.667, x) * mix(c3, c4, x * 3 - 2); + return istep(.333, x) * mix(c1, c2, x * 3.) + + step(.333, x) * istep(.667, x) * mix(c2, c3, x * 3. - 1.) + + step(.667, x) * mix(c3, c4, x * 3. - 2.); ; } vec3 mix5(vec3 c1, vec3 c2, vec3 c3, vec3 c4, vec3 c5, float x) { - return istep(0.25, x) * mix(c1, c2, x * 4) - + step(0.25, x) * istep(0.5, x) * mix(c2, c3, x * 4 - 1) - + step(0.5, x) * istep(0.75, x) * mix(c3, c4, x * 4 - 2) - + step(0.75, x) * mix(c4, c5, x * 4 - 3); + return istep(.25, x) * mix(c1, c2, x * 4.) + + step(.25, x) * istep(.5, x) * mix(c2, c3, x * 4. - 1.) + + step(.5, x) * istep(.75, x) * mix(c3, c4, x * 4. - 2.) + + step(.75, x) * mix(c4, c5, x * 4. - 3.); } vec3 mix6(vec3 c1, vec3 c2, vec3 c3, vec3 c4, vec3 c5, vec3 c6, float x) { - return istep(0.2, x) * mix(c1, c2, x * 5) - + step(0.2, x) * istep(0.4, x) * mix(c2, c3, x * 5 - 1) - + step(0.4, x) * istep(0.6, x) * mix(c3, c4, x * 5 - 2) - + step(0.6, x) * istep(0.8, x) * mix(c4, c5, x * 5 - 3) - + step(0.8, x) * mix(c5, c6, x * 5 - 4); + return istep(.2, x) * mix(c1, c2, x * 5.) + + 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(.6, x) * istep(.8, x) * mix(c4, c5, x * 5. - 3.) + + step(.8, x) * mix(c5, c6, x * 5. - 4.); } float mean(vec3 v) { - return v.x * 0.3333 + v.y * 0.3333 + v.z * 0.3333; + return v.x * .3333 + v.y * .3333 + v.z * .3333; } float mean(vec4 v) { - return v.x * 0.3333 + v.y * 0.3333 + v.z * 0.3333; + return v.x * .3333 + v.y * .3333 + v.z * .3333; } // OTHER @@ -130,13 +130,13 @@ mat2 rot(float angle) { // EFFECTS vec2 lens(vec2 uv, float limit, float power) { - return uv * (1 + limit + length(uv * power)); + return uv * (1. + limit + length(uv * power)); } vec2 kal(vec2 uv, float n) { - float t = atan(uv.y, uv.x) + PI * 0.5; - float q = 3.0 / (2.0 * PI); - t = abs(mod(t + PI / (n), 2 * PI / n) - PI / (n)); + float t = atan(uv.y, uv.x) + PI * .5; + float q = .4774648; // 3. / (2. * PI); + t = abs(mod(t + PI / n, 2. * PI / n) - PI / n); return length(uv) * vec2( cos(t), sin(t) @@ -144,8 +144,8 @@ vec2 kal(vec2 uv, float n) { } vec2 kal2(vec2 uv, float n) { - float t = atan(uv.y, uv.x) + PI * 0.5; - float t2 = abs(mod(t + PI / n, 2 * PI / n) - PI / n); + float t = atan(uv.y, uv.x) + PI * .5; + float t2 = abs(mod(t + PI / n, 2. * PI / n) - PI / n); return length(uv) * vec2( cos(t2), sin(t2) @@ -156,27 +156,27 @@ vec2 kal2(vec2 uv, float n) { float noise(vec2 n) { - const vec2 d = vec2(0, 1); + const vec2 d = vec2(0., 1.); vec2 b = floor(n); vec2 f = fract(n); - f *= f * (3 - 2 * f); + f *= f * (3. - 2. * f); return mix(mix(rand(b), rand(b + d.yx), f.x), mix(rand(b + d.xy), rand(b + d.yy), f.x), f.y); } float noise_f(vec2 n, int f) { - float o = noise(n) / 2; - o += mix(o, noise(n * 2), f > 1 ? 1 : 0) / 4; - o += mix(o, noise(n * 4), f > 2 ? 1 : 0) / 8; - o += mix(o, noise(n * 8), f > 3 ? 1 : 0) / 16; - o += mix(o, noise(n * 16), f > 4 ? 1 : 0) / 32; + float o = noise(n) * .5; + o += mix(o, noise(n * 2.), f > 1. ? 1. : 0.) * .25; + o += mix(o, noise(n * 4.), f > 2. ? 1. : 0.) * .125; + o += mix(o, noise(n * 8.), f > 3. ? 1. : 0.) * .0625; + o += mix(o, noise(n * 16.), f > 4. ? 1. : 0.) * .03125; return o; } // VORONOI float v_index(vec2 uv) { - return floor(uv.x) + floor(uv.y) * 45; + return floor(uv.x) + floor(uv.y) * 45.; } vec2 v_pos(float i, int seed, float time) { @@ -184,10 +184,10 @@ vec2 v_pos(float i, int seed, float time) { float iTimeV = time - iTimeId; float x0 = rand(i + seed + iTimeId); - float y0 = rand(i + seed + 10 + iTimeId); + float y0 = rand(i + seed + 10. + iTimeId); - float x1 = rand(i + seed + iTimeId + 1); - float y1 = rand(i + seed + 10 + iTimeId + 1); + float x1 = rand(i + seed + iTimeId + 1.); + float y1 = rand(i + seed + 10. + iTimeId + 1.); return vec2( mix(x0, x1, ease(ease(iTimeV))), @@ -196,12 +196,13 @@ vec2 v_pos(float i, int seed, float time) { } vec4 voronoi(vec2 uv, float dist, int seed, float time) { - vec4 o = vec4(0, 0, 2, 0); - vec4 t = vec4(0, 0, 2, 0); + vec4 o = vec4(0., 0., 2., 0.); + vec4 t = vec4(0., 0., 2., 0.); float d, i; vec2 uv2, p; - for (int dx = -1; dx <= 1; dx++) { - for (int dy = -1; dy <= 1; dy++) { + int dx, dy; + for (dx = -1; dx <= 1; dx++) { + for (dy = -1; dy <= 1; dy++) { uv2 = vec2(floor(uv.x) + dx, floor(uv.y) + dy); i = v_index(uv2); p = uv2 + v_pos(i, seed, time) * dist; @@ -224,21 +225,21 @@ float circle(vec2 uv, vec2 c, float size) { } float h_circle(vec2 uv, vec2 c, float size, float k) { - return circle(uv, c, size + k * 0.5) - circle(uv, c, size - k * 0.5); + return circle(uv, c, size + k * .5) - circle(uv, c, size - k * .5); } float stripe(float x, float k1, float k2) { - return k2 > k1 ? (1 - step(x, k1)) * (step(x, k2)) : ((1 - step(x, k2)) * (step(x, k1))); + return k2 > k1 ? (1. - step(x, k1)) * (step(x, k2)) : ((1. - step(x, k2)) * (step(x, k1))); } float capsule(vec2 uv, float r, float d, float a) { uv *= rot(a); float f1 = step(uv.x, r) * step(-uv.x, r) * step(uv.y, d - r) * step(-uv.y, d - r); - float f2 = step(length(uv - vec2(0, d - r)), r); - float f3 = step(length(uv + vec2(0, d - r)), r); - return min(1, f1 + f2 + f3); + float f2 = step(length(uv - vec2(0., d - r)), r); + float f3 = step(length(uv + vec2(0., d - r)), r); + return min(1., f1 + f2 + f3); } float rect(vec2 uv, vec2 c, vec2 size) { @@ -247,7 +248,7 @@ float rect(vec2 uv, vec2 c, vec2 size) { } float h_rect(vec2 uv, vec2 c, vec2 size, float k) { - return rect(uv, c, size + k * 0.5) - rect(uv, c, size - k * 0.5); + return rect(uv, c, size + k * .5) - rect(uv, c, size - k * .5); } float line(vec2 uv, vec2 p1, vec2 p2, float thick) { @@ -261,33 +262,27 @@ float line(vec2 uv, vec2 p1, vec2 p2, float thick) { uv.y / p.y ); - return step(k.x, thick * 0.5) - * step(-k.x, thick * 0.5) - * step(k.y, 1) - * (1 - step(k.y, 0)); + return step(k.x, thick * .5) + * step(-k.x, thick * .5) + * step(k.y, 1.) + * (1. - step(k.y, 0.)); } else { k = vec2( uv.x / p.x, uv.y - p.y * uv.x / p.x ); - return step(k.y, thick * 0.5) - * step(-k.y, thick * 0.5) - * step(k.x, 1) - * (1 - step(k.x, 0)); + return step(k.y, thick * .5) + * step(-k.y, thick * .5) + * step(k.x, 1.) + * (1. - step(k.x, 0.)); } } -const mat2x2 ISOMETRIC_MATRIX = { - { - 0.5, - 1 - }, - { - 0.5, - -1 - } - }; +const mat2x2 ISOMETRIC_MATRIX = mat2x2( + .5, 1., + .5, -1. + ); vec2 iso(vec2 p) { return p * ISOMETRIC_MATRIX; @@ -308,14 +303,14 @@ vec2 iso(vec3 uv) { vec4 reframe(sampler2D tex, vec2 uv) { - uv = uv * vec2(iResolution.y / iResolution.x, 1) + .5; + uv = uv * vec2(iResolution.y / iResolution.x, 1.) + .5; uv = saw(uv); return texture(tex, uv); } vec4 reframe_b(sampler2D tex, vec2 uv) { - uv = uv * vec2(iResolution.y / iResolution.x, 1) + .5; + uv = uv * vec2(iResolution.y / iResolution.x, 1.) + .5; return texture(tex, uv); } @@ -323,11 +318,11 @@ vec4 kernel(sampler2D tex, vec2 uv, mat3x3 k, float spm) { int x, y; vec2 offset; - vec4 sum = vec4(0); + vec4 sum = vec4(0.); for (y = -1; y <= 1; ++y) { for (x = -1; x <= 1; ++x) { 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); } } @@ -339,7 +334,7 @@ vec4 kernel(sampler2D tex, vec2 uv, mat3x3 k, float spm) float gaussian_weight(float x, float sigma) { - return exp(-(x * x) / (2.0 * sigma * sigma)); + return exp(-(x * x) / (2. * sigma * sigma)); } vec4 gauss(sampler2D tex, vec2 uv, const int kernel_size, float spm, float sigma, float bloom) @@ -347,8 +342,8 @@ vec4 gauss(sampler2D tex, vec2 uv, const int kernel_size, float spm, float sigma int x, y; vec2 offset; float w; - vec4 sum = vec4(0); - float weight_sum = 0; + vec4 sum = vec4(0.); + float weight_sum = 0.; for (y = -kernel_size; y <= kernel_size; ++y) { for (x = -kernel_size; x <= kernel_size; ++x) { offset = vec2(x, y) * spm; @@ -362,17 +357,17 @@ vec4 gauss(sampler2D tex, vec2 uv, const int kernel_size, float spm, float sigma vec4 gauss(sampler2D tex, vec2 uv, const int kernel_size, float spm, float sigma) { - return gauss(tex, uv, kernel_size, spm, sigma, 1.0); + return gauss(tex, uv, kernel_size, spm, sigma, 1.); } vec4 gauss(sampler2D tex, vec2 uv, const int kernel_size, float spm) { - return gauss(tex, uv, kernel_size, spm, 2.0); + return gauss(tex, uv, kernel_size, spm, 2.); } vec4 gauss(sampler2D tex, vec2 uv, const int kernel_size) { - return gauss(tex, uv, kernel_size, 1 / max(iResolution.x, iResolution.y)); + return gauss(tex, uv, kernel_size, 1. / max(iResolution.x, iResolution.y)); } vec4 gauss(sampler2D tex, vec2 uv) @@ -383,23 +378,23 @@ vec4 gauss(sampler2D tex, vec2 uv) float dither(vec2 uv, float x) { bool o = false; - o = o || x * 16 >= 1 && floor(mod(uv.x, 4)) == 0 && floor(mod(uv.y, 4)) == 0; - o = o || x * 16 >= 2 && floor(mod(uv.x, 4)) == 2 && floor(mod(uv.y, 4)) == 2; - o = o || x * 16 >= 3 && floor(mod(uv.x, 4)) == 0 && floor(mod(uv.y, 4)) == 2; - o = o || x * 16 >= 4 && floor(mod(uv.x, 4)) == 2 && floor(mod(uv.y, 4)) == 0; - o = o || x * 16 >= 5 && floor(mod(uv.x, 4)) == 1 && floor(mod(uv.y, 4)) == 1; - o = o || x * 16 >= 6 && floor(mod(uv.x, 4)) == 3 && floor(mod(uv.y, 4)) == 3; - o = o || x * 16 >= 7 && floor(mod(uv.x, 4)) == 1 && floor(mod(uv.y, 4)) == 3; - o = o || x * 16 >= 8 && floor(mod(uv.x, 4)) == 3 && floor(mod(uv.y, 4)) == 1; - o = o || x * 16 >= 9 && floor(mod(uv.x, 4)) == 1 && floor(mod(uv.y, 4)) == 0; - o = o || x * 16 >= 10 && floor(mod(uv.x, 4)) == 3 && floor(mod(uv.y, 4)) == 2; - o = o || x * 16 >= 11 && floor(mod(uv.x, 4)) == 1 && floor(mod(uv.y, 4)) == 2; - o = o || x * 16 >= 12 && floor(mod(uv.x, 4)) == 3 && floor(mod(uv.y, 4)) == 0; - o = o || x * 16 >= 13 && floor(mod(uv.x, 4)) == 0 && floor(mod(uv.y, 4)) == 1; - o = o || x * 16 >= 14 && floor(mod(uv.x, 4)) == 2 && floor(mod(uv.y, 4)) == 3; - o = o || x * 16 >= 15 && floor(mod(uv.x, 4)) == 0 && floor(mod(uv.y, 4)) == 3; - o = o || x * 16 >= 16 && floor(mod(uv.x, 4)) == 2 && floor(mod(uv.y, 4)) == 1; - return o ? 1 : 0; + o = o || x * 16. >= 1. && floor(mod(uv.x, 4.)) == 0. && floor(mod(uv.y, 4.)) == 0.; + o = o || x * 16. >= 2. && floor(mod(uv.x, 4.)) == 2. && floor(mod(uv.y, 4.)) == 2.; + o = o || x * 16. >= 3. && floor(mod(uv.x, 4.)) == 0. && floor(mod(uv.y, 4.)) == 2.; + o = o || x * 16. >= 4. && floor(mod(uv.x, 4.)) == 2. && floor(mod(uv.y, 4.)) == 0.; + o = o || x * 16. >= 5. && floor(mod(uv.x, 4.)) == 1. && floor(mod(uv.y, 4.)) == 1.; + o = o || x * 16. >= 6. && floor(mod(uv.x, 4.)) == 3. && floor(mod(uv.y, 4.)) == 3.; + o = o || x * 16. >= 7. && floor(mod(uv.x, 4.)) == 1. && floor(mod(uv.y, 4.)) == 3.; + o = o || x * 16. >= 8. && floor(mod(uv.x, 4.)) == 3. && floor(mod(uv.y, 4.)) == 1.; + o = o || x * 16. >= 9. && floor(mod(uv.x, 4.)) == 1. && floor(mod(uv.y, 4.)) == 0.; + o = o || x * 16. >= 10. && floor(mod(uv.x, 4.)) == 3. && floor(mod(uv.y, 4.)) == 2.; + o = o || x * 16. >= 11. && floor(mod(uv.x, 4.)) == 1. && floor(mod(uv.y, 4.)) == 2.; + o = o || x * 16. >= 12. && floor(mod(uv.x, 4.)) == 3. && floor(mod(uv.y, 4.)) == 0.; + o = o || x * 16. >= 13. && floor(mod(uv.x, 4.)) == 0. && floor(mod(uv.y, 4.)) == 1.; + o = o || x * 16. >= 14. && floor(mod(uv.x, 4.)) == 2. && floor(mod(uv.y, 4.)) == 3.; + o = o || x * 16. >= 15. && floor(mod(uv.x, 4.)) == 0. && floor(mod(uv.y, 4.)) == 3.; + o = o || x * 16. >= 16. && floor(mod(uv.x, 4.)) == 2. && floor(mod(uv.y, 4.)) == 1.; + return o ? 1. : 0.; } #endif diff --git a/default/inc_magic.glsl b/default/inc_magic.glsl index bf08bab..1d8bf1c 100644 --- a/default/inc_magic.glsl +++ b/default/inc_magic.glsl @@ -3,75 +3,75 @@ #ifndef 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( - mix(F.x, randTime(i + 1), min(1, B.z)), - mix(F.y, randTime(i + 2), min(1, B.z)) + mix(f.x, randTime(i + 1.), min(1., b.z)), + mix(f.y, randTime(i + 2.), min(1., b.z)) ); } 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( - mix(B.x, step(0.2, randTime(i + 3)), min(1, B.z)), - mix(B.y, step(0.5, randTime(i + 4)), min(1, B.z)), - 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)), + min(1., b.z) ); } 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) { - 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); - vec3 b = magic_b(B, i); + vec2 mf = magic_f(f, b, i); + vec3 mb = magic_b(b, i); - return mix(0, f.x * mix(1 - modTime(f.y), cosTime(f.y) * 0.5 + 0.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); - vec3 b = magic_b(B, i); + vec2 mf = magic_f(f, b, i); + vec3 mb = magic_b(b, i); - return f.x * mix(1 - modTime(f.y), cosTime(f.y) * 0.5 + 0.5, b.y); + return mf.x * mix(1. - modTime(mf.y), cosTime(mf.y) * .5 + .5, mb.y); } 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); - vec3 b = magic_b(B, i); + vec2 mf = magic_f(f, 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) { - return magic_reverse(vec2(0), vec3(0, 0, 1), i); + return magic_reverse(vec2(0.), vec3(0., 0., 1.), i); } #endif diff --git a/default/inc_map.glsl b/default/inc_map.glsl index cb5e385..86832bc 100644 --- a/default/inc_map.glsl +++ b/default/inc_map.glsl @@ -6,7 +6,7 @@ vec2 project_4p(vec2 uv, vec2 p1, vec2 p2, vec2 p3, vec2 p4) { float k2 = (p3.y - p1.y) / (p2.y - p3.y); float a = (p4.x - p3.x + k1 * p3.x - k1 * p2.x) / (p1.x - p3.x - k2 * p3.x + k2 * p2.x); float b = k1 + a * k2; - float c = 1 - a - b; + float c = 1. - a - b; // https://math.stackexchange.com/questions/296794/finding-the-transform-matrix-from-4-projected-points-with-javascript/339033#339033 mat3 projection_a = mat3( a * p1.x, a * p1.y, a, @@ -15,16 +15,16 @@ vec2 project_4p(vec2 uv, vec2 p1, vec2 p2, vec2 p3, vec2 p4) { ); mat3 projection_a_prime = inverse(projection_a); mat3 projection_b = mat3( - 0, 0, -1, - 1, 0, 1, - 0, 1, 1 + 0., 0., -1., + 1., 0., 1., + 0., 1., 1. ); - vec3 tmp = projection_b * projection_a_prime * vec3(uv, 1); + vec3 tmp = projection_b * projection_a_prime * vec3(uv, 1.); return tmp.xy / tmp.z; } float base_mask(vec2 uv) { - return step(0, uv.x) * step(-1, -uv.x) * step(0, uv.y) * step(-1, -uv.y); + return step(0., uv.x) * step(-1., -uv.x) * step(0., uv.y) * step(-1., -uv.y); } #endif diff --git a/default/inc_rand.glsl b/default/inc_rand.glsl index 138b2f9..ea5b708 100644 --- a/default/inc_rand.glsl +++ b/default/inc_rand.glsl @@ -2,13 +2,13 @@ #define INC_RAND float rand(float seed){ - float v=pow(abs(seed),6./7.); - v*=sin(v)+1.; + float v = pow(abs(seed), .8571429); // 6. / 7. + v *= sin(v) + 1.; return fract(v); } float rand(vec2 n){ - return rand(n.x * 1234 + n.y * 9876); + return rand(n.x * 1234. + n.y * 9876.); } #endif diff --git a/default/inc_sentences.glsl b/default/inc_sentences.glsl index 7fdb0eb..e24b5ad 100644 --- a/default/inc_sentences.glsl +++ b/default/inc_sentences.glsl @@ -2,28 +2,29 @@ #define INC_SENTENCES #define SENTENCE_COUNT 17 +#define SENTENCE_MAX_LENGTH 20 -const int sentences[SENTENCE_COUNT][20] = { - {0x66, 0x6F, 0x72, 0x67, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x46, 0x4F, 0x52, 0x47, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x46, 0x2E, 0x4F, 0x2E, 0x52, 0x2E, 0x47, 0x2E, 0x45, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x46, 0x75, 0x73, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x4F, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x52, 0x65, 0x61, 0x6C, 0x2D, 0x74, 0x69, 0x6D, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x47, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x45, 0x76, 0x65, 0x72, 0x79, 0x74, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x79, 0x6F, 0x75, 0x20, 0x73, 0x65, 0x65, 0x00, 0x00}, - {0x50, 0x69, 0x78, 0x65, 0x6C, 0x20, 0x62, 0x79, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x4C, 0x69, 0x76, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x47, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x43, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x6C, 0x65, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x4B, 0x6C, 0x65, 0xE3, 0x65, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x43, 0x6F, 0x64, 0x65, 0x20, 0x61, 0x73, 0x20, 0x61, 0x72, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x41, 0x72, 0x74, 0x20, 0x61, 0x73, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, -}; +const int sentences[] = int[SENTENCE_COUNT * SENTENCE_MAX_LENGTH]( + 0x66, 0x6F, 0x72, 0x67, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x4F, 0x52, 0x47, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x2E, 0x4F, 0x2E, 0x52, 0x2E, 0x47, 0x2E, 0x45, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x75, 0x73, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4F, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x52, 0x65, 0x61, 0x6C, 0x2D, 0x74, 0x69, 0x6D, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x45, 0x76, 0x65, 0x72, 0x79, 0x74, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x79, 0x6F, 0x75, 0x20, 0x73, 0x65, 0x65, 0x00, 0x00, + 0x50, 0x69, 0x78, 0x65, 0x6C, 0x20, 0x62, 0x79, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4C, 0x69, 0x76, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x43, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x6C, 0x65, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4B, 0x6C, 0x65, 0xE3, 0x65, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x43, 0x6F, 0x64, 0x65, 0x20, 0x61, 0x73, 0x20, 0x61, 0x72, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x72, 0x74, 0x20, 0x61, 0x73, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +); -const int lengths[SENTENCE_COUNT] = { +const int lengths[] = int[SENTENCE_COUNT]( 5, 5, 10, 6, 2, 9, 10, 7, 18, 14, 4, 9, 10, 1, 6, 11, 11 -}; -#endif +); +#endif \ No newline at end of file diff --git a/default/inc_src.glsl b/default/inc_src.glsl index 3f267dd..690035d 100644 --- a/default/inc_src.glsl +++ b/default/inc_src.glsl @@ -338,8 +338,6 @@ subroutine ( src_stage_sub ) vec4 src_7(vec2 vUV, int seed, vec3 b1, vec2 f1, ve // SRC 8 : sentences -#include inc_sentences.glsl - subroutine ( src_stage_sub ) vec4 src_8(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) { // start @@ -363,7 +361,7 @@ subroutine ( src_stage_sub ) vec4 src_8(vec2 vUV, int seed, vec3 b1, vec2 f1, ve 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_20(uv2, vec2(-float(lengths[s]) * 0.5, 0), sentences[s]); + float f = write_sentence(uv2, vec2(-float(lengths[s]) * 0.5, 0), s); return vec4(f); } @@ -396,7 +394,7 @@ subroutine ( src_stage_sub ) vec4 src_9(vec2 vUV, int seed, vec3 b1, vec2 f1, ve 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_20(uv3, vec2(-slen * 0.5, 0), sentences[s]); + float f = write_sentence(uv3, vec2(-slen * 0.5, 0), s); f *= (1 - abs(floor(uv2.y) * 0.125)) * (1 - abs(floor(uv2.y) * 0.125)); diff --git a/default/inc_time.glsl b/default/inc_time.glsl index 0546a03..90b8514 100644 --- a/default/inc_time.glsl +++ b/default/inc_time.glsl @@ -21,33 +21,33 @@ float randTime(float seed){ float divider(float x) { - if (x < 0.1) return 0; - if (x < 0.2) return 0.125; - if (x < 0.3) return 0.25; - if (x < 0.4) return 0.5; - if (x < 0.6) return 1; - if (x < 0.8) return 2; - return 4; + if (x < .1) return 0.; + if (x < .2) return .125; + if (x < .3) return .25; + if (x < .4) return .5; + if (x < .6) return 1.; + if (x < .8) return 2.; + return 4.; } 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) { - return modTime(k, 1.0); + return modTime(k, 1.); } float sinTime(float k) { - return sin(modTime(k, 0.5) * 2 * PI); + return sin(modTime(k, .5) * 2. * PI); } float cosTime(float k) { - return cos(modTime(k, 0.5) * 2 * PI); + return cos(modTime(k, .5) * 2. * PI); } #endif diff --git a/default/inc_yuyv.glsl b/default/inc_yuyv.glsl index f42c3cd..5c367a2 100644 --- a/default/inc_yuyv.glsl +++ b/default/inc_yuyv.glsl @@ -4,41 +4,25 @@ const int YUYV_FOURCC = 1448695129; // https://en.wikipedia.org/wiki/Y%E2%80%B2UV -const mat3x3 yuyv_to_rgb_bt709 = { - { - 1, - 1, - 1 - }, - { - 0, - -0.21482, - 2.12798 - }, - { - 1.28033, - -0.38059, - 0 - } - }; +const mat3x3 yuyv_to_rgb_bt709 = mat3x3(1., 1., 1., 0., -.21482, 2.12798, 1.28033, -.38059, 0.); vec4 yuyvTex(sampler2D tex, vec2 vUV, int base_width) { - float w = base_width - 1; + float w = base_width - 1.; int x = int(vUV.x * w); int xU = x - x % 2; int xV = x - x % 2 + 1; - vec4 tU = texture(tex, vec2(xU / w, 1 - vUV.y)); - vec4 tV = texture(tex, vec2(xV / w, 1 - vUV.y)); + vec4 tU = texture(tex, vec2(xU / w, 1. - vUV.y)); + vec4 tV = texture(tex, vec2(xV / w, 1. - vUV.y)); vec3 yuv = vec3( - x % 2 == 0 ? tU.x : tV.x, - tU.y - 0.5, - tV.y - 0.5 + x % 2 == 0. ? tU.x : tV.x, + tU.y - .5, + tV.y - .5 ); - return vec4(yuyv_to_rgb_bt709 * yuv, 1.0); + return vec4(yuyv_to_rgb_bt709 * yuv, 1.); } #endif diff --git a/scripts/sentences.py b/scripts/sentences.py index b29dc80..49d82f1 100644 --- a/scripts/sentences.py +++ b/scripts/sentences.py @@ -6,6 +6,8 @@ TARGET_FILE = os.path.join( os.path.dirname(__file__), "..", "default", "inc_sentences.glsl" ) +SENTENCE_MAX_LENGTH = 20 + SENTENCES = [ "forge", "FORGE", @@ -37,25 +39,26 @@ def code(char: str) -> str: def convert(txt: str) -> str: out = [] - for i in range(20): + for i in range(SENTENCE_MAX_LENGTH): out += [code(txt[i]) if i < len(txt) else "0x00"] - return f"{{{', '.join(out)}}}" + return ', '.join(out) def main() -> None: with open(TARGET_FILE, mode="w") as file: file.write("#ifndef INC_SENTENCES\n") file.write("#define INC_SENTENCES\n\n") - file.write(f"#define SENTENCE_COUNT {len(SENTENCES)}\n\n") - file.write("const int sentences[SENTENCE_COUNT][20] = {\n") - for sentence in SENTENCES: - file.write(" " + convert(sentence) + "," + "\n") - file.write("};\n\n") - file.write("const int lengths[SENTENCE_COUNT] = {\n") + file.write(f"#define SENTENCE_COUNT {len(SENTENCES)}\n") + file.write(f"#define SENTENCE_MAX_LENGTH {SENTENCE_MAX_LENGTH}\n\n") + file.write("const int sentences[] = int[SENTENCE_COUNT * SENTENCE_MAX_LENGTH](\n") + for i, sentence in enumerate(SENTENCES): + file.write(" " + convert(sentence) + ("," if i < len(SENTENCES) - 1 else "") + "\n") + file.write(");\n\n") + file.write("const int lengths[] = int[SENTENCE_COUNT](\n") file.write( " " + ", ".join(str(len(sentence)) for sentence in SENTENCES) + "\n" ) - file.write("};\n") + file.write(");\n") file.write("#endif")