From bba4c0e8f593fe1a0f37b9ae67211c23b3e56a1f Mon Sep 17 00:00:00 2001 From: klemek Date: Fri, 28 Aug 2026 20:12:44 +0200 Subject: [PATCH] use symlinks --- forge-steel | 2 +- project/inc_cp437.glsl | 392 +----------------------------------- project/inc_functions.glsl | 401 +------------------------------------ project/inc_fx.glsl | 3 +- project/inc_magic.glsl | 78 +------- project/inc_rand.glsl | 15 +- project/inc_res.glsl | 8 +- project/inc_sentences.glsl | 16 -- project/inc_src.glsl | 5 +- project/inc_time.glsl | 54 +---- 10 files changed, 9 insertions(+), 965 deletions(-) mode change 100644 => 120000 project/inc_cp437.glsl mode change 100644 => 120000 project/inc_functions.glsl mode change 100644 => 120000 project/inc_magic.glsl mode change 100644 => 120000 project/inc_rand.glsl mode change 100644 => 120000 project/inc_res.glsl mode change 100644 => 120000 project/inc_time.glsl diff --git a/forge-steel b/forge-steel index 69f98e5..674dc50 160000 --- a/forge-steel +++ b/forge-steel @@ -1 +1 @@ -Subproject commit 69f98e536ff60a8ca8ff6c174d7eac938e038a3e +Subproject commit 674dc50ff7dc6613785b19c2cefd21b5cdb2073d diff --git a/project/inc_cp437.glsl b/project/inc_cp437.glsl deleted file mode 100644 index ece0e9c..0000000 --- a/project/inc_cp437.glsl +++ /dev/null @@ -1,391 +0,0 @@ -#ifndef INC_CP437 -#define INC_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 - 0xFFF6, 0x7773, 0x08CE, 0x0013, // 0x03, ETX, HEART - 0xFEC8, 0x7310, 0x08CE, 0x0013, // 0x04, EOT, DIAMOND - 0xFCEC, 0x7131, 0xECEF, 0x3137, // 0x05, ENQ, CLUB - 0xEC88, 0x3100, 0xECEF, 0x3137, // 0x06, ACK, SPADE - 0xC800, 0x3100, 0x008C, 0x0013, // 0x07, BEL, DOT - 0x37FF, 0xCEFF, 0xFF73, 0xFFEC, // 0x08, BS, INVERT DOT - 0x26C0, 0x4630, 0x0C62, 0x0364, // 0x09, HT, CIRCLE - 0xD93F, 0xB9CF, 0xF39D, 0xFC9B, // 0x0A, LF, INVERT CIRCLE - 0xE000, 0xBFEF, 0xE333, 0x1333, // 0x0B, VT, MALE - 0x666C, 0x6663, 0x8E8C, 0x1713, // 0x0C, FF, FEMALE - 0xCCCC, 0x0FCF, 0x7FEC, 0x0000, // 0x0D, CR, NOTE - 0x6E6E, 0xCFCF, 0x3766, 0x06EC, // 0x0E, SO, DOUBLE NOTE - 0x7CA9, 0xE359, 0x9AC7, 0x953E, // 0x0F, SI, SUN - 0xFF71, 0x7100, 0x017F, 0x0001, // 0x10, DLE, RIGHT TRIANGLE - 0xFC00, 0x7774, 0x000C, 0x0477, // 0x11, DC1, LEFT TRIANGLE - 0x8EC8, 0x1731, 0x8CE8, 0x1371, // 0x12, DC2, ARROW UP DOWN - 0x6666, 0x6666, 0x0606, 0x0606, // 0x13, DC3, DOUBLE EXCLAMATION - 0xEBBE, 0xDDDF, 0x0888, 0x0DDD, // 0x14, DC4, PARAGRAPH - 0x6C6C, 0x31C7, 0xE3C6, 0x1313, // 0x15, NAK, ? - 0x0000, 0x0000, 0x0EEE, 0x0777, // 0x16, SYN, HALF SQUARE BOTTOM - 0x8EC8, 0x1731, 0xF8CE, 0xF137, // 0x17, ETB, ARROW UP DOWN UNDERLINED - 0x8EC8, 0x1731, 0x0888, 0x0111, // 0x18, CAN, ARROW UP - 0x8888, 0x1111, 0x08CE, 0x0137, // 0x19, EM, ARROW DOWN - 0xF080, 0x7310, 0x0080, 0x0013, // 0x1A, SUB, ARROW RIGHT - 0xF6C0, 0x7000, 0x00C6, 0x0000, // 0x1B, ESC, ARROW LEFT - 0x3300, 0x0000, 0x00F3, 0x0070, // 0x1C, FS, ? - 0xF640, 0xF620, 0x0046, 0x0026, // 0x1D, GS, ARROW LEFT RIGHT - 0xEC80, 0x7310, 0x00FF, 0x00FF, // 0x1E, RS, TRIANGLE UP - 0xEFF0, 0x7FF0, 0x008C, 0x0013, // 0x1F, US, TRIANGLE DOWN - 0x0000, 0x0000, 0x0000, 0x0000, // 0x20, SPACE - 0xCEEC, 0x0110, 0x0C0C, 0x0000, // 0x21, ! - 0x0666, 0x0333, 0x0000, 0x0000, // 0x22, " - 0x6F66, 0x3733, 0x066F, 0x0337, // 0x23, # - 0xE3EC, 0x1030, 0x0CF0, 0x0013, // 0x24, $ - 0x8330, 0x1360, 0x036C, 0x0660, // 0x25, % - 0xEC6C, 0x6131, 0x0E3B, 0x0633, // 0x26, & - 0x0366, 0x0000, 0x0000, 0x0000, // 0x27, ' - 0x66C8, 0x0001, 0x08C6, 0x0100, // 0x28, ( - 0x88C6, 0x1100, 0x06C8, 0x0001, // 0x29, ) - 0xFC60, 0xF360, 0x006C, 0x0063, // 0x2A, * - 0xFCC0, 0x3000, 0x00CC, 0x0000, // 0x2B, + - 0x0000, 0x0000, 0x6CC0, 0x0000, // 0x2C, , - 0xF000, 0x3000, 0x0000, 0x0000, // 0x2D, - - 0x0000, 0x0000, 0x0CC0, 0x0000, // 0x2E, . - 0xC800, 0x0136, 0x0136, 0x0000, // 0x2F, / - 0xB33E, 0x7763, 0x0E7F, 0x0366, // 0x30, 0 - 0xCCEC, 0x0000, 0x0FCC, 0x0300, // 0x31, 1 - 0xC03E, 0x1331, 0x0F36, 0x0330, // 0x32, 2 - 0xC03E, 0x1331, 0x0E30, 0x0133, // 0x33, 3 - 0x36C8, 0x3333, 0x080F, 0x0737, // 0x34, 4 - 0x0F3F, 0x3103, 0x0E30, 0x0133, // 0x35, 5 - 0xF36C, 0x1001, 0x0E33, 0x0133, // 0x36, 6 - 0x803F, 0x1333, 0x0CCC, 0x0000, // 0x37, 7 - 0xE33E, 0x1331, 0x0E33, 0x0133, // 0x38, 8 - 0xE33E, 0x3331, 0x0E80, 0x0013, // 0x39, 9 - 0x0CC0, 0x0000, 0x0CC0, 0x0000, // 0x3A, : - 0x0CC0, 0x0000, 0x6CC0, 0x0000, // 0x3B, ; - 0x36C8, 0x0001, 0x08C6, 0x0100, // 0x3C, < - 0x0F00, 0x0300, 0x00F0, 0x0030, // 0x3D, = - 0x08C6, 0x3100, 0x06C8, 0x0001, // 0x3E, > - 0x803E, 0x1331, 0x0C0C, 0x0000, // 0x3F, ? - 0xBB3E, 0x7763, 0x0E3B, 0x0107, // 0x40, @ - 0x33EC, 0x3310, 0x033F, 0x0333, // 0x41, A - 0xE66F, 0x3663, 0x0F66, 0x0366, // 0x42, B - 0x336C, 0x0063, 0x0C63, 0x0360, // 0x43, C - 0x666F, 0x6631, 0x0F66, 0x0136, // 0x44, D - 0xE66F, 0x1147, 0x0F66, 0x0741, // 0x45, E - 0xE66F, 0x1147, 0x0F66, 0x0001, // 0x46, F - 0x336C, 0x0063, 0x0C63, 0x0767, // 0x47, G - 0xF333, 0x3333, 0x0333, 0x0333, // 0x48, H - 0xCCCE, 0x0001, 0x0ECC, 0x0100, // 0x49, I - 0x0008, 0x3337, 0x0E33, 0x0133, // 0x4A, J - 0xE667, 0x1366, 0x0766, 0x0663, // 0x4B, K - 0x666F, 0x0000, 0x0F66, 0x0764, // 0x4C, L - 0xFF73, 0x7776, 0x033B, 0x0666, // 0x4D, M - 0xBF73, 0x7666, 0x0333, 0x0667, // 0x4E, N - 0x336C, 0x6631, 0x0C63, 0x0136, // 0x4F, O - 0xE66F, 0x3663, 0x0F66, 0x0000, // 0x50, P - 0x333E, 0x3331, 0x08EB, 0x0313, // 0x51, Q - 0xE66F, 0x3663, 0x0766, 0x0663, // 0x52, R - 0xE73E, 0x0031, 0x0E38, 0x0133, // 0x53, S - 0xCCDF, 0x0023, 0x0ECC, 0x0100, // 0x54, T - 0x3333, 0x3333, 0x0F33, 0x0333, // 0x55, U - 0x3333, 0x3333, 0x0CE3, 0x0013, // 0x56, V - 0xB333, 0x6666, 0x037F, 0x0677, // 0x57, W - 0xC633, 0x1366, 0x036C, 0x0631, // 0x58, X - 0xE333, 0x1333, 0x0ECC, 0x0100, // 0x59, Y - 0x813F, 0x1367, 0x0F6C, 0x0764, // 0x5A, Z - 0x666E, 0x0001, 0x0E66, 0x0100, // 0x5B, [ - 0x8C63, 0x1000, 0x0000, 0x0463, // 0x5C, - 0x888E, 0x1111, 0x0E88, 0x0111, // 0x5D, ] - 0x36C8, 0x6310, 0x0000, 0x0000, // 0x5E, ^ - 0x0000, 0x0000, 0xF000, 0xF000, // 0x5F, _ - 0x08CC, 0x0100, 0x0000, 0x0000, // 0x60, ` - 0x0E00, 0x3100, 0x0E3E, 0x0633, // 0x61, a - 0xE667, 0x3000, 0x0B66, 0x0366, // 0x62, b - 0x3E00, 0x3100, 0x0E33, 0x0130, // 0x63, c - 0xE008, 0x3333, 0x0E33, 0x0633, // 0x64, d - 0x3E00, 0x3100, 0x0E3F, 0x0103, // 0x65, e - 0xF66C, 0x0031, 0x0F66, 0x0000, // 0x66, f - 0x3E00, 0x3600, 0xF0E3, 0x1333, // 0x67, g - 0xE667, 0x6300, 0x0766, 0x0666, // 0x68, h - 0xCE0C, 0x0000, 0x0ECC, 0x0100, // 0x69, i - 0x0000, 0x3303, 0xE330, 0x1333, // 0x6A, j - 0x6667, 0x3600, 0x076E, 0x0631, // 0x6B, k - 0xCCCE, 0x0000, 0x0ECC, 0x0100, // 0x6C, l - 0xF300, 0x7300, 0x03BF, 0x0667, // 0x6D, m - 0x3F00, 0x3100, 0x0333, 0x0333, // 0x6E, n - 0x3E00, 0x3100, 0x0E33, 0x0133, // 0x6F, o - 0x6B00, 0x6300, 0xF6E6, 0x0036, // 0x70, p - 0x3E00, 0x3600, 0x80E3, 0x7333, // 0x71, q - 0xEB00, 0x6300, 0x0F66, 0x0006, // 0x72, r - 0x3E00, 0x0300, 0x0F0E, 0x0131, // 0x73, s - 0xCEC8, 0x0300, 0x08CC, 0x0120, // 0x74, t - 0x3300, 0x3300, 0x0E33, 0x0633, // 0x75, u - 0x3300, 0x3300, 0x0CE3, 0x0013, // 0x76, v - 0xB300, 0x6600, 0x06FF, 0x0377, // 0x77, w - 0x6300, 0x3600, 0x036C, 0x0631, // 0x78, x - 0x3300, 0x3300, 0xF0E3, 0x1333, // 0x79, y - 0x9F00, 0x1300, 0x0F6C, 0x0320, // 0x7A, z - 0x7CC8, 0x0003, 0x08CC, 0x0300, // 0x7B, { - 0x0888, 0x0111, 0x0888, 0x0111, // 0x7C, | - 0x8CC7, 0x3000, 0x07CC, 0x0000, // 0x7D, } - 0x00BE, 0x0036, 0x0000, 0x0000, // 0x7E, ~ - 0x6C80, 0x3100, 0x0F33, 0x0766, // 0x7F, DEL, HOUSE - 0x333E, 0x3031, 0xE08E, 0x1311, // 0x80, Ç - 0x3030, 0x3030, 0x0E33, 0x0733, // 0x81, ü - 0x3E08, 0x3103, 0x0E3F, 0x0103, // 0x82, é - 0x0C3E, 0x63C7, 0x0C6C, 0x0F67, // 0x83, â - 0x0E03, 0x3103, 0x0E3E, 0x0733, // 0x84, ä - 0x0E07, 0x3100, 0x0E3E, 0x0733, // 0x85, à - 0x0ECC, 0x3100, 0x0E3E, 0x0733, // 0x86, å - 0x3E00, 0x0100, 0xC0E3, 0x1310, // 0x87, ç - 0x6C3E, 0x63C7, 0x0C6E, 0x0307, // 0x88, ê - 0x3E03, 0x3103, 0x0E3F, 0x0103, // 0x89, ë - 0x3E07, 0x3100, 0x0E3F, 0x0103, // 0x8A, è - 0xCE03, 0x0003, 0x0ECC, 0x0100, // 0x8B, ï - 0x8C3E, 0x1163, 0x0C88, 0x0311, // 0x8C, î - 0xCE07, 0x0000, 0x0ECC, 0x0100, // 0x8D, ì - 0x36C3, 0x6316, 0x033F, 0x0667, // 0x8E, Ä - 0xE0CC, 0x1000, 0x03F3, 0x0333, // 0x8F, Å - 0x6F08, 0x0303, 0x0F6E, 0x0301, // 0x90, É - 0x0E00, 0x3F00, 0x0E3E, 0x0F3F, // 0x91, æ - 0xF36C, 0x7337, 0x0333, 0x0733, // 0x92, Æ - 0xE03E, 0x1031, 0x0E33, 0x0133, // 0x93, ô - 0xE030, 0x1030, 0x0E33, 0x0133, // 0x94, ö - 0xE070, 0x1000, 0x0E33, 0x0133, // 0x95, ò - 0x303E, 0x3031, 0x0E33, 0x0733, // 0x96, û - 0x3070, 0x3000, 0x0E33, 0x0733, // 0x97, ù - 0x3030, 0x3030, 0xF0E3, 0x1333, // 0x98, ÿ - 0x6C83, 0x631C, 0x08C6, 0x0136, // 0x99, Ö - 0x3303, 0x3303, 0x0E33, 0x0133, // 0x9A, Ü - 0x3E88, 0x0711, 0x88E3, 0x1170, // 0x9B, ¢ - 0xF66C, 0x0231, 0x0F76, 0x0360, // 0x9C, £ - 0xFE33, 0x3133, 0xCCFC, 0x0030, // 0x9D, ¥ - 0xF33F, 0x5331, 0x3333, 0xE6F6, // 0x9E, ₧ - 0xC880, 0x31D7, 0xEB88, 0x0111, // 0x9F, ƒ - 0x0E08, 0x3103, 0x0E3E, 0x0733, // 0xA0, á - 0xCE0C, 0x0001, 0x0ECC, 0x0100, // 0xA1, í - 0xE080, 0x1030, 0x0E33, 0x0133, // 0xA2, ó - 0x3080, 0x3030, 0x0E33, 0x0733, // 0xA3, ú - 0xF0F0, 0x1010, 0x0333, 0x0333, // 0xA4, ñ - 0x730F, 0x3303, 0x03BF, 0x0333, // 0xA5, Ñ - 0xC66C, 0x7333, 0x00E0, 0x0070, // 0xA6, ª - 0xC66C, 0x1331, 0x00E0, 0x0030, // 0xA7, º - 0x6C0C, 0x0000, 0x0E33, 0x0130, // 0xA8, ¿ - 0xF000, 0x3000, 0x0033, 0x0000, // 0xA9, ⌐ - 0xF000, 0x3000, 0x0000, 0x0033, // 0xAA, ¬ - 0xB333, 0x736C, 0x036C, 0xF36C, // 0xAB, ½ - 0xB333, 0xD36C, 0x036C, 0xCFFE, // 0xAC, ¼ - 0x8088, 0x1011, 0x0888, 0x0111, // 0xAD, ¡ - 0x36C0, 0x36C0, 0x00C6, 0x00C6, // 0xAE, « - 0xC630, 0xC630, 0x0036, 0x0036, // 0xAF, » - 0x1414, 0x1414, 0x1414, 0x1414, // 0xB0, ░ - 0x5A5A, 0x5A5A, 0x5A5A, 0x5A5A, // 0xB1, ▒ - 0xBEBE, 0xBEBE, 0xBEBE, 0xBEBE, // 0xB2, ▓ - 0x8888, 0x1111, 0x8888, 0x1111, // 0xB3, │ - 0x8888, 0x1111, 0x888F, 0x1111, // 0xB4, ┤ - 0x8F88, 0x1111, 0x888F, 0x1111, // 0xB5, ╡ - 0xCCCC, 0x6666, 0xCCCF, 0x6666, // 0xB6, ╢ - 0x0000, 0x0000, 0xCCCF, 0x6667, // 0xB7, ╖ - 0x8F00, 0x1100, 0x888F, 0x1111, // 0xB8, ╕ - 0x0FCC, 0x6666, 0xCCCF, 0x6666, // 0xB9, ╣ - 0xCCCC, 0x6666, 0xCCCC, 0x6666, // 0xBA, ║ - 0x0F00, 0x6700, 0xCCCF, 0x6666, // 0xBB, ╗ - 0x0FCC, 0x6666, 0x000F, 0x0007, // 0xBC, ╝ - 0xCCCC, 0x6666, 0x000F, 0x0007, // 0xBD, ╜ - 0x8F88, 0x1111, 0x000F, 0x0001, // 0xBE, ╛ - 0x0000, 0x0000, 0x888F, 0x1111, // 0xBF, ┐ - 0x8888, 0x1111, 0x0008, 0x000F, // 0xC0, └ - 0x8888, 0x1111, 0x000F, 0x000F, // 0xC1, ┴ - 0x0000, 0x0000, 0x888F, 0x111F, // 0xC2, ┬ - 0x8888, 0x1111, 0x8888, 0x111F, // 0xC3, ├ - 0x0000, 0x0000, 0x000F, 0x000F, // 0xC4, ─ - 0x8888, 0x1111, 0x888F, 0x111F, // 0xC5, ┼ - 0x8888, 0x1F11, 0x8888, 0x111F, // 0xC6, ╞ - 0xCCCC, 0x6666, 0xCCCC, 0x666E, // 0xC7, ╟ - 0xCCCC, 0x0E66, 0x000C, 0x000F, // 0xC8, ╚ - 0xCC00, 0x0F00, 0xCCCC, 0x666E, // 0xC9, ╔ - 0x0FCC, 0x0E66, 0x000F, 0x000F, // 0xCA, ╩ - 0x0F00, 0x0F00, 0xCCCF, 0x666E, // 0xCB, ╦ - 0xCCCC, 0x0E66, 0xCCCC, 0x666E, // 0xCC, ╠ - 0x0F00, 0x0F00, 0x000F, 0x000F, // 0xCD, ═ - 0x0FCC, 0x0E66, 0xCCCF, 0x666E, // 0xCE, ╬ - 0x0F88, 0x0F11, 0x000F, 0x000F, // 0xCF, ╧ - 0xCCCC, 0x6666, 0x000F, 0x000F, // 0xD0, ╨ - 0x0F00, 0x0F00, 0x888F, 0x111F, // 0xD1, ╤ - 0x0000, 0x0000, 0xCCCF, 0x666F, // 0xD2, ╥ - 0xCCCC, 0x6666, 0x000C, 0x000F, // 0xD3, ╙ - 0x8888, 0x1F11, 0x0008, 0x000F, // 0xD4, ╘ - 0x8800, 0x1F00, 0x8888, 0x111F, // 0xD5, ╒ - 0x0000, 0x0000, 0xCCCC, 0x666F, // 0xD6, ╓ - 0xCCCC, 0x6666, 0xCCCF, 0x666F, // 0xD7, ╫ - 0x8F88, 0x1F11, 0x888F, 0x111F, // 0xD8, ╪ - 0x8888, 0x1111, 0x000F, 0x0001, // 0xD9, ┘ - 0x0000, 0x0000, 0x8888, 0x111F, // 0xDA, ┌ - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0xDB, █ - 0x0000, 0x0000, 0xFFFF, 0xFFFF, // 0xDC, ▄ - 0xFFFF, 0x0000, 0xFFFF, 0x0000, // 0xDD, ▌ - 0x0000, 0xFFFF, 0x0000, 0xFFFF, // 0xDE, ▐ - 0xFFFF, 0xFFFF, 0x0000, 0x0000, // 0xDF, ▀ - 0xBE00, 0x3600, 0x0EB3, 0x0631, // 0xE0, α - 0xF3E0, 0x1310, 0x33F3, 0x0013, // 0xE1, ß - 0x33F0, 0x0330, 0x0333, 0x0000, // 0xE2, Γ - 0x66F0, 0x3370, 0x0666, 0x0333, // 0xE3, π - 0xC63F, 0x0033, 0x0F36, 0x0330, // 0xE4, Σ - 0xBE00, 0x1700, 0x0EBB, 0x0011, // 0xE5, σ - 0x6660, 0x6660, 0x36E6, 0x0036, // 0xE6, µ - 0x8BE0, 0x1360, 0x0888, 0x0111, // 0xE7, τ - 0x3ECF, 0x3103, 0xFCE3, 0x3013, // 0xE8, Φ - 0xF36C, 0x7631, 0x0C63, 0x0136, // 0xE9, Θ - 0x336C, 0x6631, 0x0766, 0x0733, // 0xEA, Ω - 0xE8C8, 0x3103, 0x0E33, 0x0133, // 0xEB, δ - 0xBE00, 0xD700, 0x00EB, 0x007D, // 0xEC, ∞ - 0xBE00, 0xD736, 0x36EB, 0x007D, // 0xED, φ - 0xF36C, 0x1001, 0x0C63, 0x0100, // 0xEE, ε - 0x333E, 0x3331, 0x0333, 0x0333, // 0xEF, ∩ - 0xF0F0, 0x3030, 0x00F0, 0x0030, // 0xF0, ≡ - 0xCFCC, 0x0300, 0x0F0C, 0x0300, // 0xF1, ± - 0xC8C6, 0x0100, 0x0F06, 0x0300, // 0xF2, ≥ - 0xC6C8, 0x0001, 0x0F08, 0x0301, // 0xF3, ≤ - 0x8880, 0x1DD7, 0x8888, 0x1111, // 0xF4, ⌠ - 0x8888, 0x1111, 0xEBB8, 0x0111, // 0xF5, ⌡ - 0xF0CC, 0x3000, 0x0CC0, 0x0000, // 0xF6, ÷ - 0x0BE0, 0x0360, 0x00BE, 0x0036, // 0xF7, ≈ - 0xC66C, 0x1331, 0x0000, 0x0000, // 0xF8, ° - 0x8000, 0x1000, 0x0008, 0x0001, // 0xF9, ∙ - 0x0000, 0x0000, 0x0008, 0x0001, // 0xFA, · - 0x0000, 0x333F, 0x8C67, 0x3333, // 0xFB, √ - 0x666E, 0x3331, 0x0006, 0x0003, // 0xFC, ⁿ - 0x6C8E, 0x0010, 0x000E, 0x0001, // 0xFD, ² - 0xCC00, 0x3300, 0x00CC, 0x0033, // 0xFE, ■ - 0x0000, 0x0000, 0x0000, 0x0000 // 0xFF, NBSP -); - -const int charsets[] = int[18]( - 0x30, 10, // NUMBERS - 0x41, 26, // UPPERCASE LETTERS - 0x61, 26, // LOWERCASE LETTERS - 0x01, 15, // SYMBOLS - 0x18, 4, // ARROWS - 0xB3, 40, // BARS - 0xE0, 16, // GREEK - 0x80, 28, // ACCENTS - 0xB0, 3 // SHADES -); - -#define CHARSETS 8 - -const int hex_chars[] = int[16]( - 0x30, - 0x31, - 0x32, - 0x33, - 0x34, - 0x35, - 0x36, - 0x37, - 0x38, - 0x39, - 0x41, - 0x42, - 0x43, - 0x44, - 0x45, - 0x46 -); - -bool char(vec2 pos, int code) -{ - if (pos.x < .0 || pos.y < .0 || pos.x >= 1. || pos.y >= 1.) { - return false; - } - 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 * .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.; -} - -float write_5(vec2 uv, vec2 pos, int str[5]) -{ - float d = 0.; - int i; - - for (i = 0; i < 5; i++) { - if (str[i] == 0) { - return d; - } - - d += char_at(uv, pos + vec2(i, 0.), str[i]); - } - - return d; -} - -float write_10(vec2 uv, vec2 pos, int str[10]) -{ - float d = 0.; - int i; - - for (i = 0; i < 10; i++) { - if (str[i] == 0) { - return d; - } - - d += char_at(uv, pos + vec2(i, 0.), str[i]); - } - - return d; -} - -float write_20(vec2 uv, vec2 pos, int str[20]) -{ - float d = 0.; - int i; - - for (i = 0; i < 20; i++) { - if (str[i] == 0) { - return d; - } - - d += char_at(uv, pos + vec2(i, 0.), str[i]); - } - - return d; -} - -float write_int(vec2 uv, vec2 pos, int value, int magnitude) -{ - value = max(0, value); - int i; - int m = 1; - 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 * 10)) / m)); - m *= 10; - } - } - return d; -} - -float write_int_left(vec2 uv, vec2 pos, int value, int magnitude) -{ - value = max(0, value); - int i; - int m = 1; - float d = 0.; - for (i = 0; i < magnitude; i++) { - if (i == 0 || value >= m) { - pos.x += 1.; - m *= 10; - } - } - return write_int(uv, pos, value, magnitude); -} - -#endif diff --git a/project/inc_cp437.glsl b/project/inc_cp437.glsl new file mode 120000 index 0000000..14bed3a --- /dev/null +++ b/project/inc_cp437.glsl @@ -0,0 +1 @@ +../forge-steel/default/inc_cp437.glsl \ No newline at end of file diff --git a/project/inc_functions.glsl b/project/inc_functions.glsl deleted file mode 100644 index dc5c4c5..0000000 --- a/project/inc_functions.glsl +++ /dev/null @@ -1,400 +0,0 @@ -#ifndef PI -#define PI 3.1415927 -#endif - -#include inc_time.glsl -#include inc_rand.glsl -#include inc_res.glsl - -#ifndef INC_FUNCTIONS -#define INC_FUNCTIONS - -// BASICS - -float istep(float x, float y) { - return 1. - step(x, y); -} - -float estep(float x, float y) { - return smoothstep(x - .0001, x + .0001, y); -} - -float iestep(float x, float y) { - return 1. - estep(x, y); -} - -float ease(float x) { - return .5 - cos(max(min(x, 1.), 0.) * PI) * .5; -} - -vec2 ease(vec2 x) { - return .5 - cos(max(min(x, 1.), 0.) * PI) * .5; -} - -vec3 ease(vec3 x) { - return .5 - cos(max(min(x, 1.), 0.) * PI) * .5; -} - -float saw(float x) { - return abs(mod(x + 1., 2.) - 1.); -} - -vec2 saw(vec2 x) { - return abs(mod(x + 1., 2.) - 1.); -} - -vec3 saw(vec3 x) { - return abs(mod(x + 1., 2.) - 1.); -} - -float cmod(float x, float k) { - return mod(x + k * .5, k) - k * .5; -} - -vec2 cmod(vec2 x, float k) { - return mod(x + k * .5, k) - k * .5; -} - -vec3 cmod(vec3 x, float k) { - return mod(x + k * .5, k) - k * .5; -} - -// COLORS - -vec3 col(float x) { - return vec3( - .5 * (sin(x * 2. * PI) + 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 - ); -} - -vec3 shift3(vec3 c, float f) { - return shift(shift(shift(c, f), f), f); -} - -vec3 mix3(vec3 c1, vec3 c2, vec3 c3, float x) { - 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(.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(.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(.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 * .3333 + v.y * .3333 + v.z * .3333; -} - -float mean(vec4 v) -{ - return v.x * .3333 + v.y * .3333 + v.z * .3333; -} - -// OTHER - -mat2 rot(float angle) { - return mat2( - cos(angle * 2. * PI), -sin(angle * 2. * PI), - sin(angle * 2. * PI), cos(angle * 2. * PI) - ); -} - -// EFFECTS - -vec2 lens(vec2 uv, float limit, float power) { - return uv * (1. + limit + length(uv * power)); -} - -vec2 kal(vec2 uv, float 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) - ); -} - -vec2 kal2(vec2 uv, float 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) - ); -} - -// NOISE - -float noise(vec2 n) -{ - const vec2 d = vec2(0., 1.); - vec2 b = floor(n); - vec2 f = fract(n); - 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) * .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.; -} - -vec2 v_pos(float i, int seed, float time) { - int iTimeId = int(time); - float iTimeV = time - iTimeId; - - float x0 = rand(i + seed + iTimeId); - float y0 = rand(i + seed + 10. + iTimeId); - - float x1 = rand(i + seed + iTimeId + 1.); - float y1 = rand(i + seed + 10. + iTimeId + 1.); - - return vec2( - mix(x0, x1, ease(ease(iTimeV))), - mix(y0, y1, ease(ease(iTimeV))) - ); -} - -vec4 voronoi(vec2 uv, float dist, int seed, float time) { - vec4 o = vec4(0., 0., 2., 0.); - vec4 t = vec4(0., 0., 2., 0.); - float d, i; - vec2 uv2, p; - 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; - d = length(p - uv); - if (d < o.z) { - t = o; - o = vec4(p, d, i); - } else if (d < t.z) { - t = vec4(p, d, i); - } - } - } - return vec4(o.z, t.z, o.w, t.w); -} - -// SHAPES - -float circle(vec2 uv, vec2 c, float size) { - return istep(size, length(uv - c)); -} - -float h_circle(vec2 uv, vec2 c, float size, float k) { - 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))); -} - -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 rect(vec2 uv, vec2 c, vec2 size) { - uv -= c; - return step(abs(uv.x), size.x) * step(abs(uv.y), size.y); -} - -float h_rect(vec2 uv, vec2 c, vec2 size, float k) { - return rect(uv, c, size + k * .5) - rect(uv, c, size - k * .5); -} - -float line(vec2 uv, vec2 p1, vec2 p2, float thick) { - vec2 p = p2 - p1; - uv -= p1; - vec2 k; - - if (abs(p.y) > abs(p.x)) { - k = vec2( - uv.x - p.x * uv.y / p.y, - uv.y / p.y - ); - - 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 * .5) - * step(-k.y, thick * .5) - * step(k.x, 1.) - * (1. - step(k.x, 0.)); - } -} - -const mat2x2 ISOMETRIC_MATRIX = mat2x2( - .5, 1., - .5, -1. - ); - -vec2 iso(vec2 p) { - return p * ISOMETRIC_MATRIX; -} - -vec2 iso_z(float z) { - return vec2( - -z, - z - ); -} - -vec2 iso(vec3 uv) { - return iso(uv.xy) + iso_z(uv.z); -} - -// INPUTS - -vec4 reframe(sampler2D tex, vec2 uv) -{ - 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; - return texture(tex, uv); -} - -vec4 kernel(sampler2D tex, vec2 uv, mat3x3 k, float spm) -{ - int x, y; - vec2 offset; - 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.) { - sum += k[x + 1][y + 1] * texture(tex, uv + offset); - } - } - } - return sum; -} - -// BLUR - -float gaussian_weight(float x, float sigma) -{ - return exp(-(x * x) / (2. * sigma * sigma)); -} - -vec4 gauss(sampler2D tex, vec2 uv, const int kernel_size, float spm, float sigma, float bloom) -{ - int x, y; - vec2 offset; - float w; - 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; - w = gaussian_weight(length(vec2(x, y)), sigma); - sum += texture(tex, uv + offset) * w; - weight_sum += w; - } - } - return (sum / weight_sum) * bloom; -} - -vec4 gauss(sampler2D tex, vec2 uv, const int kernel_size, float spm, float sigma) -{ - 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.); -} - -vec4 gauss(sampler2D tex, vec2 uv, const int kernel_size) -{ - return gauss(tex, uv, kernel_size, 1. / max(iResolution.x, iResolution.y)); -} - -vec4 gauss(sampler2D tex, vec2 uv) -{ - return gauss(tex, uv, 3); -} - -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.; -} - -#endif diff --git a/project/inc_functions.glsl b/project/inc_functions.glsl new file mode 120000 index 0000000..15233b5 --- /dev/null +++ b/project/inc_functions.glsl @@ -0,0 +1 @@ +../forge-steel/default/inc_functions.glsl \ No newline at end of file diff --git a/project/inc_fx.glsl b/project/inc_fx.glsl index c37be98..1b27c02 100644 --- a/project/inc_fx.glsl +++ b/project/inc_fx.glsl @@ -1,6 +1,7 @@ #include inc_res.glsl #include inc_magic.glsl #include inc_functions.glsl +#include inc_cp437.glsl #ifndef INC_FX #define INC_FX @@ -241,8 +242,6 @@ vec4 fx_8(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, v return fx_master(c0, c, seed, m0); } -#include inc_cp437.glsl - // FX 9 : cp437 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) { diff --git a/project/inc_magic.glsl b/project/inc_magic.glsl deleted file mode 100644 index 1d8bf1c..0000000 --- a/project/inc_magic.glsl +++ /dev/null @@ -1,77 +0,0 @@ -#include inc_time.glsl - -#ifndef INC_MAGIC -#define INC_MAGIC - -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)) - ); -} - -vec2 magic_f(float i) -{ - return magic_f(vec2(0.), vec3(0., 0., 1.), i); -} - -vec3 magic_b(vec3 b, float i) -{ - return vec3( - 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); -} - -bool magic_trigger(vec3 b, float i) -{ - return magic_b(b, i).x > 0.; -} - -bool magic_trigger(float i) -{ - return magic_b(i).x > 0.; -} - -float magic(vec2 f, vec3 b, float i) -{ - vec2 mf = magic_f(f, b, i); - vec3 mb = magic_b(b, i); - - 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) -{ - vec2 mf = magic_f(f, b, i); - vec3 mb = magic_b(b, i); - - 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); -} - -float magic_reverse(vec2 f, vec3 b, float i) -{ - vec2 mf = magic_f(f, b, i); - vec3 mb = magic_b(b, i); - - 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); -} - -#endif diff --git a/project/inc_magic.glsl b/project/inc_magic.glsl new file mode 120000 index 0000000..d6153f3 --- /dev/null +++ b/project/inc_magic.glsl @@ -0,0 +1 @@ +../forge-steel/default/inc_magic.glsl \ No newline at end of file diff --git a/project/inc_rand.glsl b/project/inc_rand.glsl deleted file mode 100644 index ea5b708..0000000 --- a/project/inc_rand.glsl +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef INC_RAND -#define INC_RAND - -float rand(float seed){ - 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.); -} - -#endif diff --git a/project/inc_rand.glsl b/project/inc_rand.glsl new file mode 120000 index 0000000..82af631 --- /dev/null +++ b/project/inc_rand.glsl @@ -0,0 +1 @@ +../forge-steel/default/inc_rand.glsl \ No newline at end of file diff --git a/project/inc_res.glsl b/project/inc_res.glsl deleted file mode 100644 index 843597d..0000000 --- a/project/inc_res.glsl +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef INC_BASE -#define INC_BASE - -uniform vec2 iResolution; -uniform vec2 iTexResolution; - -#endif diff --git a/project/inc_res.glsl b/project/inc_res.glsl new file mode 120000 index 0000000..2a48c89 --- /dev/null +++ b/project/inc_res.glsl @@ -0,0 +1 @@ +../forge-steel/default/inc_res.glsl \ No newline at end of file diff --git a/project/inc_sentences.glsl b/project/inc_sentences.glsl index b10c246..5a04bc1 100644 --- a/project/inc_sentences.glsl +++ b/project/inc_sentences.glsl @@ -27,20 +27,4 @@ const int sentences[] = int[SENTENCE_COUNT * SENTENCE_MAX_LENGTH]( const int lengths[] = int[SENTENCE_COUNT]( 5, 5, 10, 6, 2, 9, 10, 7, 18, 14, 4, 9, 10, 1, 6, 11, 11 ); - -float write_sentence(vec2 uv, vec2 pos, int n) -{ - float d = 0.; - int 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 d; -} #endif diff --git a/project/inc_src.glsl b/project/inc_src.glsl index d7bedbd..2ce1a1b 100644 --- a/project/inc_src.glsl +++ b/project/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 @@ -288,8 +289,6 @@ vec4 src_6(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 return vec4(f); } -#include inc_cp437.glsl - // SRC 7 : cp437 vec4 src_7(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) { @@ -325,8 +324,6 @@ vec4 src_7(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 // SRC 8 : sentences -#include inc_sentences.glsl - vec4 src_8(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) { // start diff --git a/project/inc_time.glsl b/project/inc_time.glsl deleted file mode 100644 index 90b8514..0000000 --- a/project/inc_time.glsl +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef PI -#define PI 3.1415927 -#endif - -#include inc_rand.glsl - -#ifndef INC_TIME -#define INC_TIME - -uniform float iTime; -uniform float iTempo; -uniform float iBeats; - -float randTime(float seed, int beats){ - return rand(seed + floor(iBeats / beats)); -} - -float randTime(float seed){ - return randTime(seed, 4); -} - -float divider(float x) -{ - 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 * .25, 1.); -} - -float modTime(float k) -{ - return modTime(k, 1.); -} - -float sinTime(float k) -{ - return sin(modTime(k, .5) * 2. * PI); -} - -float cosTime(float k) -{ - return cos(modTime(k, .5) * 2. * PI); -} - -#endif diff --git a/project/inc_time.glsl b/project/inc_time.glsl new file mode 120000 index 0000000..6277fbd --- /dev/null +++ b/project/inc_time.glsl @@ -0,0 +1 @@ +../forge-steel/default/inc_time.glsl \ No newline at end of file