From 861b188f35ccec1f67a865e939c4e6d6047f8709 Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Fri, 17 Apr 2026 15:12:12 -0400 Subject: Update --- Cargo.lock | 390 +++++++----------------- crates/teleia/Cargo.toml | 36 +-- crates/teleia/src/assets/shaders/uber/frag.glsl | 2 +- crates/teleia/src/assets/shaders/uber/vert.glsl | 7 +- crates/teleia/src/context.rs | 2 +- crates/teleia/src/renderer.rs | 30 +- crates/teleia/src/state.rs | 30 +- crates/teleia_macros/Cargo.toml | 8 +- 8 files changed, 184 insertions(+), 321 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 721bc72..bbc55a2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -19,10 +19,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "ahash" @@ -305,20 +305,6 @@ name = "bytemuck" version = "1.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2ef034f05691a48569bd920a96c81b9d91bbad1ab5ac7c4616c1f6ef36cb79f" -dependencies = [ - "bytemuck_derive", -] - -[[package]] -name = "bytemuck_derive" -version = "1.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] [[package]] name = "byteorder" @@ -347,7 +333,7 @@ dependencies = [ "bitflags 2.6.0", "log", "polling", - "rustix", + "rustix 0.38.31", "slab", "thiserror 1.0.57", ] @@ -359,7 +345,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02" dependencies = [ "calloop", - "rustix", + "rustix 0.38.31", "wayland-backend", "wayland-client", ] @@ -518,29 +504,6 @@ dependencies = [ "bindgen", ] -[[package]] -name = "cosmic-text" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59fd57d82eb4bfe7ffa9b1cec0c05e2fd378155b47f255a67983cb4afe0e80c2" -dependencies = [ - "bitflags 2.6.0", - "fontdb", - "log", - "rangemap", - "rayon", - "rustc-hash 1.1.0", - "rustybuzz", - "self_cell", - "swash", - "sys-locale", - "ttf-parser 0.21.1", - "unicode-bidi", - "unicode-linebreak", - "unicode-script", - "unicode-segmentation", -] - [[package]] name = "cpal" version = "0.15.3" @@ -597,9 +560,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.14" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" dependencies = [ "crossbeam-utils", ] @@ -634,9 +597,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crypto-common" @@ -696,7 +659,7 @@ dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -804,12 +767,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -845,9 +808,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.28" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" dependencies = [ "crc32fast", "miniz_oxide", @@ -859,28 +822,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" -[[package]] -name = "font-types" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3971f9a5ca983419cdc386941ba3b9e1feba01a0ab888adf78739feb2798492" -dependencies = [ - "bytemuck", -] - -[[package]] -name = "fontdb" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0299020c3ef3f60f526a4f64ab4a3d4ce116b1acbf24cdd22da0068e5d81dc3" -dependencies = [ - "log", - "memmap2", - "slotmap", - "tinyvec", - "ttf-parser 0.20.0", -] - [[package]] name = "foreign-types" version = "0.3.2" @@ -1040,12 +981,6 @@ dependencies = [ "byteorder", ] -[[package]] -name = "hashbrown" -version = "0.14.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" - [[package]] name = "hashbrown" version = "0.15.2" @@ -1057,6 +992,12 @@ dependencies = [ "foldhash", ] +[[package]] +name = "hashbrown" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" + [[package]] name = "heapless" version = "0.8.0" @@ -1073,6 +1014,12 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + [[package]] name = "http" version = "1.4.0" @@ -1108,12 +1055,13 @@ dependencies = [ [[package]] name = "image" -version = "0.25.5" +version = "0.25.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd6f44aed642f18953a158afeb30206f4d50da59fbc66ecb53c66488de73563b" +checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" dependencies = [ "bytemuck", "byteorder-lite", + "moxcms", "num-traits", "png", "zune-core", @@ -1128,12 +1076,12 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "2.2.5" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.17.0", ] [[package]] @@ -1228,9 +1176,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.179" +version = "0.2.184" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5a2d376baa530d1238d133232d15e239abad80d05838b4b59354e5268af431f" +checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af" [[package]] name = "libloading" @@ -1275,6 +1223,12 @@ version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + [[package]] name = "litrs" version = "1.0.0" @@ -1329,11 +1283,11 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ - "adler", + "adler2", "simd-adler32", ] @@ -1343,6 +1297,16 @@ version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e53debba6bda7a793e5f99b8dacf19e626084f525f7829104ba9898f367d85ff" +[[package]] +name = "moxcms" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" +dependencies = [ + "num-traits", + "pxfm", +] + [[package]] name = "nalgebra" version = "0.33.2" @@ -1480,9 +1444,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", "libm", @@ -1659,7 +1623,7 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4586edfe4c648c71797a74c84bacb32b52b212eff5dfe2bb9f2c599844023e7" dependencies = [ - "ttf-parser 0.20.0", + "ttf-parser", ] [[package]] @@ -1714,11 +1678,11 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "png" -version = "0.17.13" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "crc32fast", "fdeflate", "flate2", @@ -1727,16 +1691,16 @@ dependencies = [ [[package]] name = "polling" -version = "3.5.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" dependencies = [ "cfg-if", "concurrent-queue", + "hermit-abi", "pin-project-lite", - "rustix", - "tracing", - "windows-sys 0.52.0", + "rustix 1.1.4", + "windows-sys 0.61.2", ] [[package]] @@ -1782,6 +1746,12 @@ dependencies = [ "syn", ] +[[package]] +name = "pxfm" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5a041e753da8b807c9255f28de81879c78c876392ff2469cde94799b2896b9d" + [[package]] name = "quick-xml" version = "0.31.0" @@ -1793,9 +1763,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.35" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -1830,12 +1800,6 @@ dependencies = [ "getrandom", ] -[[package]] -name = "rangemap" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbbbbea733ec66275512d0b9694f34102e7d5406fdbe2ad8d21b28dce92887c" - [[package]] name = "rapier3d" version = "0.23.1" @@ -1872,36 +1836,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" -[[package]] -name = "rayon" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "read-fonts" -version = "0.22.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69aacb76b5c29acfb7f90155d39759a29496aebb49395830e928a9703d2eec2f" -dependencies = [ - "bytemuck", - "font-types", -] - [[package]] name = "redox_syscall" version = "0.3.5" @@ -2007,33 +1941,29 @@ dependencies = [ "bitflags 2.6.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.13", "windows-sys 0.52.0", ] [[package]] -name = "rustversion" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" - -[[package]] -name = "rustybuzz" -version = "0.14.1" +name = "rustix" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ "bitflags 2.6.0", - "bytemuck", - "libm", - "smallvec", - "ttf-parser 0.21.1", - "unicode-bidi-mirroring", - "unicode-ccc", - "unicode-properties", - "unicode-script", + "errno", + "libc", + "linux-raw-sys 0.12.1", + "windows-sys 0.61.2", ] +[[package]] +name = "rustversion" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" + [[package]] name = "ryu" version = "1.0.18" @@ -2109,12 +2039,6 @@ dependencies = [ "libc", ] -[[package]] -name = "self_cell" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16c2f82143577edb4921b71ede051dac62ca3c16084e918bf7b40c96ae10eb33" - [[package]] name = "send_wrapper" version = "0.6.0" @@ -2123,18 +2047,28 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.197" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -2208,16 +2142,6 @@ dependencies = [ "indenter", ] -[[package]] -name = "skrifa" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1c44ad1f6c5bdd4eefed8326711b7dbda9ea45dfd36068c427d332aa382cbe" -dependencies = [ - "bytemuck", - "read-fonts", -] - [[package]] name = "slab" version = "0.4.9" @@ -2255,7 +2179,7 @@ dependencies = [ "libc", "log", "memmap2", - "rustix", + "rustix 0.38.31", "thiserror 1.0.57", "wayland-backend", "wayland-client", @@ -2322,17 +2246,6 @@ dependencies = [ "syn", ] -[[package]] -name = "swash" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbd59f3f359ddd2c95af4758c18270eddd9c730dde98598023cdabff472c2ca2" -dependencies = [ - "skrifa", - "yazi", - "zeno", -] - [[package]] name = "symphonia" version = "0.5.4" @@ -2439,15 +2352,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "sys-locale" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" -dependencies = [ - "libc", -] - [[package]] name = "teleia" version = "0.1.0" @@ -2460,7 +2364,6 @@ dependencies = [ "bytes", "console_error_panic_hook", "console_log", - "cosmic-text", "directories", "enum-map", "env_logger", @@ -2510,7 +2413,7 @@ dependencies = [ "cfg-if", "fastrand", "once_cell", - "rustix", + "rustix 0.38.31", "windows-sys 0.59.0", ] @@ -2589,21 +2492,6 @@ dependencies = [ "strict-num", ] -[[package]] -name = "tinyvec" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - [[package]] name = "tobj" version = "4.0.1" @@ -2698,12 +2586,6 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" -[[package]] -name = "ttf-parser" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" - [[package]] name = "tungstenite" version = "0.24.0" @@ -2729,48 +2611,12 @@ version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" -[[package]] -name = "unicode-bidi" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" - -[[package]] -name = "unicode-bidi-mirroring" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23cb788ffebc92c5948d0e997106233eeb1d8b9512f93f41651f52b6c5f5af86" - -[[package]] -name = "unicode-ccc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656" - [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" -[[package]] -name = "unicode-linebreak" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" - -[[package]] -name = "unicode-properties" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" - -[[package]] -name = "unicode-script" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f" - [[package]] name = "unicode-segmentation" version = "1.11.0" @@ -2913,7 +2759,7 @@ checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40" dependencies = [ "cc", "downcast-rs", - "rustix", + "rustix 0.38.31", "scoped-tls", "smallvec", "wayland-sys", @@ -2926,7 +2772,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" dependencies = [ "bitflags 2.6.0", - "rustix", + "rustix 0.38.31", "wayland-backend", "wayland-scanner", ] @@ -2948,7 +2794,7 @@ version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71ce5fa868dd13d11a0d04c5e2e65726d0897be8de247c0c5a65886e283231ba" dependencies = [ - "rustix", + "rustix 0.38.31", "wayland-client", "xcursor", ] @@ -3362,7 +3208,7 @@ dependencies = [ "percent-encoding", "raw-window-handle", "redox_syscall 0.3.5", - "rustix", + "rustix 0.38.31", "sctk-adwaita", "serde", "smithay-client-toolkit", @@ -3413,7 +3259,7 @@ dependencies = [ "libc", "libloading", "once_cell", - "rustix", + "rustix 0.38.31", "x11rb-protocol", ] @@ -3448,18 +3294,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621" -[[package]] -name = "yazi" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c94451ac9513335b5e23d7a8a2b61a7102398b8cca5160829d313e84c9d98be1" - -[[package]] -name = "zeno" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd15f8e0dbb966fd9245e7498c7e9e5055d9e5c8b676b95bd67091cd11a1e697" - [[package]] name = "zerocopy" version = "0.7.32" @@ -3482,15 +3316,15 @@ dependencies = [ [[package]] name = "zune-core" -version = "0.4.12" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" +checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9" [[package]] name = "zune-jpeg" -version = "0.4.14" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99a5bab8d7dedf81405c4bb1f2b83ea057643d9cb28778cea9eecddeedd2e028" +checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" dependencies = [ "zune-core", ] diff --git a/crates/teleia/Cargo.toml b/crates/teleia/Cargo.toml index 0889a8e..05ec74a 100644 --- a/crates/teleia/Cargo.toml +++ b/crates/teleia/Cargo.toml @@ -8,28 +8,28 @@ authors.workspace = true crate-type = ["cdylib", "rlib"] [dependencies] -strum = { version = "*", features = ["derive"] } # utility macros for enums +strum = { version = "0.27.1", features = ["derive"] } # utility macros for enums glow = { version = "=0.13.1", features = [] } # rendering -tobj = "*" # loader for .obj meshes loader +tobj = "4.0.1" # loader for .obj meshes loader gltf = { git = "https://github.com/lcolonq/gltf", features = ["extras", "import", "names", "utils"] } # loader for .gltf scenes -image = { version = "0.25", default-features = false, features = ["jpeg", "png"] } # texture loader -cosmic-text = { version = "*", default-features = false, features = ["std", "swash"] } # advanced text rendering -glam = "0.29" # linear algebra -log = "*" # logging +image = { version = "0.25.10", default-features = false, features = ["jpeg", "png"] } # texture loader +# cosmic-text = { version = "*", default-features = false, features = ["std", "swash"] } # advanced text rendering +glam = "0.29.2" # linear algebra +log = "0.4.21" # logging rand = { version = "=0.8.5", features = ["small_rng"] } # rng -serde = { version = "*", features = ["derive"] } # serialization -serde_json = "*" # serialize JSON -bincode = { version = "*", features = ["serde"] } # binary serialization -enum-map = "*" # fast maps with enums as keys -bimap = "*" # bijective maps +serde = { version = "1.0.228", features = ["derive"] } # serialization +serde_json = "1.0.128" # serialize JSON +bincode = { version = "2.0.1", features = ["serde"] } # binary serialization +enum-map = "2.7.3" # fast maps with enums as keys +bimap = "0.6.3" # bijective maps # reqwest = "*" # http requests bytes = "*" # bytes for http responses -bitflags = { version = "*", features = ["serde"] } # bitwise flags -simple-eyre = { version = "*", default-features = false } # error reporting and formatting -rapier3d = "*" # rigid-body physics -parry3d = "*" # collision detection +bitflags = { version = "2.6.0", features = ["serde"] } # bitwise flags +simple-eyre = { version = "0.3.1", default-features = false } # error reporting and formatting +rapier3d = "0.23.1" # rigid-body physics +parry3d = "0.18.0" # collision detection nalgebra = {version = "0.33.2", features = ["convert-glam029"]} # linear algebra library for rapier3d -byteorder = "*" # read numbers in particular endianness +byteorder = "1.5.0" # read numbers in particular endianness base64 = "0.22.1" # encode/decode base64 [target.'cfg(target_arch = "wasm32")'.dependencies] @@ -44,9 +44,9 @@ js-sys = "*" # browser APIs to interact with JS runtime (e.g. run WASM) web-sys = { version = "*", features = ["Document", "Window", "Element", "HtmlCanvasElement", "WebGl2RenderingContext", "Headers", "Request", "RequestInit", "RequestMode", "Response", "Performance", "PerformanceTiming", "AudioContext", "AudioNode", "GainNode", "AudioParam", "AudioDestinationNode", "AudioBuffer", "AudioBufferSourceNode", "BinaryType", "Blob", "CloseEvent", "ErrorEvent", "FileReader", "MessageEvent", "ProgressEvent", "WebSocket", "Storage"] } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] -env_logger = "*" # configurable logging to stdout +env_logger = "0.11.5" # configurable logging to stdout glfw = { git = "https://github.com/lcolonq/glfw-rs", features = ["serde"] } # window management kira = { version = "=0.9.6", default-features = false, features = ["cpal", "ogg", "wav"] } # audio directories = { git = "https://github.com/lcolonq/directories-rs" } # standard system directories -polling = "*" # interface to epoll +polling = "3.11.0" # interface to epoll tungstenite = { version = "0.24.0", features = ["native-tls"] } # websockets \ No newline at end of file diff --git a/crates/teleia/src/assets/shaders/uber/frag.glsl b/crates/teleia/src/assets/shaders/uber/frag.glsl index ccdb346..ebe6438 100644 --- a/crates/teleia/src/assets/shaders/uber/frag.glsl +++ b/crates/teleia/src/assets/shaders/uber/frag.glsl @@ -1,4 +1,4 @@ -uniform int flags; +uniform highp int flags; uniform vec3 camera_pos; uniform float time; diff --git a/crates/teleia/src/assets/shaders/uber/vert.glsl b/crates/teleia/src/assets/shaders/uber/vert.glsl index 15223a0..b9be83b 100644 --- a/crates/teleia/src/assets/shaders/uber/vert.glsl +++ b/crates/teleia/src/assets/shaders/uber/vert.glsl @@ -1,5 +1,4 @@ -#version 300 es -precision highp float; +uniform highp int flags; in vec3 vertex; in vec3 normal; @@ -19,6 +18,10 @@ out vec3 vertex_fragpos; out vec4 vertex_fragpos_shadow_dir; out vec3 vertex_view_vector; +bool flag(int mask) { + return (flags & mask) != 0; +} + void main() { vertex_texcoord = texcoord; vertex_normal = (normal_matrix * vec4(normal, 1.0)).xyz; diff --git a/crates/teleia/src/context.rs b/crates/teleia/src/context.rs index 602e2cc..8547d59 100644 --- a/crates/teleia/src/context.rs +++ b/crates/teleia/src/context.rs @@ -101,7 +101,7 @@ impl Context { self.gl.clear_color(0.1, 0.1, 0.1, 1.0); self.gl.clear_depth_f32(1.0); - #[cfg(debug_assertions)] + #[cfg(all(debug_assertions, not(target_arch = "wasm32")))] self.gl.enable(glow::DEBUG_OUTPUT); self.gl.enable(glow::DEPTH_TEST); diff --git a/crates/teleia/src/renderer.rs b/crates/teleia/src/renderer.rs index d40c0cd..8313319 100644 --- a/crates/teleia/src/renderer.rs +++ b/crates/teleia/src/renderer.rs @@ -5,14 +5,15 @@ use bitflags::bitflags; bitflags! { #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct UberFlags: u32 { - const TEXTURE_COLOR = 0b00000001; - const TEXTURE_NORMAL = 0b00000010; - const FLIP_TEXTURE = 0b00000100; - const LIGHT_AMBIENT = 0b00001000; - const LIGHT_DIR = 0b00010000; - const LIGHT_POINT = 0b00100000; - const SPRITE = 0b01000000; - const EFFECTS = 0b10000000; + const TEXTURE_COLOR = 0b000000001; + const TEXTURE_NORMAL = 0b000000010; + const FLIP_TEXTURE = 0b000000100; + const LIGHT_AMBIENT = 0b000001000; + const LIGHT_DIR = 0b000010000; + const LIGHT_POINT = 0b000100000; + const SPRITE = 0b001000000; + const EFFECTS = 0b010000000; + const SCREENSPACE = 0b100000000; } } impl UberFlags { @@ -41,7 +42,7 @@ pub trait Assets { } #[derive(Debug, Clone, Copy, PartialEq, Eq)] -enum ShaderMode { TwoDimension, ThreeDimension, } +enum ShaderMode { TwoDimension, ThreeDimension, ThreeDimensionOrth } #[derive(Debug, Clone, Copy)] enum BoundShader { None, Uber(UberFlags, ShaderMode), Shader(A::Shader, ShaderMode) } impl PartialEq for BoundShader { @@ -76,7 +77,7 @@ impl Renderer { pub fn new(ctx: &context::Context, f: F) -> Self where F: FnOnce(&context::Context) -> A { let shader_uber = shader::Shader::new_nolib(ctx, - include_str!("assets/shaders/uber/vert.glsl"), + &format!("{}{}", UberFlags::prelude(), include_str!("assets/shaders/uber/vert.glsl")), &format!("{}{}", UberFlags::prelude(), include_str!("assets/shaders/uber/frag.glsl")), ); shader_uber.bind(ctx); @@ -121,6 +122,7 @@ impl Renderer { match mode { ShaderMode::TwoDimension => st.bind_2d(ctx, &self.shader_uber), ShaderMode::ThreeDimension => st.bind_3d(ctx, &self.shader_uber), + ShaderMode::ThreeDimensionOrth => st.bind_3d_orth(ctx, &self.shader_uber), } flags.set_flags(ctx, &self.shader_uber); self.shader = BoundShader::Uber(flags, mode) @@ -137,6 +139,7 @@ impl Renderer { match mode { ShaderMode::TwoDimension => st.bind_2d(ctx, &self.assets.shader(shader)), ShaderMode::ThreeDimension => st.bind_3d(ctx, &self.assets.shader(shader)), + ShaderMode::ThreeDimensionOrth => st.bind_3d_orth(ctx, &self.assets.shader(shader)), } self.shader = BoundShader::Shader(shader, mode) } @@ -146,6 +149,9 @@ impl Renderer { pub fn bind_uber_3d(&mut self, ctx: &context::Context, st: &mut state::State, flags: UberFlags) { self.bind_uber(ctx, st, flags, ShaderMode::ThreeDimension); } + pub fn bind_uber_3d_orth(&mut self, ctx: &context::Context, st: &mut state::State, flags: UberFlags) { + self.bind_uber(ctx, st, flags, ShaderMode::ThreeDimensionOrth); + } pub fn bind_shader_2d(&mut self, ctx: &context::Context, st: &mut state::State, shader: A::Shader) { self.bind_shader(ctx, st, shader, ShaderMode::TwoDimension); } @@ -166,7 +172,9 @@ impl Renderer { } pub fn set_position_3d(&self, ctx: &context::Context, st: &state::State, pos: glam::Mat4) { if let Some((s, sm)) = self.shader() { - debug_assert!(sm == ShaderMode::ThreeDimension, "attempted to set_position_3d in wrong mode"); + debug_assert!(sm == ShaderMode::ThreeDimension || sm == ShaderMode::ThreeDimensionOrth, + "attempted to set_position_3d in wrong mode" + ); s.set_position_3d(ctx, st, &pos) } } diff --git a/crates/teleia/src/state.rs b/crates/teleia/src/state.rs index 2b23ae7..7544356 100644 --- a/crates/teleia/src/state.rs +++ b/crates/teleia/src/state.rs @@ -10,6 +10,9 @@ use crate::{audio, context, font, framebuffer, mesh, shader, utils}; const DELTA_TIME: f64 = 0.016; // todo +pub const ORTH_WIDTH: f32 = 7.55869; +pub const ORTH_HEIGHT: f32 = 5.03913; + pub trait Game { fn initialize(&mut self, ctx: &context::Context, st: &mut State) -> utils::Erm<()> { Ok(()) } fn finalize(&mut self, ctx: &context::Context, st: &mut State) -> utils::Erm<()> { Ok(()) } @@ -171,6 +174,7 @@ pub struct State { pub audio: Option, pub projection: glam::Mat4, + pub projection_orth: glam::Mat4, pub camera: (glam::Vec3, glam::Vec3, glam::Vec3), pub lighting: (glam::Vec3, glam::Vec3, glam::Vec3), pub point_lights: Vec, @@ -272,6 +276,12 @@ impl State { 0.5, 50.0, ), + projection_orth: glam::Mat4::orthographic_lh( + -ORTH_WIDTH, ORTH_WIDTH, + -ORTH_HEIGHT, ORTH_HEIGHT, + 0.5, + 50.0, + ), camera: (glam::Vec3::new(0.0, 0.0, 0.0), glam::Vec3::new(0.0, 0.0, 1.0), glam::Vec3::new(0.0, 1.0, 0.0)), lighting: ( glam::Vec3::new(1.0, 1.0, 1.0), @@ -358,9 +368,9 @@ impl State { ) } - pub fn bind_3d_helper(&mut self, ctx: &context::Context, shader: &shader::Shader, plc: usize) { + pub fn bind_3d_helper(&mut self, ctx: &context::Context, shader: &shader::Shader, plc: usize, orth: bool) { shader.bind(ctx); - shader.set_mat4(ctx, "projection", &self.projection); + shader.set_mat4(ctx, "projection", if orth { &self.projection_orth } else { &self.projection }); shader.set_mat4(ctx, "view", &self.view()); shader.set_vec3( ctx, "light_ambient_color", @@ -381,12 +391,12 @@ impl State { } pub fn bind_3d_no_point_lights(&mut self, ctx: &context::Context, shader: &shader::Shader) { - self.bind_3d_helper(ctx, shader, 0); + self.bind_3d_helper(ctx, shader, 0, false); } - pub fn bind_3d(&mut self, ctx: &context::Context, shader: &shader::Shader) { + pub fn bind_3d_with_point_lights(&mut self, ctx: &context::Context, shader: &shader::Shader, orth: bool) { let plc = self.point_lights.len().min(5); - self.bind_3d_helper(ctx, shader, plc); + self.bind_3d_helper(ctx, shader, plc, orth); if plc > 0 { let lpos: Vec<_> = self.point_lights.iter().take(plc).map(|l| l.pos).collect(); shader.set_vec3_array( @@ -406,6 +416,14 @@ impl State { } } + pub fn bind_3d(&mut self, ctx: &context::Context, shader: &shader::Shader) { + self.bind_3d_with_point_lights(ctx, shader, false) + } + + pub fn bind_3d_orth(&mut self, ctx: &context::Context, shader: &shader::Shader) { + self.bind_3d_with_point_lights(ctx, shader, true) + } + pub fn bind_2d(&mut self, ctx: &context::Context, shader: &shader::Shader) { shader.bind(ctx); shader.set_mat4(&ctx, "projection", &glam::Mat4::IDENTITY); @@ -536,7 +554,7 @@ impl State { self.shader_upscale.bind(&ctx); self.render_framebuffer.bind_texture(&ctx); ctx.render_no_geometry(); - #[cfg(debug_assertions)] + #[cfg(all(debug_assertions, not(target_arch = "wasm32")))] { let err = unsafe { ctx.gl.get_error() }; if err != glow::NO_ERROR { diff --git a/crates/teleia_macros/Cargo.toml b/crates/teleia_macros/Cargo.toml index a3d4fe6..eb8cfd7 100644 --- a/crates/teleia_macros/Cargo.toml +++ b/crates/teleia_macros/Cargo.toml @@ -8,7 +8,7 @@ authors.workspace = true proc-macro = true [dependencies] -env = "*" -walkdir = "*" -heck = "*" -litrs = "*" \ No newline at end of file +env = "1.0.1" +walkdir = "2.5.0" +heck = "0.5.0" +litrs = "1.0.0" \ No newline at end of file -- cgit v1.2.3