summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2026-04-17 15:12:12 -0400
committerLLLL Colonq <llll@colonq>2026-04-17 15:12:12 -0400
commit861b188f35ccec1f67a865e939c4e6d6047f8709 (patch)
treee89d3fd105868bec56ab2d5a6696ab8bc218340e
parentaaa4e735b667ae20f33366f162bb1f7be84b4e91 (diff)
Update
-rw-r--r--Cargo.lock390
-rw-r--r--crates/teleia/Cargo.toml36
-rw-r--r--crates/teleia/src/assets/shaders/uber/frag.glsl2
-rw-r--r--crates/teleia/src/assets/shaders/uber/vert.glsl7
-rw-r--r--crates/teleia/src/context.rs2
-rw-r--r--crates/teleia/src/renderer.rs30
-rw-r--r--crates/teleia/src/state.rs30
-rw-r--r--crates/teleia_macros/Cargo.toml8
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",
]
@@ -519,29 +505,6 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -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",
@@ -860,28 +823,6 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1042,12 +983,6 @@ dependencies = [
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
@@ -1058,6 +993,12 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1074,6 +1015,12 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -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"
@@ -1276,6 +1224,12 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -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",
]
@@ -1344,6 +1298,16 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -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]]
@@ -1783,6 +1747,12 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -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",
]
@@ -1831,12 +1801,6 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1873,36 +1837,6 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2007,34 +1941,30 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2110,12 +2040,6 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -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",
@@ -2209,16 +2143,6 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2255,7 +2179,7 @@ dependencies = [
"libc",
"log",
"memmap2",
- "rustix",
+ "rustix 0.38.31",
"thiserror 1.0.57",
"wayland-backend",
"wayland-client",
@@ -2323,17 +2247,6 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2440,15 +2353,6 @@ dependencies = [
]
[[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"
dependencies = [
@@ -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",
]
@@ -2590,21 +2493,6 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2699,12 +2587,6 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2730,48 +2612,12 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -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",
]
@@ -3449,18 +3295,6 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -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<A: Assets> { None, Uber(UberFlags, ShaderMode), Shader(A::Shader, ShaderMode) }
impl<A: Assets> PartialEq for BoundShader<A> {
@@ -76,7 +77,7 @@ impl<A: Assets> Renderer<A> {
pub fn new<F>(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<A: Assets> Renderer<A> {
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<A: Assets> Renderer<A> {
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<A: Assets> Renderer<A> {
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<A: Assets> Renderer<A> {
}
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<audio::Assets>,
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<PointLight>,
@@ -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