summaryrefslogtreecommitdiff
path: root/src/shaders
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-05-20 23:12:08 +0200
committerskal <pascal.massimino@gmail.com>2026-05-21 08:00:45 +0200
commitcca9db73a325b1da7492b18d7097c9235f91b688 (patch)
treeaa4cc36d0dae02e6c028e44a47e553eb69d3eae3 /src/shaders
parentca8acd5e7c0556bee7cb21f5ff280c5fd1f47801 (diff)
fix: audio & effects cleanup — dead code removal, simplifications
Diffstat (limited to 'src/shaders')
-rw-r--r--src/shaders/debug/debug_print.wgsl241
1 files changed, 44 insertions, 197 deletions
diff --git a/src/shaders/debug/debug_print.wgsl b/src/shaders/debug/debug_print.wgsl
index 7e6debe..386e7b5 100644
--- a/src/shaders/debug/debug_print.wgsl
+++ b/src/shaders/debug/debug_print.wgsl
@@ -14,205 +14,52 @@
const ink_color = vec4f(1.0, 1.0, 0.0, 1.0); // yellow
// Returns lit pixel (0 or 1) for ASCII code [0x20-0x7E], row r [0-7], col c [0-7].
-// Encoding: 2 u32s per glyph; hi covers rows 0-3, lo covers rows 4-7.
-// Within each u32, row r occupies bits [(3-r%4)*8+7 : (3-r%4)*8].
+// Encoding: 36 unique rows stored as a dictionary of 36 u8s.
+// Individual rows are 6-bit indices packed sequentially (760 rows * 6 bits = 4560 bits = 572 bytes + 1 sentinel).
fn _dbg_char(ascii: u32, r: u32, c: u32) -> u32 {
- let idx = (clamp(ascii, 0x20u, 0x7Eu) - 0x20u) * 2u;
- let data = array<u32, 190>(
- // 0x20 ' '
- 0x00000000u, 0x00000000u,
- // 0x21 '!'
- 0x18181818u, 0x00180000u,
- // 0x22 '"'
- 0x66660000u, 0x00000000u,
- // 0x23 '#'
- 0x36367F36u, 0x7F363600u,
- // 0x24 '$'
- 0x183E603Cu, 0x067C1800u,
- // 0x25 '%'
- 0x62660C18u, 0x30664600u,
- // 0x26 '&'
- 0x386C6876u, 0xDCCC7600u,
- // 0x27 "'"
- 0x18183000u, 0x00000000u,
- // 0x28 '('
- 0x0C183030u, 0x30180C00u,
- // 0x29 ')'
- 0x30180C0Cu, 0x0C183000u,
- // 0x2A '*'
- 0x00663CFFu, 0x3C660000u,
- // 0x2B '+'
- 0x0018187Eu, 0x18180000u,
- // 0x2C ','
- 0x00000000u, 0x00181830u,
- // 0x2D '-'
- 0x0000007Eu, 0x00000000u,
- // 0x2E '.'
- 0x00000000u, 0x00181800u,
- // 0x2F '/'
- 0x00060C18u, 0x30600000u,
- // 0x30 '0'
- 0x3C666E76u, 0x66663C00u,
- // 0x31 '1'
- 0x18381818u, 0x18187E00u,
- // 0x32 '2'
- 0x3C66060Cu, 0x18307E00u,
- // 0x33 '3'
- 0x3C66061Cu, 0x06663C00u,
- // 0x34 '4'
- 0x0C1C2C4Cu, 0x7E0C0C00u,
- // 0x35 '5'
- 0x7E607C06u, 0x06663C00u,
- // 0x36 '6'
- 0x1C30607Cu, 0x66663C00u,
- // 0x37 '7'
- 0x7E060C18u, 0x18181800u,
- // 0x38 '8'
- 0x3C66663Cu, 0x66663C00u,
- // 0x39 '9'
- 0x3C66663Eu, 0x060C3800u,
- // 0x3A ':'
- 0x00181800u, 0x00181800u,
- // 0x3B ';'
- 0x00181800u, 0x00181830u,
- // 0x3C '<'
- 0x0E183060u, 0x30180E00u,
- // 0x3D '='
- 0x00007E00u, 0x007E0000u,
- // 0x3E '>'
- 0x70180C06u, 0x0C187000u,
- // 0x3F '?'
- 0x3C66060Cu, 0x18001800u,
- // 0x40 '@'
- 0x3C666E6Au, 0x6E603C00u,
- // 0x41 'A'
- 0x183C6666u, 0x7E666600u,
- // 0x42 'B'
- 0x7C66667Cu, 0x66667C00u,
- // 0x43 'C'
- 0x3C666060u, 0x60663C00u,
- // 0x44 'D'
- 0x786C6666u, 0x666C7800u,
- // 0x45 'E'
- 0x7E60607Cu, 0x60607E00u,
- // 0x46 'F'
- 0x7E60607Cu, 0x60606000u,
- // 0x47 'G'
- 0x3C66606Eu, 0x66663C00u,
- // 0x48 'H'
- 0x6666667Eu, 0x66666600u,
- // 0x49 'I'
- 0x3C181818u, 0x18183C00u,
- // 0x4A 'J'
- 0x1E0C0C0Cu, 0x0C6C3800u,
- // 0x4B 'K'
- 0x666C7870u, 0x786C6600u,
- // 0x4C 'L'
- 0x60606060u, 0x60607E00u,
- // 0x4D 'M'
- 0xC6EEFED6u, 0xC6C6C600u,
- // 0x4E 'N'
- 0x66767E6Eu, 0x66666600u,
- // 0x4F 'O'
- 0x3C666666u, 0x66663C00u,
- // 0x50 'P'
- 0x7C66667Cu, 0x60606000u,
- // 0x51 'Q'
- 0x3C666666u, 0x663C0E00u,
- // 0x52 'R'
- 0x7C66667Cu, 0x786C6600u,
- // 0x53 'S'
- 0x3C66603Cu, 0x06663C00u,
- // 0x54 'T'
- 0x7E181818u, 0x18181800u,
- // 0x55 'U'
- 0x66666666u, 0x66663C00u,
- // 0x56 'V'
- 0x66666666u, 0x663C1800u,
- // 0x57 'W'
- 0xC6C6C6D6u, 0xFEEEC600u,
- // 0x58 'X'
- 0x66663C18u, 0x3C666600u,
- // 0x59 'Y'
- 0x6666663Cu, 0x18181800u,
- // 0x5A 'Z'
- 0x7E060C18u, 0x30607E00u,
- // 0x5B '['
- 0x3C303030u, 0x30303C00u,
- // 0x5C '\'
- 0x00603018u, 0x0C060000u,
- // 0x5D ']'
- 0x3C0C0C0Cu, 0x0C0C3C00u,
- // 0x5E '^'
- 0x10386CC6u, 0x00000000u,
- // 0x5F '_'
- 0x00000000u, 0x000000FFu,
- // 0x60 '`'
- 0x30180C00u, 0x00000000u,
- // 0x61 'a'
- 0x00003C06u, 0x3E663E00u,
- // 0x62 'b'
- 0x60607C66u, 0x66667C00u,
- // 0x63 'c'
- 0x00003C66u, 0x60663C00u,
- // 0x64 'd'
- 0x06063E66u, 0x66663E00u,
- // 0x65 'e'
- 0x00003C66u, 0x7E603C00u,
- // 0x66 'f'
- 0x0E18187Cu, 0x18181800u,
- // 0x67 'g'
- 0x00003E66u, 0x663E063Cu,
- // 0x68 'h'
- 0x60607C66u, 0x66666600u,
- // 0x69 'i'
- 0x18003818u, 0x18183C00u,
- // 0x6A 'j'
- 0x06000606u, 0x0606663Cu,
- // 0x6B 'k'
- 0x6060666Cu, 0x786C6600u,
- // 0x6C 'l'
- 0x38181818u, 0x18183C00u,
- // 0x6D 'm'
- 0x0000C6EEu, 0xFED6C600u,
- // 0x6E 'n'
- 0x00007C66u, 0x66666600u,
- // 0x6F 'o'
- 0x00003C66u, 0x66663C00u,
- // 0x70 'p'
- 0x00007C66u, 0x667C6060u,
- // 0x71 'q'
- 0x00003E66u, 0x663E0606u,
- // 0x72 'r'
- 0x00007C66u, 0x60606000u,
- // 0x73 's'
- 0x00003C60u, 0x3C063C00u,
- // 0x74 't'
- 0x18187E18u, 0x18180E00u,
- // 0x75 'u'
- 0x00006666u, 0x66663E00u,
- // 0x76 'v'
- 0x00006666u, 0x663C1800u,
- // 0x77 'w'
- 0x0000C6C6u, 0xD6FE6C00u,
- // 0x78 'x'
- 0x0000663Cu, 0x183C6600u,
- // 0x79 'y'
- 0x00006666u, 0x663E063Cu,
- // 0x7A 'z'
- 0x00007E0Cu, 0x18307E00u,
- // 0x7B '{'
- 0x0E181870u, 0x18180E00u,
- // 0x7C '|'
- 0x18181818u, 0x18181800u,
- // 0x7D '}'
- 0x7018180Eu, 0x18187000u,
- // 0x7E '~'
- 0x76DC0000u, 0x00000000u,
+ let clamp_ascii = clamp(ascii, 0x20u, 0x7Eu);
+ let global_row = (clamp_ascii - 0x20u) * 8u + r;
+ let start_bit = global_row * 6u;
+ let byte_idx = start_bit / 8u;
+ let bit_shift = start_bit % 8u;
+
+ let dict = array<u32, 9>(
+ 0x70306000u, 0x78381808u, 0x1C6C0C34u, 0x32627C3Cu, 0x16664606u, 0x0E763656u, 0x7E3E1E6Eu, 0x6B3363FEu,
+ 0xFF7F773Bu
+ );
+
+ let bitstream = array<u32, 145>(
+ 0x00000000u, 0x51450000u, 0x00014014u, 0x00000492u, 0xC28A0000u, 0x00A29C29u, 0x81310345u, 0x24910056u,
+ 0x00E48914u, 0xA061354Bu, 0x91450187u, 0x00000000u, 0x49249142u, 0x21490021u, 0x00914208u, 0x8C8CC480u,
+ 0x51400004u, 0x0001456Cu, 0x40000000u, 0x00002451u, 0x0000006Cu, 0x40000000u, 0x20400051u, 0x00040914u,
+ 0x9261648Cu, 0x52C500C4u, 0x01B14514u, 0x4508148Cu, 0x148C01B2u, 0x00C48118u, 0x9B3C8182u, 0xA41B0020u,
+ 0x00C48105u, 0x92690246u, 0x205B00C4u, 0x00514514u, 0x9231248Cu, 0x248C00C4u, 0x00B08135u, 0x40005140u,
+ 0x51400051u, 0x24514000u, 0x49409143u, 0xB0000031u, 0x0006C001u, 0x42042157u, 0x148C0171u, 0x00500508u,
+ 0x1651648Cu, 0x230500C4u, 0x01249B49u, 0x9269249Au, 0x048C01A4u, 0x00C49041u, 0x52492559u, 0x041B0195u,
+ 0x01B41069u, 0x1069041Bu, 0x048C0104u, 0x00C49259u, 0x926D2492u, 0x514C0124u, 0x00C14514u, 0x42082087u,
+ 0x955200B5u, 0x0125595Du, 0x10410410u, 0x285D01B4u, 0x01D75D7Eu, 0x9259B612u, 0x248C0124u, 0x00C49249u,
+ 0x1069249Au, 0x248C0104u, 0x00331249u, 0x5969249Au, 0x048C0125u, 0x00C48131u, 0x4514515Bu, 0x24920051u,
+ 0x00C49249u, 0x12492492u, 0xD75D0053u, 0x01D8627Du, 0x8C14C492u, 0x24920124u, 0x00514531u, 0x0914205Bu,
+ 0x924C01B4u, 0x00C24924u, 0x42149400u, 0x208C0000u, 0x00C08208u, 0x007552C4u, 0x00000000u, 0x8C000000u,
+ 0x00002149u, 0xC0000000u, 0x00D48D04u, 0x9249A410u, 0xC00001A4u, 0x00C49048u, 0x9248D041u, 0xC00000D4u,
+ 0x00C41B48u, 0x45685143u, 0xD0000051u, 0x30135248u, 0x9249A410u, 0xB0050124u, 0x00C14514u, 0x41041001u,
+ 0x24103120u, 0x01255955u, 0x4514514Bu, 0xD00000C1u, 0x01D7E285u, 0x9249A000u, 0xC0000124u, 0x00C49248u,
+ 0x9249A000u, 0xD0004106u, 0x04135248u, 0x1049A000u, 0xC0000104u, 0x00C04C40u, 0x4515B145u, 0x20000031u,
+ 0x00D49249u, 0x12492000u, 0xD0000053u, 0x01589F75u, 0x05312000u, 0x20000123u, 0x30135249u, 0x4509B000u,
+ 0x514301B2u, 0x0031455Cu, 0x45145145u, 0x51570051u, 0x0171450Cu, 0x00000818u, 0x00000000u, 0x00000000u,
+ 0x00000000u
);
- let word = data[idx + (r / 4u)];
- let shift = (3u - (r % 4u)) * 8u + (7u - c);
- return (word >> shift) & 1u;
+
+ let word_idx = byte_idx / 4u;
+ let shift = (byte_idx % 4u) * 8u;
+ let shift2 = 32u - (shift | select(0u, 16u, shift == 0u));
+ let w = ((bitstream[word_idx] >> shift) | (bitstream[word_idx + 1u] << shift2)) & 0xFFFFu;
+
+ let row_idx = (w >> bit_shift) & 0x3Fu;
+
+ let row_byte = (dict[row_idx / 4u] >> ((row_idx % 4u) * 8u)) & 0xFFu;
+
+ return (row_byte >> c) & 1u;
}
// Overlays a f32 value onto col, returning updated RGB.