From 9c8519c57013cad21184e66f38a2450e87b75271 Mon Sep 17 00:00:00 2001 From: Benjamin Hansen Date: Sat, 4 Jul 2026 20:41:29 -0600 Subject: [PATCH 1/3] code running --- Cargo.lock | 1515 +++++++++-------- Cargo.toml | 2 +- code/beginner/tutorial1-window/Cargo.toml | 4 +- code/beginner/tutorial2-surface/Cargo.toml | 4 +- .../tutorial2-surface/src/challenge.rs | 4 +- code/beginner/tutorial2-surface/src/lib.rs | 4 +- code/beginner/tutorial3-pipeline/Cargo.toml | 4 +- .../tutorial3-pipeline/src/challenge.rs | 4 +- code/beginner/tutorial3-pipeline/src/lib.rs | 4 +- code/beginner/tutorial4-buffer/Cargo.toml | 4 +- .../tutorial4-buffer/src/challenge.rs | 6 +- code/beginner/tutorial4-buffer/src/lib.rs | 6 +- code/beginner/tutorial5-textures/Cargo.toml | 4 +- .../tutorial5-textures/src/challenge.rs | 6 +- code/beginner/tutorial5-textures/src/lib.rs | 6 +- code/beginner/tutorial6-uniforms/Cargo.toml | 4 +- .../tutorial6-uniforms/src/challenge.rs | 6 +- code/beginner/tutorial6-uniforms/src/lib.rs | 6 +- code/beginner/tutorial7-instancing/Cargo.toml | 4 +- .../tutorial7-instancing/src/challenge.rs | 6 +- code/beginner/tutorial7-instancing/src/lib.rs | 6 +- code/beginner/tutorial8-depth/Cargo.toml | 4 +- .../beginner/tutorial8-depth/src/challenge.rs | 8 +- code/beginner/tutorial8-depth/src/lib.rs | 6 +- code/beginner/tutorial9-models/Cargo.toml | 4 +- code/beginner/tutorial9-models/src/lib.rs | 6 +- code/compute/Cargo.toml | 4 +- code/compute/src/filter.rs | 2 +- code/compute/src/introduction.rs | 2 +- code/compute/src/sort.rs | 2 +- .../tutorial10-lighting/Cargo.toml | 4 +- .../tutorial10-lighting/src/lib.rs | 10 +- .../tutorial11-normals/Cargo.toml | 4 +- .../tutorial11-normals/src/lib.rs | 10 +- .../intermediate/tutorial12-camera/Cargo.toml | 4 +- .../intermediate/tutorial12-camera/src/lib.rs | 10 +- code/intermediate/tutorial13-hdr/Cargo.toml | 2 +- code/intermediate/tutorial13-hdr/src/lib.rs | 10 +- code/intermediate/wip-terrain/Cargo.toml | 4 +- code/intermediate/wip-terrain/src/lib.rs | 10 +- .../intermediate/wip-terrain/src/resources.rs | 2 +- code/intermediate/wip-terrain/src/terrain.rs | 4 +- code/showcase/compute/Cargo.toml | 4 +- code/showcase/compute/src/main.rs | 8 +- code/showcase/compute/src/pipeline.rs | 2 +- code/showcase/framework/Cargo.toml | 2 +- code/showcase/framework/src/camera.rs | 6 +- code/showcase/framework/src/lib.rs | 2 + code/showcase/framework/src/pipeline.rs | 6 +- code/showcase/gifs/Cargo.toml | 2 +- code/showcase/gifs/src/main.rs | 2 +- code/showcase/imgui-demo/Cargo.toml | 4 +- code/showcase/mipmaps/src/main.rs | 2 +- code/showcase/mouse-picking/Cargo.toml | 4 +- code/showcase/offscreen/Cargo.toml | 2 +- code/showcase/pong/Cargo.toml | 6 +- code/showcase/pong/src/render/mod.rs | 6 +- code/showcase/snow/src/main.rs | 4 +- code/showcase/stencil/src/main.rs | 2 +- code/showcase/text/src/font.rs | 7 +- code/showcase/text/src/main.rs | 4 +- code/showcase/threading/Cargo.toml | 4 +- code/showcase/threading/src/lib.rs | 10 +- code/showcase/windowless/Cargo.toml | 2 +- code/showcase/windowless/src/main.rs | 3 +- docs/beginner/tutorial2-surface/README.md | 4 +- docs/beginner/tutorial7-instancing/README.md | 2 +- docs/beginner/tutorial9-models/README.md | 2 +- docs/compute/introduction/readme.md | 2 +- .../tutorial10-lighting/README.md | 6 +- docs/intermediate/tutorial13-hdr/readme.md | 4 +- docs/news/0.13/readme.md | 4 +- docs/news/30.0/readme.md | 6 + docs/news/pre-0.12/readme.md | 2 +- docs/showcase/windowless/README.md | 2 +- run-all.sh | 57 +- 76 files changed, 1022 insertions(+), 884 deletions(-) create mode 100644 docs/news/30.0/readme.md diff --git a/Cargo.lock b/Cargo.lock index 94a8fd571..d6bb8651e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -58,23 +58,21 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android-activity" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" +checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd" dependencies = [ "android-properties", - "bitflags 2.10.0", + "bitflags 2.13.0", "cc", - "cesu8", "jni", - "jni-sys", "libc", - "log 0.4.29", + "log 0.4.33", "ndk", "ndk-context", "ndk-sys", "num_enum", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] @@ -94,9 +92,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.21" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -109,15 +107,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] @@ -144,9 +142,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.100" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" [[package]] name = "approx" @@ -165,9 +163,9 @@ checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "as-raw-xcb-connection" @@ -209,9 +207,9 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.3" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" +checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a" dependencies = [ "async-task", "concurrent-queue", @@ -260,7 +258,7 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix 1.1.2", + "rustix 1.1.4", "slab", "windows-sys 0.61.2", ] @@ -293,7 +291,7 @@ dependencies = [ "futures-lite", "gloo-timers", "kv-log-macro", - "log 0.4.29", + "log 0.4.33", "memchr", "once_cell", "pin-project-lite", @@ -316,15 +314,15 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "aws-lc-rs" -version = "1.15.4" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b7b6141e96a8c160799cc2d5adecd5cbbe5054cb8c7c4af53da0f83bb7ad256" +checksum = "4342d8937fc7e5dd9b1c60292261c0670c882a2cd1719cfc11b1af41731e32ad" dependencies = [ "aws-lc-sys", "zeroize", @@ -332,14 +330,15 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.37.0" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c34dda4df7017c8db52132f0f8a2e0f8161649d15723ed63fc00c82d0f2081a" +checksum = "6d9ceb1da931507a12f4fccea479dccd00da1943e1b4ae72d8e502d707361444" dependencies = [ "cc", "cmake", "dunce", "fs_extra", + "pkg-config", ] [[package]] @@ -363,6 +362,15 @@ dependencies = [ "bit-vec", ] +[[package]] +name = "bit-set" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2f926cc3060f09db9ebc5b52823d85268d24bb917e472c0c4bea35780a7d" +dependencies = [ + "bit-vec", +] + [[package]] name = "bit-vec" version = "0.9.1" @@ -383,9 +391,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.10.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" [[package]] name = "block2" @@ -420,15 +428,15 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.19.1" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" -version = "1.24.0" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" dependencies = [ "bytemuck_derive", ] @@ -462,9 +470,9 @@ dependencies = [ [[package]] name = "bytes" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593" [[package]] name = "calloop" @@ -472,8 +480,8 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "bitflags 2.10.0", - "log 0.4.29", + "bitflags 2.13.0", + "log 0.4.33", "polling", "rustix 0.38.44", "slab", @@ -505,9 +513,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.50" +version = "1.2.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f50d563227a1c37cc0a263f64eca3334388c01c5e4c4861a9def205c614383c" +checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" dependencies = [ "find-msvc-tools", "jobserver", @@ -515,12 +523,6 @@ dependencies = [ "shlex", ] -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - [[package]] name = "cfg-if" version = "1.0.4" @@ -545,9 +547,9 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.57" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" +checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" dependencies = [ "cc", ] @@ -571,9 +573,9 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "colorchoice" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "combine" @@ -581,7 +583,7 @@ version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ - "bytes 1.11.0", + "bytes 1.12.0", "memchr", ] @@ -594,10 +596,10 @@ dependencies = [ "console_error_panic_hook", "console_log", "crossbeam", - "env_logger 0.11.8", + "env_logger 0.11.11", "flume", "glam", - "log 0.4.29", + "log 0.4.33", "pollster 0.4.0", "wasm-bindgen", "wasm-bindgen-futures", @@ -617,8 +619,8 @@ dependencies = [ "glob", "image", "instant", - "log 0.4.29", - "naga", + "log 0.4.33", + "naga 29.0.4", "pollster 0.3.0", "rayon", "tobj 2.0.4", @@ -651,7 +653,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be8aed40e4edbf4d3b4431ab260b63fdc40f5780a4766824329ea0f1eefe3c0f" dependencies = [ - "log 0.4.29", + "log 0.4.33", "web-sys", ] @@ -782,13 +784,44 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" +[[package]] +name = "defmt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" +dependencies = [ + "bitflags 1.3.2", + "defmt-macros", +] + +[[package]] +name = "defmt-macros" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" +dependencies = [ + "defmt-parser", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "defmt-parser" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" +dependencies = [ + "thiserror 2.0.18", +] + [[package]] name = "demo_server" version = "0.1.0" dependencies = [ "anyhow", - "env_logger 0.11.8", - "log 0.4.29", + "env_logger 0.11.11", + "log 0.4.33", "simple-server", ] @@ -810,15 +843,15 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "objc2 0.6.4", ] [[package]] name = "displaydoc" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" dependencies = [ "proc-macro2", "quote", @@ -827,9 +860,9 @@ dependencies = [ [[package]] name = "dlib" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +checksum = "ab8ecd87370524b461f8557c119c405552c396ed91fc0a8eec68679eab26f94a" dependencies = [ "libloading", ] @@ -863,9 +896,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "encoding_rs" @@ -878,11 +911,11 @@ dependencies = [ [[package]] name = "env_filter" -version = "0.1.4" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" +checksum = "900d271a03799a1ee8d1ca9b19893b48ca674a9284fefcfb85f05e74ed314217" dependencies = [ - "log 0.4.29", + "log 0.4.33", "regex", ] @@ -894,22 +927,22 @@ checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" dependencies = [ "humantime", "is-terminal", - "log 0.4.29", + "log 0.4.33", "regex", "termcolor", ] [[package]] name = "env_logger" -version = "0.11.8" +version = "0.11.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" +checksum = "de671bd27a75a797dc9ae289ba1e77276e75e2026408aab65185384e2d5cd3f6" dependencies = [ "anstream", "anstyle", "env_filter", "jiff", - "log 0.4.29", + "log 0.4.33", ] [[package]] @@ -972,15 +1005,15 @@ dependencies = [ [[package]] name = "fallible-iterator" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] name = "fastrand" -version = "2.3.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" [[package]] name = "fdeflate" @@ -993,9 +1026,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.5" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixedbitset" @@ -1005,9 +1038,9 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.1.5" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" dependencies = [ "crc32fast", "miniz_oxide", @@ -1116,17 +1149,17 @@ dependencies = [ "console_log", "env_logger 0.10.2", "fs_extra", - "getrandom 0.2.16", + "getrandom 0.2.17", "glam", "glob", "image", "instant", - "log 0.4.29", - "naga", + "log 0.4.33", + "naga 29.0.4", "pollster 0.3.0", - "rand 0.8.5", + "rand 0.8.6", "rayon", - "reqwest 0.13.1", + "reqwest 0.13.4", "slotmap", "thiserror 1.0.69", "tobj 3.2.5", @@ -1145,24 +1178,24 @@ checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" [[package]] name = "futures-channel" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-io" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" [[package]] name = "futures-lite" @@ -1179,26 +1212,25 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ "futures-core", "futures-task", "pin-project-lite", - "pin-utils", "slab", ] @@ -1208,15 +1240,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" dependencies = [ - "rustix 1.1.2", + "rustix 1.1.4", "windows-link", ] [[package]] name = "getrandom" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "js-sys", @@ -1234,11 +1266,22 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "r-efi", + "r-efi 5.3.0", "wasip2", "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", +] + [[package]] name = "gif" version = "0.11.4" @@ -1271,7 +1314,7 @@ dependencies = [ "framework", "gif 0.11.4", "image", - "log 0.4.29", + "log 0.4.33", "pollster 0.3.0", "tobj 3.2.5", "wgpu", @@ -1280,12 +1323,12 @@ dependencies = [ [[package]] name = "gimli" -version = "0.26.2" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" dependencies = [ "fallible-iterator", - "indexmap 1.9.3", + "indexmap", "stable_deref_trait", ] @@ -1296,15 +1339,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" dependencies = [ "khronos_api", - "log 0.4.29", + "log 0.4.33", "xml-rs", ] [[package]] name = "glam" -version = "0.30.9" +version = "0.30.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd47b05dddf0005d850e5644cae7f2b14ac3df487979dbfff3b56f20b1a6ae46" +checksum = "19fc433e8437a212d1b6f1e68c7824af3aed907da60afa994e7f542d18d12aa9" dependencies = [ "bytemuck", ] @@ -1356,45 +1399,25 @@ checksum = "51255ea7cfaadb6c5f1528d43e92a82acb2b96c43365989a28b2d44ee38f8795" dependencies = [ "ash", "hashbrown 0.16.1", - "log 0.4.29", + "log 0.4.33", "presser", - "thiserror 2.0.17", + "thiserror 2.0.18", "windows", ] -[[package]] -name = "gpu-descriptor" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" -dependencies = [ - "bitflags 2.10.0", - "gpu-descriptor-types", - "hashbrown 0.15.5", -] - -[[package]] -name = "gpu-descriptor-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" -dependencies = [ - "bitflags 2.10.0", -] - [[package]] name = "h2" version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" dependencies = [ - "bytes 1.11.0", + "bytes 1.12.0", "fnv", "futures-core", "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.12.1", + "indexmap", "slab", "tokio", "tokio-util", @@ -1403,17 +1426,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.13" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" +checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155" dependencies = [ "atomic-waker", - "bytes 1.11.0", + "bytes 1.12.0", "fnv", "futures-core", "futures-sink", - "http 1.4.0", - "indexmap 2.12.1", + "http 1.4.2", + "indexmap", "slab", "tokio", "tokio-util", @@ -1432,12 +1455,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.15.5" @@ -1447,7 +1464,6 @@ dependencies = [ "allocator-api2", "equivalent", "foldhash 0.1.5", - "serde", ] [[package]] @@ -1459,6 +1475,17 @@ dependencies = [ "allocator-api2", "equivalent", "foldhash 0.2.0", + "serde", + "serde_core", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +dependencies = [ + "foldhash 0.2.0", ] [[package]] @@ -1473,12 +1500,6 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" -[[package]] -name = "hexf-parse" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" - [[package]] name = "http" version = "0.1.21" @@ -1496,19 +1517,19 @@ version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ - "bytes 1.11.0", + "bytes 1.12.0", "fnv", - "itoa 1.0.16", + "itoa 1.0.18", ] [[package]] name = "http" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" dependencies = [ - "bytes 1.11.0", - "itoa 1.0.16", + "bytes 1.12.0", + "itoa 1.0.18", ] [[package]] @@ -1517,7 +1538,7 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ - "bytes 1.11.0", + "bytes 1.12.0", "http 0.2.12", "pin-project-lite", ] @@ -1528,8 +1549,8 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ - "bytes 1.11.0", - "http 1.4.0", + "bytes 1.12.0", + "http 1.4.2", ] [[package]] @@ -1538,9 +1559,9 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ - "bytes 1.11.0", + "bytes 1.12.0", "futures-core", - "http 1.4.0", + "http 1.4.2", "http-body 1.0.1", "pin-project-lite", ] @@ -1559,9 +1580,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" +checksum = "15cdd26707701c53297e2fa6afb323d55fbc1d0810c3aec078ae3ef0424c3c15" [[package]] name = "hyper" @@ -1569,7 +1590,7 @@ version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ - "bytes 1.11.0", + "bytes 1.12.0", "futures-channel", "futures-core", "futures-util", @@ -1578,7 +1599,7 @@ dependencies = [ "http-body 0.4.6", "httparse", "httpdate", - "itoa 1.0.16", + "itoa 1.0.18", "pin-project-lite", "socket2 0.5.10", "tokio", @@ -1589,21 +1610,20 @@ dependencies = [ [[package]] name = "hyper" -version = "1.8.1" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" dependencies = [ "atomic-waker", - "bytes 1.11.0", + "bytes 1.12.0", "futures-channel", "futures-core", - "h2 0.4.13", - "http 1.4.0", + "h2 0.4.15", + "http 1.4.2", "http-body 1.0.1", "httparse", - "itoa 1.0.16", + "itoa 1.0.18", "pin-project-lite", - "pin-utils", "smallvec", "tokio", "want", @@ -1611,15 +1631,14 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.7" +version = "0.27.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" dependencies = [ - "http 1.4.0", - "hyper 1.8.1", + "http 1.4.2", + "hyper 1.10.1", "hyper-util", "rustls", - "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", @@ -1631,7 +1650,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ - "bytes 1.11.0", + "bytes 1.12.0", "hyper 0.14.32", "native-tls", "tokio", @@ -1640,24 +1659,23 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" dependencies = [ "base64 0.22.1", - "bytes 1.11.0", + "bytes 1.12.0", "futures-channel", - "futures-core", "futures-util", - "http 1.4.0", + "http 1.4.2", "http-body 1.0.1", - "hyper 1.8.1", + "hyper 1.10.1", "ipnet", "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.3", - "system-configuration", + "socket2 0.6.4", + "system-configuration 0.7.0", "tokio", "tower-service", "tracing", @@ -1666,12 +1684,13 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" dependencies = [ "displaydoc", "potential_utf", + "utf8_iter", "yoke", "zerofrom", "zerovec", @@ -1679,9 +1698,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" dependencies = [ "displaydoc", "litemap", @@ -1692,9 +1711,9 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" dependencies = [ "icu_collections", "icu_normalizer_data", @@ -1706,15 +1725,15 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" [[package]] name = "icu_properties" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" dependencies = [ "icu_collections", "icu_locale_core", @@ -1726,15 +1745,15 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" [[package]] name = "icu_provider" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" dependencies = [ "displaydoc", "icu_locale_core", @@ -1747,9 +1766,9 @@ dependencies = [ [[package]] name = "id-arena" -version = "2.2.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" dependencies = [ "rayon", ] @@ -1767,9 +1786,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" dependencies = [ "icu_normalizer", "icu_properties", @@ -1795,22 +1814,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.3" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - -[[package]] -name = "indexmap" -version = "2.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", "serde", "serde_core", ] @@ -1838,19 +1847,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" - -[[package]] -name = "iri-string" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" -dependencies = [ - "memchr", - "serde", -] +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" [[package]] name = "is-terminal" @@ -1877,18 +1876,19 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "itoa" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee5b5339afb4c41626dde77b7a611bd4f2c202b897852b4bcf5d03eddc61010" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jiff" -version = "0.2.16" +version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35" +checksum = "ccfe6121cbe750cf81efa362d85c0bde7ea298ec43092d3a193baca59cdbd634" dependencies = [ + "defmt", "jiff-static", - "log 0.4.29", + "log 0.4.33", "portable-atomic", "portable-atomic-util", "serde_core", @@ -1896,9 +1896,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.16" +version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69" +checksum = "e165e897f662d428f3cd3828a919dbe067c2d42bb1031eede74ef9d27ecdedd2" dependencies = [ "proc-macro2", "quote", @@ -1907,25 +1907,61 @@ dependencies = [ [[package]] name = "jni" -version = "0.21.1" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" dependencies = [ - "cesu8", "cfg-if", "combine", - "jni-sys", - "log 0.4.29", - "thiserror 1.0.69", + "jni-macros", + "jni-sys 0.4.1", + "log 0.4.33", + "simd_cesu8", + "thiserror 2.0.18", "walkdir", - "windows-sys 0.45.0", + "windows-link", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn", ] [[package]] name = "jni-sys" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn", +] [[package]] name = "jobserver" @@ -1948,11 +1984,12 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.85" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -1979,14 +2016,14 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" dependencies = [ - "log 0.4.29", + "log 0.4.33", ] [[package]] name = "leb128" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" +checksum = "c83bff1d572d6b9aeef67ddfc8448e4a3737909cb28e81f97c791b9018703e52" [[package]] name = "leb128fmt" @@ -2018,19 +2055,20 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.11" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df15f6eac291ed1cf25865b1ee60399f57e7c227e7f51bdbd4c5270396a9ed50" +checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "libc", - "redox_syscall 0.6.0", + "plain", + "redox_syscall 0.9.0", ] [[package]] @@ -2041,15 +2079,15 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" [[package]] name = "litrs" @@ -2072,14 +2110,14 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" dependencies = [ - "log 0.4.29", + "log 0.4.33", ] [[package]] name = "log" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" dependencies = [ "value-bag", ] @@ -2092,15 +2130,15 @@ checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" [[package]] name = "memchr" -version = "2.7.6" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" [[package]] name = "memmap2" -version = "0.9.9" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" dependencies = [ "libc", ] @@ -2123,9 +2161,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" +checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" dependencies = [ "libc", "wasi 0.11.1+wasi-snapshot-preview1", @@ -2141,7 +2179,7 @@ dependencies = [ "framework", "glam", "image", - "log 0.4.29", + "log 0.4.33", "wgpu", "winit", ] @@ -2157,54 +2195,90 @@ dependencies = [ [[package]] name = "naga" -version = "29.0.0" +version = "29.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b4372fed0bd362d646d01b6926df0e837859ccc522fed720c395e0460f29c8" +checksum = "b2bf919621e7975acb27d881bae2fb993e0d45c8e0446e85e6272971e00dc8df" dependencies = [ "arrayvec", - "bit-set", - "bitflags 2.10.0", + "bit-set 0.9.1", + "bitflags 2.13.0", "cfg-if", "cfg_aliases", "codespan-reporting", "half", "hashbrown 0.16.1", - "hexf-parse", - "indexmap 2.12.1", + "indexmap", "libm", - "log 0.4.29", + "log 0.4.33", "num-traits", "once_cell", - "petgraph", "pp-rs", "rustc-hash 1.1.0", "spirv", - "thiserror 2.0.17", + "thiserror 2.0.18", +] + +[[package]] +name = "naga" +version = "30.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23bf0a141a9ab6f07dbb492db53245e464bc9db42f407772d9ae03d83a2c1033" +dependencies = [ + "arrayvec", + "bit-set 0.10.0", + "bitflags 2.13.0", + "cfg-if", + "cfg_aliases", + "codespan-reporting", + "half", + "hashbrown 0.17.1", + "indexmap", + "libm", + "log 0.4.33", + "naga-types", + "num-traits", + "once_cell", + "petgraph", + "rustc-hash 1.1.0", + "spirv", + "thiserror 2.0.18", "unicode-ident", ] +[[package]] +name = "naga-types" +version = "30.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658200ddc25c6c7b860747516d132d1b284c0fafb7a380233acee9a72fb30e11" +dependencies = [ + "hashbrown 0.17.1", + "indexmap", + "rustc-hash 1.1.0", + "thiserror 2.0.18", +] + [[package]] name = "nanorand" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", ] [[package]] name = "native-tls" -version = "0.2.14" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2" dependencies = [ "libc", - "log 0.4.29", + "log 0.4.33", "openssl", - "openssl-probe 0.1.6", + "openssl-probe", "openssl-sys", "schannel", - "security-framework 2.11.1", + "security-framework", "security-framework-sys", "tempfile", ] @@ -2215,9 +2289,9 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.10.0", - "jni-sys", - "log 0.4.29", + "bitflags 2.13.0", + "jni-sys 0.3.1", + "log 0.4.33", "ndk-sys", "num_enum", "raw-window-handle", @@ -2236,7 +2310,7 @@ version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ - "jni-sys", + "jni-sys 0.3.1", ] [[package]] @@ -2261,9 +2335,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -2271,9 +2345,9 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2312,7 +2386,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -2328,7 +2402,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", "objc2-core-location", @@ -2352,7 +2426,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2364,9 +2438,21 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", + "dispatch2", + "objc2 0.6.4", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ "dispatch2", "objc2 0.6.4", + "objc2-core-foundation", + "objc2-io-surface", ] [[package]] @@ -2405,7 +2491,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "block2 0.5.1", "dispatch", "libc", @@ -2418,7 +2504,18 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", + "objc2 0.6.4", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags 2.13.0", "objc2 0.6.4", "objc2-core-foundation", ] @@ -2441,7 +2538,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2453,7 +2550,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "block2 0.6.2", "objc2 0.6.4", "objc2-foundation 0.3.2", @@ -2465,7 +2562,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2478,9 +2575,10 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "objc2 0.6.4", "objc2-core-foundation", + "objc2-core-graphics", "objc2-foundation 0.3.2", "objc2-metal 0.3.2", ] @@ -2501,7 +2599,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", "objc2-cloud-kit", @@ -2533,7 +2631,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "block2 0.5.1", "objc2 0.5.2", "objc2-core-location", @@ -2554,9 +2652,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "once_cell_polyfill" @@ -2566,15 +2664,14 @@ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "openssl" -version = "0.10.75" +version = "0.10.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" +checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "cfg-if", "foreign-types 0.3.2", "libc", - "once_cell", "openssl-macros", "openssl-sys", ] @@ -2590,12 +2687,6 @@ dependencies = [ "syn", ] -[[package]] -name = "openssl-probe" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" - [[package]] name = "openssl-probe" version = "0.2.1" @@ -2604,9 +2695,9 @@ checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" [[package]] name = "openssl-sys" -version = "0.9.111" +version = "0.9.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" +checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695" dependencies = [ "cc", "libc", @@ -2616,18 +2707,19 @@ dependencies = [ [[package]] name = "orbclient" -version = "0.3.49" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "247ad146e19b9437f8604c21f8652423595cf710ad108af40e77d3ae6e96b827" +checksum = "5df339f526ea9a60e371768d50efc2f2508c7203290731565d1f7a6f71d21747" dependencies = [ + "libc", "libredox", ] [[package]] name = "ordered-float" -version = "5.0.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2c1f9f56e534ac6a9b8a4600bdf0f530fb393b5f393e7b4d03489c3cf0c3f01" +checksum = "b7d950ca161dc355eaf28f82b11345ed76c6e1f6eb1f4f4479e0323b9e2fbd0e" dependencies = [ "num-traits", ] @@ -2684,7 +2776,7 @@ checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ "fixedbitset", "hashbrown 0.15.5", - "indexmap 2.12.1", + "indexmap", ] [[package]] @@ -2695,18 +2787,18 @@ checksum = "db8bcd96cb740d03149cbad5518db9fd87126a10ab519c011893b1754134c468" [[package]] name = "pin-project" -version = "1.1.10" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.10" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2", "quote", @@ -2715,9 +2807,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pin-utils" @@ -2727,9 +2819,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1" dependencies = [ "atomic-waker", "fastrand", @@ -2738,9 +2830,15 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "png" @@ -2765,7 +2863,7 @@ dependencies = [ "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 1.1.2", + "rustix 1.1.4", "windows-sys 0.61.2", ] @@ -2783,24 +2881,24 @@ checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" [[package]] name = "portable-atomic" -version = "1.12.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f59e70c4aef1e55797c2e8fd94a4f2a973fc972cfde0e0b05f683667b0cd39dd" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] name = "portable-atomic-util" -version = "0.2.4" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" dependencies = [ "portable-atomic", ] [[package]] name = "potential_utf" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" dependencies = [ "zerovec", ] @@ -2831,27 +2929,27 @@ checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" [[package]] name = "proc-macro-crate" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ "toml_edit", ] [[package]] name = "proc-macro2" -version = "1.0.103" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] [[package]] name = "profiling" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" +checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5" [[package]] name = "qoi" @@ -2864,28 +2962,28 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.37.5" +version = "0.39.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +checksum = "cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e" dependencies = [ "memchr", ] [[package]] name = "quinn" -version = "0.11.9" +version = "0.11.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +checksum = "0c1a41e437b6bbd489372cd4971de128e85c855f56c57f283d20ff016cf7c0a8" dependencies = [ - "bytes 1.11.0", + "bytes 1.12.0", "cfg_aliases", "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.1.1", + "rustc-hash 2.1.3", "rustls", - "socket2 0.6.3", - "thiserror 2.0.17", + "socket2 0.6.4", + "thiserror 2.0.18", "tokio", "tracing", "web-time", @@ -2893,21 +2991,21 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.13" +version = "0.11.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +checksum = "4fcb935c5bec503c2f0e306bdd3e58bb9029dcb14fa8d9ac76e3a5256ac0763e" dependencies = [ "aws-lc-rs", - "bytes 1.11.0", + "bytes 1.12.0", "getrandom 0.3.4", "lru-slab", - "rand 0.9.2", + "rand 0.9.4", "ring", - "rustc-hash 2.1.1", + "rustc-hash 2.1.3", "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.17", + "thiserror 2.0.18", "tinyvec", "tracing", "web-time", @@ -2922,16 +3020,16 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.3", + "socket2 0.6.4", "tracing", "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.42" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] @@ -2942,11 +3040,17 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "rand" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" dependencies = [ "libc", "rand_chacha 0.3.1", @@ -2955,9 +3059,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.5", @@ -2989,7 +3093,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", ] [[package]] @@ -3003,9 +3107,9 @@ dependencies = [ [[package]] name = "range-alloc" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" +checksum = "ca45419789ae5a7899559e9512e58ca889e41f04f1f2445e9f4b290ceccd1d08" [[package]] name = "raw-window-handle" @@ -3027,9 +3131,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" dependencies = [ "either", "rayon-core", @@ -3060,23 +3164,23 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", ] [[package]] name = "redox_syscall" -version = "0.6.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec96166dafa0886eb81fe1c0a388bece180fbef2135f97c1e2cf8302e74b43b5" +checksum = "c5102a6aaa05aa011a238e178e6bca86d2cb56fc9f586d37cb80f5bca6e07759" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", ] [[package]] name = "regex" -version = "1.12.2" +version = "1.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" dependencies = [ "aho-corasick", "memchr", @@ -3086,9 +3190,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" dependencies = [ "aho-corasick", "memchr", @@ -3097,9 +3201,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.8" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "renderdoc-sys" @@ -3114,7 +3218,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ "base64 0.21.7", - "bytes 1.11.0", + "bytes 1.12.0", "encoding_rs", "futures-core", "futures-util", @@ -3125,7 +3229,7 @@ dependencies = [ "hyper-tls", "ipnet", "js-sys", - "log 0.4.29", + "log 0.4.33", "mime", "native-tls", "once_cell", @@ -3136,7 +3240,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "sync_wrapper 0.1.2", - "system-configuration", + "system-configuration 0.5.1", "tokio", "tokio-native-tls", "tower-service", @@ -3149,23 +3253,23 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.13.1" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04e9018c9d814e5f30cc16a0f03271aeab3571e609612d9fe78c1aa8d11c2f62" +checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3" dependencies = [ "base64 0.22.1", - "bytes 1.11.0", + "bytes 1.12.0", "encoding_rs", "futures-core", - "h2 0.4.13", - "http 1.4.0", + "h2 0.4.15", + "http 1.4.2", "http-body 1.0.1", "http-body-util", - "hyper 1.8.1", + "hyper 1.10.1", "hyper-rustls", "hyper-util", "js-sys", - "log 0.4.29", + "log 0.4.33", "mime", "percent-encoding", "pin-project-lite", @@ -3193,7 +3297,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.16", + "getrandom 0.2.17", "libc", "untrusted", "windows-sys 0.52.0", @@ -3208,9 +3312,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" +checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" [[package]] name = "rustc-hash" @@ -3220,9 +3324,18 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" + +[[package]] +name = "rustc_version" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] [[package]] name = "rustix" @@ -3230,7 +3343,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "errno", "libc", "linux-raw-sys 0.4.15", @@ -3239,22 +3352,22 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.2" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "errno", "libc", - "linux-raw-sys 0.11.0", + "linux-raw-sys 0.12.1", "windows-sys 0.61.2", ] [[package]] name = "rustls" -version = "0.23.36" +version = "0.23.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" +checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f" dependencies = [ "aws-lc-rs", "once_cell", @@ -3266,14 +3379,14 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" +checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d" dependencies = [ - "openssl-probe 0.2.1", + "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.5.1", + "security-framework", ] [[package]] @@ -3287,9 +3400,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +checksum = "764899a24af3980067ee14bc143654f297b22eaebfe3c7b6b211920a5a59b046" dependencies = [ "web-time", "zeroize", @@ -3297,20 +3410,20 @@ dependencies = [ [[package]] name = "rustls-platform-verifier" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784" +checksum = "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0" dependencies = [ "core-foundation 0.10.1", "core-foundation-sys", "jni", - "log 0.4.29", + "log 0.4.33", "once_cell", "rustls", "rustls-native-certs", "rustls-platform-verifier-android", "rustls-webpki", - "security-framework 3.5.1", + "security-framework", "security-framework-sys", "webpki-root-certs", "windows-sys 0.61.2", @@ -3324,9 +3437,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.9" +version = "0.103.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" +checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" dependencies = [ "aws-lc-rs", "ring", @@ -3342,9 +3455,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62049b2877bf12821e8f9ad256ee38fdc31db7387ec2d3b3f403024de2034aea" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] name = "same-file" @@ -3357,9 +3470,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" dependencies = [ "windows-sys 0.61.2", ] @@ -3389,7 +3502,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" dependencies = [ "ab_glyph", - "log 0.4.29", + "log 0.4.33", "memmap2", "smithay-client-toolkit", "tiny-skia", @@ -3397,24 +3510,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.11.1" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ - "bitflags 2.10.0", - "core-foundation 0.9.4", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework" -version = "3.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" -dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -3423,9 +3523,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.15.0" +version = "2.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" dependencies = [ "core-foundation-sys", "libc", @@ -3433,9 +3533,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" [[package]] name = "serde" @@ -3469,15 +3569,15 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.145" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ - "itoa 1.0.16", + "itoa 1.0.18", "memchr", - "ryu", "serde", "serde_core", + "zmij", ] [[package]] @@ -3487,22 +3587,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.16", + "itoa 1.0.18", "ryu", "serde", ] [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "simd-adler32" -version = "0.3.8" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" + +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +dependencies = [ + "rustc_version", + "simdutf8", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "simple-server" @@ -3520,9 +3636,9 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "slotmap" @@ -3535,9 +3651,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smithay-client-toolkit" @@ -3545,12 +3661,12 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "calloop", "calloop-wayland-source", "cursor-icon", "libc", - "log 0.4.29", + "log 0.4.33", "memmap2", "rustix 0.38.44", "thiserror 1.0.69", @@ -3598,9 +3714,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" +checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" dependencies = [ "libc", "windows-sys 0.61.2", @@ -3621,7 +3737,7 @@ version = "0.4.0+sdk-1.4.341.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9571ea910ebd84c86af4b3ed27f9dbdc6ad06f17c5f96146b2b671e2976744f" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", ] [[package]] @@ -3647,7 +3763,7 @@ dependencies = [ "env_logger 0.10.2", "framework", "glam", - "log 0.4.29", + "log 0.4.33", "reqwest 0.11.27", "web-time", "wgpu", @@ -3668,9 +3784,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.111" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -3711,7 +3827,18 @@ checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ "bitflags 1.3.2", "core-foundation 0.9.4", - "system-configuration-sys", + "system-configuration-sys 0.5.0", +] + +[[package]] +name = "system-configuration" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" +dependencies = [ + "bitflags 2.13.0", + "core-foundation 0.9.4", + "system-configuration-sys 0.6.0", ] [[package]] @@ -3724,16 +3851,26 @@ dependencies = [ "libc", ] +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tempfile" -version = "3.23.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.3.4", + "getrandom 0.4.3", "once_cell", - "rustix 1.1.2", + "rustix 1.1.4", "windows-sys 0.61.2", ] @@ -3771,11 +3908,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.17", + "thiserror-impl 2.0.18", ] [[package]] @@ -3791,9 +3928,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", @@ -3815,7 +3952,7 @@ dependencies = [ "glob", "image", "instant", - "log 0.4.29", + "log 0.4.33", "pollster 0.3.0", "rayon", "reqwest 0.11.27", @@ -3859,7 +3996,7 @@ dependencies = [ "arrayvec", "bytemuck", "cfg-if", - "log 0.4.29", + "log 0.4.33", "tiny-skia-path", ] @@ -3876,9 +4013,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" dependencies = [ "displaydoc", "zerovec", @@ -3886,9 +4023,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" dependencies = [ "tinyvec_macros", ] @@ -3913,15 +4050,15 @@ checksum = "57381207291289bad19de63acd3fbf5948ff99b2868116c367b7224c37d55f90" [[package]] name = "tokio" -version = "1.52.1" +version = "1.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67dee974fe86fd92cc45b7a95fdd2f99a36a6d7b0d431a231178d3d670bbcc6" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" dependencies = [ - "bytes 1.11.0", + "bytes 1.12.0", "libc", "mio", "pin-project-lite", - "socket2 0.6.3", + "socket2 0.6.4", "windows-sys 0.61.2", ] @@ -3947,11 +4084,11 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.17" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ - "bytes 1.11.0", + "bytes 1.12.0", "futures-core", "futures-sink", "pin-project-lite", @@ -3960,20 +4097,20 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.5+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_edit" -version = "0.23.10+spec-1.0.0" +version = "0.25.12+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7" dependencies = [ - "indexmap 2.12.1", + "indexmap", "toml_datetime", "toml_parser", "winnow", @@ -3981,9 +4118,9 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.0.6+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ "winnow", ] @@ -4005,20 +4142,20 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" dependencies = [ - "bitflags 2.10.0", - "bytes 1.11.0", + "bitflags 2.13.0", + "bytes 1.12.0", "futures-util", - "http 1.4.0", + "http 1.4.2", "http-body 1.0.1", - "iri-string", "pin-project-lite", "tower", "tower-layer", "tower-service", + "url", ] [[package]] @@ -4078,7 +4215,7 @@ dependencies = [ "console_error_panic_hook", "console_log", "env_logger 0.10.2", - "log 0.4.29", + "log 0.4.33", "pollster 0.3.0", "wasm-bindgen", "wasm-bindgen-futures", @@ -4100,7 +4237,7 @@ dependencies = [ "fs_extra", "glob", "image", - "log 0.4.29", + "log 0.4.33", "pollster 0.3.0", "reqwest 0.11.27", "tobj 3.2.5", @@ -4124,7 +4261,7 @@ dependencies = [ "fs_extra", "glob", "image", - "log 0.4.29", + "log 0.4.33", "pollster 0.3.0", "reqwest 0.11.27", "tobj 3.2.5", @@ -4149,7 +4286,7 @@ dependencies = [ "glob", "image", "instant", - "log 0.4.29", + "log 0.4.33", "pollster 0.3.0", "reqwest 0.11.27", "tobj 3.2.5", @@ -4174,7 +4311,7 @@ dependencies = [ "glob", "image", "instant", - "log 0.4.29", + "log 0.4.33", "pollster 0.3.0", "reqwest 0.11.27", "tobj 3.2.5", @@ -4193,7 +4330,7 @@ dependencies = [ "console_error_panic_hook", "console_log", "env_logger 0.10.2", - "log 0.4.29", + "log 0.4.33", "pollster 0.3.0", "wasm-bindgen", "wasm-bindgen-futures", @@ -4210,7 +4347,7 @@ dependencies = [ "console_error_panic_hook", "console_log", "env_logger 0.10.2", - "log 0.4.29", + "log 0.4.33", "pollster 0.3.0", "wasm-bindgen", "wasm-bindgen-futures", @@ -4230,7 +4367,7 @@ dependencies = [ "env_logger 0.10.2", "fs_extra", "glob", - "log 0.4.29", + "log 0.4.33", "pollster 0.3.0", "wasm-bindgen", "wasm-bindgen-futures", @@ -4251,7 +4388,7 @@ dependencies = [ "fs_extra", "glob", "image", - "log 0.4.29", + "log 0.4.33", "pollster 0.3.0", "wasm-bindgen", "wasm-bindgen-futures", @@ -4273,7 +4410,7 @@ dependencies = [ "fs_extra", "glob", "image", - "log 0.4.29", + "log 0.4.33", "pollster 0.3.0", "wasm-bindgen", "wasm-bindgen-futures", @@ -4295,7 +4432,7 @@ dependencies = [ "fs_extra", "glob", "image", - "log 0.4.29", + "log 0.4.33", "pollster 0.3.0", "wasm-bindgen", "wasm-bindgen-futures", @@ -4317,7 +4454,7 @@ dependencies = [ "fs_extra", "glob", "image", - "log 0.4.29", + "log 0.4.33", "pollster 0.3.0", "wasm-bindgen", "wasm-bindgen-futures", @@ -4339,7 +4476,7 @@ dependencies = [ "fs_extra", "glob", "image", - "log 0.4.29", + "log 0.4.33", "pollster 0.3.0", "reqwest 0.11.27", "tobj 3.2.5", @@ -4352,15 +4489,15 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.22" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-width" @@ -4382,9 +4519,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.7" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", @@ -4434,15 +4571,15 @@ dependencies = [ [[package]] name = "walrus" -version = "0.24.4" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff282e73d21b86a9d397f42570d158eb9e5c521d0ead4d13cd049fd7cb45c467" +checksum = "3bfa49767bb3a9e1afb02aa95bbcbde8d82f2db4ca377afae94d688f14f62378" dependencies = [ "anyhow", "gimli", "id-arena", "leb128", - "log 0.4.29", + "log 0.4.33", "rayon", "walrus-macro", "wasm-encoder", @@ -4451,9 +4588,9 @@ dependencies = [ [[package]] name = "walrus-macro" -version = "0.24.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef06db404cbaed87cb25fd2ca3a62502af485f43383c9641ffcf1479d02fffd" +checksum = "1a9b0525d7ea6e5f906aca581a172e5c91b4c595290dfa8ad4a2bc9ffef33b44" dependencies = [ "heck", "proc-macro2", @@ -4484,18 +4621,18 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.1+wasi-0.2.4" +version = "1.0.4+wasi-0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" dependencies = [ "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.108" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -4506,14 +4643,14 @@ dependencies = [ [[package]] name = "wasm-bindgen-cli-support" -version = "0.2.108" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2be60cf36510aa4702ce189517229c3091f4a322a5ec2665a7737ea5956c2b3a" +checksum = "80c3e3bac5bcdc2a15ba22862e2cb7c0d1beddf9d46dd320bec1f6ae82f2da53" dependencies = [ "anyhow", "base64 0.22.1", "leb128", - "log 0.4.29", + "log 0.4.33", "rustc-demangle", "serde", "serde_json", @@ -4524,23 +4661,19 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.58" +version = "0.4.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" +checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d" dependencies = [ - "cfg-if", - "futures-util", "js-sys", - "once_cell", "wasm-bindgen", - "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.108" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4548,9 +4681,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.108" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", @@ -4561,9 +4694,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.108" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -4574,7 +4707,7 @@ version = "0.1.0" dependencies = [ "anyhow", "env_logger 0.10.2", - "log 0.4.29", + "log 0.4.33", "rayon", "serde", "serde_json", @@ -4583,9 +4716,9 @@ dependencies = [ [[package]] name = "wasm-encoder" -version = "0.240.0" +version = "0.245.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06d642d8c5ecc083aafe9ceb32809276a304547a3a6eeecceb5d8152598bc71f" +checksum = "3f9dca005e69bf015e45577e415b9af8c67e8ee3c0e38b5b0add5aa92581ed5c" dependencies = [ "leb128fmt", "wasmparser", @@ -4593,26 +4726,26 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.240.0" +version = "0.245.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b722dcf61e0ea47440b53ff83ccb5df8efec57a69d150e4f24882e4eba7e24a4" +checksum = "4f08c9adee0428b7bddf3890fc27e015ac4b761cc608c822667102b8bfd6995e" dependencies = [ - "bitflags 2.10.0", - "hashbrown 0.15.5", - "indexmap 2.12.1", + "bitflags 2.13.0", + "hashbrown 0.16.1", + "indexmap", "semver", "serde", ] [[package]] name = "wayland-backend" -version = "0.3.11" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35" +checksum = "2857dd20b54e916ec7253b3d6b4d5c4d7d4ca2c33c2e11c6c76a99bd8744755d" dependencies = [ "cc", "downcast-rs", - "rustix 1.1.2", + "rustix 1.1.4", "scoped-tls", "smallvec", "wayland-sys", @@ -4620,12 +4753,12 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.11" +version = "0.31.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d" +checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144" dependencies = [ - "bitflags 2.10.0", - "rustix 1.1.2", + "bitflags 2.13.0", + "rustix 1.1.4", "wayland-backend", "wayland-scanner", ] @@ -4636,29 +4769,29 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "cursor-icon", "wayland-backend", ] [[package]] name = "wayland-cursor" -version = "0.31.11" +version = "0.31.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "447ccc440a881271b19e9989f75726d60faa09b95b0200a9b7eb5cc47c3eeb29" +checksum = "4a52d18780be9b1314328a3de5f930b73d2200112e3849ca6cb11822793fb34d" dependencies = [ - "rustix 1.1.2", + "rustix 1.1.4", "wayland-client", "xcursor", ] [[package]] name = "wayland-protocols" -version = "0.32.9" +version = "0.32.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901" +checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-scanner", @@ -4666,11 +4799,11 @@ dependencies = [ [[package]] name = "wayland-protocols-plasma" -version = "0.3.9" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a07a14257c077ab3279987c4f8bb987851bf57081b93710381daea94f2c2c032" +checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -4679,11 +4812,11 @@ dependencies = [ [[package]] name = "wayland-protocols-wlr" -version = "0.3.9" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd94963ed43cf9938a090ca4f7da58eb55325ec8200c3848963e98dc25b78ec" +checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "wayland-backend", "wayland-client", "wayland-protocols", @@ -4692,9 +4825,9 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.31.7" +version = "0.31.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54cb1e9dc49da91950bdfd8b848c49330536d9d1fb03d4bfec8cae50caa50ae3" +checksum = "9c324a910fd86ebdc364a3e61ec1f11737d3b1d6c273c0239ee8ff4bc0d24b4a" dependencies = [ "proc-macro2", "quick-xml", @@ -4703,21 +4836,21 @@ dependencies = [ [[package]] name = "wayland-sys" -version = "0.31.7" +version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34949b42822155826b41db8e5d0c1be3a2bd296c747577a43a3e6daefc296142" +checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" dependencies = [ "dlib", - "log 0.4.29", + "log 0.4.33", "once_cell", "pkg-config", ] [[package]] name = "web-sys" -version = "0.3.85" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" +checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" dependencies = [ "js-sys", "wasm-bindgen", @@ -4735,9 +4868,9 @@ dependencies = [ [[package]] name = "webpki-root-certs" -version = "1.0.5" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36a29fc0408b113f68cf32637857ab740edfafdf460c326cd2afaa2d84cc05dc" +checksum = "0d46a5a140e6f7afeccd8eae97eff335163939eac8b929834875168b29b3d267" dependencies = [ "rustls-pki-types", ] @@ -4750,20 +4883,20 @@ checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" [[package]] name = "wgpu" -version = "29.0.0" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78f9f386699b1fb8b8a05bfe82169b24d151f05702d2905a0bf93bc454fcc825" +checksum = "6d8f4bd44d92da5270f03409dba9f952dab24f128e05d6a554926101d1bf9114" dependencies = [ "arrayvec", - "bitflags 2.10.0", + "bitflags 2.13.0", "bytemuck", "cfg-if", "cfg_aliases", "document-features", - "hashbrown 0.16.1", + "hashbrown 0.17.1", "js-sys", - "log 0.4.29", - "naga", + "log 0.4.33", + "naga 30.0.0", "parking_lot", "portable-atomic", "profiling", @@ -4780,21 +4913,22 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "29.0.0" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c34181b0acb8f98168f78f8e57ec66f57df5522b39143dbe5f2f45d7ca927c" +checksum = "08763620e76fc980bca7bf84de82568614487a53172dd968d89187282eb87fa2" dependencies = [ "arrayvec", - "bit-set", + "bit-set 0.10.0", "bit-vec", - "bitflags 2.10.0", + "bitflags 2.13.0", "bytemuck", "cfg_aliases", "document-features", - "hashbrown 0.16.1", - "indexmap 2.12.1", - "log 0.4.29", - "naga", + "hashbrown 0.17.1", + "indexmap", + "log 0.4.33", + "naga 30.0.0", + "naga-types", "once_cell", "parking_lot", "portable-atomic", @@ -4802,7 +4936,7 @@ dependencies = [ "raw-window-handle", "rustc-hash 1.1.0", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", "wgpu-core-deps-apple", "wgpu-core-deps-emscripten", "wgpu-core-deps-wasm", @@ -4814,51 +4948,51 @@ dependencies = [ [[package]] name = "wgpu-core-deps-apple" -version = "29.0.0" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43acd053312501689cd92a01a9638d37f3e41a5fd9534875efa8917ee2d11ac0" +checksum = "3283b6da70d7fc892de95840215aa36381b5d0cbc479e88ee2b173c7b992b225" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-core-deps-emscripten" -version = "29.0.0" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef043bf135cc68b6f667c55ff4e345ce2b5924d75bad36a47921b0287ca4b24a" +checksum = "85dcf2b2e5c2afb9eda64c570a87a4e570304bf39e52eddbaaf222d655b656ad" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-core-deps-wasm" -version = "29.0.0" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f7b75e72f49035f000dd5262e4126242e92a090a4fd75931ecfe7e60784e6fa" +checksum = "2b6c13228950f36a56023976a6c4ee6714b27fb40e3d52a33f7d3bb6d109c0b1" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-core-deps-windows-linux-android" -version = "29.0.0" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "725d5c006a8c02967b6d93ef04f6537ec4593313e330cfe86d9d3f946eb90f28" +checksum = "f76bc9c1c186ff3d9054e0d224c93c8c1c79d6653907c5249a5c1ea1a2cb1e43" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-hal" -version = "29.0.0" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058b6047337cf323a4f092486443a9337f3d81325347e5d77deed7e563aeaedc" +checksum = "cf765132d8d5f50e192e7880464890c13f4e7457aafe8e5466e8174586e9f101" dependencies = [ "android_system_properties", "arrayvec", "ash", - "bit-set", - "bitflags 2.10.0", + "bit-set 0.10.0", + "bitflags 2.13.0", "block2 0.6.2", "bytemuck", "cfg-if", @@ -4866,17 +5000,18 @@ dependencies = [ "glow", "glutin_wgl_sys", "gpu-allocator", - "gpu-descriptor", - "hashbrown 0.16.1", + "hashbrown 0.17.1", "js-sys", "khronos-egl", "libc", "libloading", - "log 0.4.29", - "naga", + "log 0.4.33", + "naga 30.0.0", + "naga-types", "ndk-sys", "objc2 0.6.4", "objc2-core-foundation", + "objc2-core-graphics", "objc2-foundation 0.3.2", "objc2-metal 0.3.2", "objc2-quartz-core 0.3.2", @@ -4891,7 +5026,8 @@ dependencies = [ "raw-window-metal", "renderdoc-sys", "smallvec", - "thiserror 2.0.17", + "static_assertions", + "thiserror 2.0.18", "wasm-bindgen", "wayland-sys", "web-sys", @@ -4899,29 +5035,32 @@ dependencies = [ "wgpu-types", "windows", "windows-core", + "windows-result", ] [[package]] name = "wgpu-naga-bridge" -version = "29.0.0" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0b8e1e505095f24cb4a578f04b1421d456257dca7fac114d9d9dd3d978c34b8" +checksum = "c9eaac644e5008925c78567d272b9d66ef83da55a53cc17fc7daade7bb6e66e5" dependencies = [ - "naga", + "naga 30.0.0", "wgpu-types", ] [[package]] name = "wgpu-types" -version = "29.0.0" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d15ece45db77dd5451f11c0ce898334317ce8502d304a20454b531fdc0652fae" +checksum = "1a9c93c2b35edde326df60ffdee4c0f5864eac3011d6768b70d43f028ad93565" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "bytemuck", "js-sys", - "log 0.4.29", + "log 0.4.33", + "naga-types", "raw-window-handle", + "static_assertions", "web-sys", ] @@ -5078,15 +5217,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - [[package]] name = "windows-sys" version = "0.48.0" @@ -5132,21 +5262,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - [[package]] name = "windows-targets" version = "0.48.5" @@ -5204,12 +5319,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -5228,12 +5337,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -5252,12 +5355,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -5288,12 +5385,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -5312,12 +5403,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -5336,12 +5421,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -5360,12 +5439,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -5386,14 +5459,14 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winit" -version = "0.30.12" +version = "0.30.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66d4b9ed69c4009f6321f762d6e61ad8a2389cd431b97cb1e146812e9e6c732" +checksum = "a6755fa58a9f8350bd1e472d4c3fcc25f824ec358933bba33306d0b63df5978d" dependencies = [ "ahash", "android-activity", "atomic-waker", - "bitflags 2.10.0", + "bitflags 2.13.0", "block2 0.5.1", "bytemuck", "calloop", @@ -5438,9 +5511,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -5469,7 +5542,7 @@ dependencies = [ "glob", "image", "instant", - "log 0.4.29", + "log 0.4.33", "pollster 0.3.0", "reqwest 0.11.27", "tobj 3.2.5", @@ -5482,15 +5555,15 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.46.0" +version = "0.57.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" [[package]] name = "writeable" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" [[package]] name = "x11-dl" @@ -5514,7 +5587,7 @@ dependencies = [ "libc", "libloading", "once_cell", - "rustix 1.1.2", + "rustix 1.1.4", "x11rb-protocol", ] @@ -5536,9 +5609,9 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.13.0", "dlib", - "log 0.4.29", + "log 0.4.33", "once_cell", "xkeysym", ] @@ -5557,9 +5630,9 @@ checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" [[package]] name = "yoke" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -5568,9 +5641,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", @@ -5580,18 +5653,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.31" +version = "0.8.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" +checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.31" +version = "0.8.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" +checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" dependencies = [ "proc-macro2", "quote", @@ -5600,18 +5673,18 @@ dependencies = [ [[package]] name = "zerofrom" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", @@ -5621,15 +5694,15 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zerotrie" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" dependencies = [ "displaydoc", "yoke", @@ -5638,9 +5711,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" dependencies = [ "yoke", "zerofrom", @@ -5649,15 +5722,21 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", "syn", ] +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + [[package]] name = "zune-inflate" version = "0.2.54" diff --git a/Cargo.toml b/Cargo.toml index 4440a805f..359619029 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,7 +28,7 @@ exclude = [ ] [workspace.dependencies] -wgpu = "29.0" +wgpu = "30.0" anyhow = "1" glam = { version = "0.30.9", features = ["bytemuck"] } bytemuck = { version = "1.13.1", features = ["derive"] } diff --git a/code/beginner/tutorial1-window/Cargo.toml b/code/beginner/tutorial1-window/Cargo.toml index b4e685c6e..61e68d22f 100644 --- a/code/beginner/tutorial1-window/Cargo.toml +++ b/code/beginner/tutorial1-window/Cargo.toml @@ -16,13 +16,13 @@ anyhow = "1.0" winit = { version = "0.30" } env_logger = "0.10" log = "0.4" -wgpu = "29.0" +wgpu = "30.0" pollster = "0.3" [target.'cfg(target_arch = "wasm32")'.dependencies] console_error_panic_hook = "0.1.6" console_log = "1.0" -wgpu = { version = "29.0", features = ["webgl"]} +wgpu = { version= "30.0", features = ["webgl"]} wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4.30" web-sys = { version = "0.3.69", features = [ diff --git a/code/beginner/tutorial2-surface/Cargo.toml b/code/beginner/tutorial2-surface/Cargo.toml index ca7ac127d..e7658beb7 100644 --- a/code/beginner/tutorial2-surface/Cargo.toml +++ b/code/beginner/tutorial2-surface/Cargo.toml @@ -12,13 +12,13 @@ anyhow = "1.0" winit = { version = "0.30", features = ["android-native-activity"] } env_logger = "0.10" log = "0.4" -wgpu = "29.0" +wgpu = "30.0" pollster = "0.3" [target.'cfg(target_arch = "wasm32")'.dependencies] console_error_panic_hook = "0.1.6" console_log = "1.0" -wgpu = { version = "29.0", features = ["webgl"]} +wgpu = { version= "30.0", features = ["webgl"]} wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" web-sys = { version = "0.3", features = [ diff --git a/code/beginner/tutorial2-surface/src/challenge.rs b/code/beginner/tutorial2-surface/src/challenge.rs index 69b6bf42c..36dbb4ff6 100644 --- a/code/beginner/tutorial2-surface/src/challenge.rs +++ b/code/beginner/tutorial2-surface/src/challenge.rs @@ -46,6 +46,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await?; @@ -86,6 +87,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], desired_maximum_frame_latency: 2, view_formats: vec![], + color_space: wgpu::SurfaceColorSpace::Auto, }; Ok(Self { @@ -169,7 +171,7 @@ impl State { } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/beginner/tutorial2-surface/src/lib.rs b/code/beginner/tutorial2-surface/src/lib.rs index ebaafc530..78db7a5f4 100644 --- a/code/beginner/tutorial2-surface/src/lib.rs +++ b/code/beginner/tutorial2-surface/src/lib.rs @@ -46,6 +46,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await?; @@ -86,6 +87,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], desired_maximum_frame_latency: 2, view_formats: vec![], + color_space: wgpu::SurfaceColorSpace::Auto, }; Ok(Self { @@ -174,7 +176,7 @@ impl State { } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/beginner/tutorial3-pipeline/Cargo.toml b/code/beginner/tutorial3-pipeline/Cargo.toml index 26c827886..cdec23007 100644 --- a/code/beginner/tutorial3-pipeline/Cargo.toml +++ b/code/beginner/tutorial3-pipeline/Cargo.toml @@ -12,13 +12,13 @@ anyhow = "1.0" winit = { version = "0.30", features = ["android-native-activity"] } env_logger = "0.10" log = "0.4" -wgpu = "29.0" +wgpu = "30.0" pollster = "0.3" [target.'cfg(target_arch = "wasm32")'.dependencies] console_error_panic_hook = "0.1.6" console_log = "1.0" -wgpu = { version = "29.0", features = ["webgl"]} +wgpu = { version= "30.0", features = ["webgl"]} wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" web-sys = { version = "0.3", features = [ diff --git a/code/beginner/tutorial3-pipeline/src/challenge.rs b/code/beginner/tutorial3-pipeline/src/challenge.rs index d739579f9..9b2d4d6e9 100644 --- a/code/beginner/tutorial3-pipeline/src/challenge.rs +++ b/code/beginner/tutorial3-pipeline/src/challenge.rs @@ -49,6 +49,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await?; @@ -88,6 +89,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; let shader = device.create_shader_module(wgpu::ShaderModuleDescriptor { @@ -307,7 +309,7 @@ impl State { } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/beginner/tutorial3-pipeline/src/lib.rs b/code/beginner/tutorial3-pipeline/src/lib.rs index 55757d065..1ce373b4e 100644 --- a/code/beginner/tutorial3-pipeline/src/lib.rs +++ b/code/beginner/tutorial3-pipeline/src/lib.rs @@ -48,6 +48,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await .unwrap(); @@ -89,6 +90,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; let shader = device.create_shader_module(wgpu::ShaderModuleDescriptor { @@ -248,7 +250,7 @@ impl State { } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/beginner/tutorial4-buffer/Cargo.toml b/code/beginner/tutorial4-buffer/Cargo.toml index 144efcd45..b62d7ddf6 100644 --- a/code/beginner/tutorial4-buffer/Cargo.toml +++ b/code/beginner/tutorial4-buffer/Cargo.toml @@ -11,7 +11,7 @@ crate-type = ["cdylib", "rlib"] [dependencies] anyhow = "1.0" winit = { version = "0.30", features = ["android-native-activity"] } -wgpu = "29.0" +wgpu = "30.0" env_logger = "0.10" log = "0.4" pollster = "0.3" @@ -21,7 +21,7 @@ bytemuck = { version = "1.24", features = [ "derive" ] } [target.'cfg(target_arch = "wasm32")'.dependencies] console_error_panic_hook = "0.1" console_log = "1.0" -wgpu = { version = "29.0", features = ["webgl"]} +wgpu = { version= "30.0", features = ["webgl"]} wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" web-sys = { version = "0.3", features = [ diff --git a/code/beginner/tutorial4-buffer/src/challenge.rs b/code/beginner/tutorial4-buffer/src/challenge.rs index 5d6d383e2..22ac45285 100644 --- a/code/beginner/tutorial4-buffer/src/challenge.rs +++ b/code/beginner/tutorial4-buffer/src/challenge.rs @@ -116,6 +116,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await?; @@ -155,6 +156,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; let shader = device.create_shader_module(wgpu::ShaderModuleDescriptor { @@ -175,7 +177,7 @@ impl State { vertex: wgpu::VertexState { module: &shader, entry_point: Some("vs_main"), - buffers: &[Vertex::desc()], + buffers: &[Some(Vertex::desc())], compilation_options: Default::default(), }, fragment: Some(wgpu::FragmentState { @@ -380,7 +382,7 @@ impl State { } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/beginner/tutorial4-buffer/src/lib.rs b/code/beginner/tutorial4-buffer/src/lib.rs index 7fbc22f13..89d209142 100644 --- a/code/beginner/tutorial4-buffer/src/lib.rs +++ b/code/beginner/tutorial4-buffer/src/lib.rs @@ -109,6 +109,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await?; @@ -148,6 +149,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; let shader = device.create_shader_module(wgpu::ShaderModuleDescriptor { @@ -168,7 +170,7 @@ impl State { vertex: wgpu::VertexState { module: &shader, entry_point: Some("vs_main"), - buffers: &[Vertex::desc()], + buffers: &[Some(Vertex::desc())], compilation_options: Default::default(), }, fragment: Some(wgpu::FragmentState { @@ -324,7 +326,7 @@ impl State { } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/beginner/tutorial5-textures/Cargo.toml b/code/beginner/tutorial5-textures/Cargo.toml index 430f875d0..a494900d1 100644 --- a/code/beginner/tutorial5-textures/Cargo.toml +++ b/code/beginner/tutorial5-textures/Cargo.toml @@ -13,7 +13,7 @@ bytemuck = { version = "1.24", features = [ "derive" ] } env_logger = "0.10" log = "0.4" pollster = "0.3" -wgpu = "29.0" +wgpu = "30.0" winit = { version = "0.30", features = ["android-native-activity"] } [dependencies.image] @@ -24,7 +24,7 @@ features = ["png", "jpeg"] [target.'cfg(target_arch = "wasm32")'.dependencies] console_error_panic_hook = "0.1" console_log = "1.0" -wgpu = { version = "29.0", features = ["webgl"]} +wgpu = { version= "30.0", features = ["webgl"]} wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" web-sys = { version = "0.3", features = [ diff --git a/code/beginner/tutorial5-textures/src/challenge.rs b/code/beginner/tutorial5-textures/src/challenge.rs index 2a5204d16..c789a89d0 100644 --- a/code/beginner/tutorial5-textures/src/challenge.rs +++ b/code/beginner/tutorial5-textures/src/challenge.rs @@ -118,6 +118,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await .unwrap(); @@ -158,6 +159,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; let texture_bind_group_layout = @@ -240,7 +242,7 @@ impl State { vertex: wgpu::VertexState { module: &shader, entry_point: Some("vs_main"), - buffers: &[Vertex::desc()], + buffers: &[Some(Vertex::desc())], compilation_options: Default::default(), }, fragment: Some(wgpu::FragmentState { @@ -409,7 +411,7 @@ impl State { } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/beginner/tutorial5-textures/src/lib.rs b/code/beginner/tutorial5-textures/src/lib.rs index 942294554..8a27cb8d0 100644 --- a/code/beginner/tutorial5-textures/src/lib.rs +++ b/code/beginner/tutorial5-textures/src/lib.rs @@ -111,6 +111,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await .unwrap(); @@ -151,6 +152,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; let diffuse_bytes = include_bytes!("happy-tree.png"); @@ -213,7 +215,7 @@ impl State { vertex: wgpu::VertexState { module: &shader, entry_point: Some("vs_main"), - buffers: &[Vertex::desc()], + buffers: &[Some(Vertex::desc())], compilation_options: Default::default(), }, fragment: Some(wgpu::FragmentState { @@ -372,7 +374,7 @@ impl State { } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/beginner/tutorial6-uniforms/Cargo.toml b/code/beginner/tutorial6-uniforms/Cargo.toml index c81c334a3..1a1537eef 100644 --- a/code/beginner/tutorial6-uniforms/Cargo.toml +++ b/code/beginner/tutorial6-uniforms/Cargo.toml @@ -14,7 +14,7 @@ cgmath = "0.18" env_logger = "0.10" log = "0.4" pollster = "0.3" -wgpu = "29.0" +wgpu = "30.0" winit = { version = "0.30", features = ["android-native-activity"] } [dependencies.image] @@ -25,7 +25,7 @@ features = ["png", "jpeg"] [target.'cfg(target_arch = "wasm32")'.dependencies] console_error_panic_hook = "0.1" console_log = "1.0" -wgpu = { version = "29.0", features = ["webgl"]} +wgpu = { version= "30.0", features = ["webgl"]} wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" web-sys = { version = "0.3", features = [ diff --git a/code/beginner/tutorial6-uniforms/src/challenge.rs b/code/beginner/tutorial6-uniforms/src/challenge.rs index 27ff61d9c..13e3e2a43 100644 --- a/code/beginner/tutorial6-uniforms/src/challenge.rs +++ b/code/beginner/tutorial6-uniforms/src/challenge.rs @@ -250,6 +250,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await .unwrap(); @@ -290,6 +291,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; let diffuse_bytes = include_bytes!("happy-tree.png"); @@ -400,7 +402,7 @@ impl State { vertex: wgpu::VertexState { module: &shader, entry_point: Some("vs_main"), - buffers: &[Vertex::desc()], + buffers: &[Some(Vertex::desc())], compilation_options: Default::default(), }, fragment: Some(wgpu::FragmentState { @@ -579,7 +581,7 @@ impl State { } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/beginner/tutorial6-uniforms/src/lib.rs b/code/beginner/tutorial6-uniforms/src/lib.rs index caae78983..d6c4d01b1 100644 --- a/code/beginner/tutorial6-uniforms/src/lib.rs +++ b/code/beginner/tutorial6-uniforms/src/lib.rs @@ -247,6 +247,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await .unwrap(); @@ -287,6 +288,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; let diffuse_bytes = include_bytes!("happy-tree.png"); @@ -396,7 +398,7 @@ impl State { vertex: wgpu::VertexState { module: &shader, entry_point: Some("vs_main"), - buffers: &[Vertex::desc()], + buffers: &[Some(Vertex::desc())], compilation_options: Default::default(), }, fragment: Some(wgpu::FragmentState { @@ -577,7 +579,7 @@ impl State { } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/beginner/tutorial7-instancing/Cargo.toml b/code/beginner/tutorial7-instancing/Cargo.toml index 9609e2407..53252ac80 100644 --- a/code/beginner/tutorial7-instancing/Cargo.toml +++ b/code/beginner/tutorial7-instancing/Cargo.toml @@ -14,7 +14,7 @@ cgmath = "0.18" env_logger = "0.10" log = "0.4" pollster = "0.3" -wgpu = "29.0" +wgpu = "30.0" winit = { version = "0.30", features = ["android-native-activity"] } [dependencies.image] @@ -25,7 +25,7 @@ features = ["png", "jpeg"] [target.'cfg(target_arch = "wasm32")'.dependencies] console_error_panic_hook = "0.1" console_log = "1.0" -wgpu = { version = "29.0", features = ["webgl"]} +wgpu = { version= "30.0", features = ["webgl"]} wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" web-sys = { version = "0.3", features = [ diff --git a/code/beginner/tutorial7-instancing/src/challenge.rs b/code/beginner/tutorial7-instancing/src/challenge.rs index 2d8c234a7..1ea609095 100644 --- a/code/beginner/tutorial7-instancing/src/challenge.rs +++ b/code/beginner/tutorial7-instancing/src/challenge.rs @@ -304,6 +304,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await .unwrap(); @@ -344,6 +345,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; let diffuse_bytes = include_bytes!("happy-tree.png"); @@ -485,7 +487,7 @@ impl State { vertex: wgpu::VertexState { module: &shader, entry_point: Some("vs_main"), - buffers: &[Vertex::desc(), InstanceRaw::desc()], + buffers: &[Some(Vertex::desc()), Some(InstanceRaw::desc())], compilation_options: Default::default(), }, fragment: Some(wgpu::FragmentState { @@ -684,7 +686,7 @@ impl State { } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/beginner/tutorial7-instancing/src/lib.rs b/code/beginner/tutorial7-instancing/src/lib.rs index 78b3a4d46..0b94c429a 100644 --- a/code/beginner/tutorial7-instancing/src/lib.rs +++ b/code/beginner/tutorial7-instancing/src/lib.rs @@ -308,6 +308,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await .unwrap(); @@ -348,6 +349,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; let diffuse_bytes = include_bytes!("happy-tree.png"); @@ -489,7 +491,7 @@ impl State { vertex: wgpu::VertexState { module: &shader, entry_point: Some("vs_main"), - buffers: &[Vertex::desc(), InstanceRaw::desc()], + buffers: &[Some(Vertex::desc()), Some(InstanceRaw::desc())], compilation_options: Default::default(), }, fragment: Some(wgpu::FragmentState { @@ -670,7 +672,7 @@ impl State { } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/beginner/tutorial8-depth/Cargo.toml b/code/beginner/tutorial8-depth/Cargo.toml index cdf8ba97a..493256415 100644 --- a/code/beginner/tutorial8-depth/Cargo.toml +++ b/code/beginner/tutorial8-depth/Cargo.toml @@ -14,7 +14,7 @@ cgmath = "0.18" env_logger = "0.10" pollster = "0.3" log = "0.4" -wgpu = "29.0" +wgpu = "30.0" winit = { version = "0.30", features = ["android-native-activity"] } [dependencies.image] @@ -25,7 +25,7 @@ features = ["png", "jpeg"] [target.'cfg(target_arch = "wasm32")'.dependencies] console_error_panic_hook = "0.1" console_log = "1.0" -wgpu = { version = "29.0", features = ["webgl"]} +wgpu = { version= "30.0", features = ["webgl"]} wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" web-sys = { version = "0.3", features = [ diff --git a/code/beginner/tutorial8-depth/src/challenge.rs b/code/beginner/tutorial8-depth/src/challenge.rs index 2ec73d484..472636329 100644 --- a/code/beginner/tutorial8-depth/src/challenge.rs +++ b/code/beginner/tutorial8-depth/src/challenge.rs @@ -360,7 +360,7 @@ impl DepthPass { vertex: wgpu::VertexState { module: &shader, entry_point: Some("vs_main"), - buffers: &[Vertex::desc()], + buffers: &[Some(Vertex::desc())], compilation_options: Default::default(), }, fragment: Some(wgpu::FragmentState { @@ -509,6 +509,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await .unwrap(); @@ -549,6 +550,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; let diffuse_bytes = include_bytes!("happy-tree.png"); @@ -690,7 +692,7 @@ impl State { vertex: wgpu::VertexState { module: &shader, entry_point: Some("vs_main"), - buffers: &[Vertex::desc(), InstanceRaw::desc()], + buffers: &[Some(Vertex::desc()), Some(InstanceRaw::desc())], compilation_options: Default::default(), }, fragment: Some(wgpu::FragmentState { @@ -897,7 +899,7 @@ impl State { self.depth_pass.render(&view, &mut encoder); self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/beginner/tutorial8-depth/src/lib.rs b/code/beginner/tutorial8-depth/src/lib.rs index 57dd8121d..7aa9a3e65 100644 --- a/code/beginner/tutorial8-depth/src/lib.rs +++ b/code/beginner/tutorial8-depth/src/lib.rs @@ -318,6 +318,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await .unwrap(); @@ -358,6 +359,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; let diffuse_bytes = include_bytes!("happy-tree.png"); @@ -502,7 +504,7 @@ impl State { vertex: wgpu::VertexState { module: &shader, entry_point: Some("vs_main"), - buffers: &[Vertex::desc(), InstanceRaw::desc()], + buffers: &[Some(Vertex::desc()), Some(InstanceRaw::desc())], compilation_options: Default::default(), }, fragment: Some(wgpu::FragmentState { @@ -701,7 +703,7 @@ impl State { } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/beginner/tutorial9-models/Cargo.toml b/code/beginner/tutorial9-models/Cargo.toml index c3f6586ab..8ddb9a0ef 100644 --- a/code/beginner/tutorial9-models/Cargo.toml +++ b/code/beginner/tutorial9-models/Cargo.toml @@ -15,7 +15,7 @@ env_logger = "0.10" pollster = "0.3" log = "0.4" tobj = { version = "3.2", default-features = false, features = ["async"]} -wgpu = "29.0" +wgpu = "30.0" winit = { version = "0.30", features = ["android-native-activity"] } [dependencies.image] @@ -27,7 +27,7 @@ features = ["png", "jpeg"] reqwest = { version = "0.11" } console_error_panic_hook = "0.1" console_log = "1.0" -wgpu = { version = "29.0", features = ["webgl"]} +wgpu = { version= "30.0", features = ["webgl"]} wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" web-sys = { version = "0.3", features = [ diff --git a/code/beginner/tutorial9-models/src/lib.rs b/code/beginner/tutorial9-models/src/lib.rs index 60ae7c236..a9c2ff7e3 100644 --- a/code/beginner/tutorial9-models/src/lib.rs +++ b/code/beginner/tutorial9-models/src/lib.rs @@ -259,6 +259,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await .unwrap(); @@ -301,6 +302,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; let texture_bind_group_layout = @@ -430,7 +432,7 @@ impl State { vertex: wgpu::VertexState { module: &shader, entry_point: Some("vs_main"), - buffers: &[model::ModelVertex::desc(), InstanceRaw::desc()], + buffers: &[Some(model::ModelVertex::desc()), Some(InstanceRaw::desc())], compilation_options: Default::default(), }, fragment: Some(wgpu::FragmentState { @@ -613,7 +615,7 @@ impl State { } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/compute/Cargo.toml b/code/compute/Cargo.toml index 192f0763f..4c757379c 100644 --- a/code/compute/Cargo.toml +++ b/code/compute/Cargo.toml @@ -18,7 +18,7 @@ bytemuck = "1.23.2" glam = "0.30.5" log = "0.4.28" pollster = "0.4.0" -wgpu = "29.0" +wgpu = "30.0" env_logger = "0.11.8" crossbeam = "0.8.4" flume.workspace = true @@ -26,7 +26,7 @@ flume.workspace = true [target.'cfg(target_arch = "wasm32")'.dependencies] console_error_panic_hook = "0.1.6" console_log = "1.0" -wgpu = { version = "29.0", features = ["webgl"]} +wgpu = { version= "30.0", features = ["webgl"]} wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4.30" web-sys = { version = "0.3.69", features = [ diff --git a/code/compute/src/filter.rs b/code/compute/src/filter.rs index b82a2ebb0..f8cc8eb2b 100644 --- a/code/compute/src/filter.rs +++ b/code/compute/src/filter.rs @@ -70,7 +70,7 @@ pub async fn run() -> anyhow::Result<()> { device.poll(wgpu::PollType::wait_indefinitely())?; rx.recv_async().await??; - let output_data = temp_buffer.get_mapped_range(..); + let output_data = temp_buffer.get_mapped_range(..)?; let u32_data = bytemuck::cast_slice::<_, u32>(&output_data); // Confirm that the list is sorted diff --git a/code/compute/src/introduction.rs b/code/compute/src/introduction.rs index eadb04723..0c31ead52 100644 --- a/code/compute/src/introduction.rs +++ b/code/compute/src/introduction.rs @@ -92,7 +92,7 @@ pub async fn run() -> anyhow::Result<()> { rx.recv_async().await??; // We then get the bytes that were stored in the buffer - let output_data = temp_buffer.get_mapped_range(..); + let output_data = temp_buffer.get_mapped_range(..)?; // Now we have the data on the CPU we can do what ever we want to with it assert_eq!(&input_data, bytemuck::cast_slice(&output_data)); diff --git a/code/compute/src/sort.rs b/code/compute/src/sort.rs index caa5d69fd..f5c5ef5ba 100644 --- a/code/compute/src/sort.rs +++ b/code/compute/src/sort.rs @@ -109,7 +109,7 @@ pub async fn run() -> anyhow::Result<()> { device.poll(wgpu::PollType::wait_indefinitely())?; rx.recv_async().await??; - let output_data = temp_buffer.get_mapped_range(..); + let output_data = temp_buffer.get_mapped_range(..)?; let u32_data = bytemuck::cast_slice::<_, u32>(&output_data); // Confirm that the list is sorted diff --git a/code/intermediate/tutorial10-lighting/Cargo.toml b/code/intermediate/tutorial10-lighting/Cargo.toml index fbfe4b4a7..23cea5b74 100644 --- a/code/intermediate/tutorial10-lighting/Cargo.toml +++ b/code/intermediate/tutorial10-lighting/Cargo.toml @@ -15,7 +15,7 @@ env_logger = "0.10" pollster = "0.3" log = "0.4" tobj = { version = "3.2", default-features = false, features = ["async"]} -wgpu = { version = "29.0"} +wgpu = { version= "30.0"} winit = { version = "0.30", features = ["android-native-activity"] } [dependencies.image] @@ -27,7 +27,7 @@ features = ["png", "jpeg"] reqwest = { version = "0.11" } console_error_panic_hook = "0.1" console_log = "1.0" -wgpu = { version = "29.0", features = ["webgl"]} +wgpu = { version= "30.0", features = ["webgl"]} wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" web-sys = { version = "0.3", features = [ diff --git a/code/intermediate/tutorial10-lighting/src/lib.rs b/code/intermediate/tutorial10-lighting/src/lib.rs index 65161515d..2a7ae31f5 100644 --- a/code/intermediate/tutorial10-lighting/src/lib.rs +++ b/code/intermediate/tutorial10-lighting/src/lib.rs @@ -274,7 +274,7 @@ fn create_render_pipeline( layout: &wgpu::PipelineLayout, color_format: wgpu::TextureFormat, depth_format: Option, - vertex_layouts: &[wgpu::VertexBufferLayout], + vertex_layouts: &[Option], shader: wgpu::ShaderModuleDescriptor, ) -> wgpu::RenderPipeline { let shader = device.create_shader_module(shader); @@ -356,6 +356,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await .unwrap(); @@ -396,6 +397,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; let texture_bind_group_layout = @@ -562,7 +564,7 @@ impl State { &render_pipeline_layout, config.format, Some(texture::Texture::DEPTH_FORMAT), - &[model::ModelVertex::desc(), InstanceRaw::desc()], + &[Some(model::ModelVertex::desc()), Some(InstanceRaw::desc())], shader, ) }; @@ -585,7 +587,7 @@ impl State { &layout, config.format, Some(texture::Texture::DEPTH_FORMAT), - &[model::ModelVertex::desc()], + &[Some(model::ModelVertex::desc())], shader, ) }; @@ -747,7 +749,7 @@ impl State { } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/intermediate/tutorial11-normals/Cargo.toml b/code/intermediate/tutorial11-normals/Cargo.toml index cc27cf0f7..3ebb4a65f 100644 --- a/code/intermediate/tutorial11-normals/Cargo.toml +++ b/code/intermediate/tutorial11-normals/Cargo.toml @@ -15,7 +15,7 @@ env_logger = "0.10" pollster = "0.3" log = "0.4" tobj = { version = "3.2", default-features = false, features = ["async"]} -wgpu = { version = "29.0"} +wgpu = { version= "30.0"} winit = { version = "0.30", features = ["android-native-activity"] } [dependencies.image] @@ -27,7 +27,7 @@ features = ["png", "jpeg"] reqwest = { version = "0.11" } console_error_panic_hook = "0.1" console_log = "1.0" -wgpu = { version = "29.0", features = ["webgl"]} +wgpu = { version= "30.0", features = ["webgl"]} wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" web-sys = { version = "0.3", features = [ diff --git a/code/intermediate/tutorial11-normals/src/lib.rs b/code/intermediate/tutorial11-normals/src/lib.rs index aa5c2912b..7cc752689 100644 --- a/code/intermediate/tutorial11-normals/src/lib.rs +++ b/code/intermediate/tutorial11-normals/src/lib.rs @@ -274,7 +274,7 @@ fn create_render_pipeline( layout: &wgpu::PipelineLayout, color_format: wgpu::TextureFormat, depth_format: Option, - vertex_layouts: &[wgpu::VertexBufferLayout], + vertex_layouts: &[Option], shader: wgpu::ShaderModuleDescriptor, ) -> wgpu::RenderPipeline { let shader = device.create_shader_module(shader); @@ -356,6 +356,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await .unwrap(); @@ -396,6 +397,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; let texture_bind_group_layout = @@ -580,7 +582,7 @@ impl State { &render_pipeline_layout, config.format, Some(texture::Texture::DEPTH_FORMAT), - &[model::ModelVertex::desc(), InstanceRaw::desc()], + &[Some(model::ModelVertex::desc()), Some(InstanceRaw::desc())], shader, ) }; @@ -604,7 +606,7 @@ impl State { &layout, config.format, Some(texture::Texture::DEPTH_FORMAT), - &[model::ModelVertex::desc()], + &[Some(model::ModelVertex::desc())], shader, ) }; @@ -794,7 +796,7 @@ impl State { ); } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/intermediate/tutorial12-camera/Cargo.toml b/code/intermediate/tutorial12-camera/Cargo.toml index 20723d913..00d83c886 100644 --- a/code/intermediate/tutorial12-camera/Cargo.toml +++ b/code/intermediate/tutorial12-camera/Cargo.toml @@ -15,7 +15,7 @@ env_logger = "0.10" pollster = "0.3" log = "0.4" tobj = { version = "3.2", default-features = false, features = ["async"]} -wgpu = { version = "29.0"} +wgpu = { version= "30.0"} winit = { version = "0.30", features = ["android-native-activity"] } instant = "0.1" @@ -28,7 +28,7 @@ features = ["png", "jpeg"] reqwest = { version = "0.11" } console_error_panic_hook = "0.1" console_log = "1.0" -wgpu = { version = "29.0", features = ["webgl"]} +wgpu = { version= "30.0", features = ["webgl"]} wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" web-sys = { version = "0.3", features = [ diff --git a/code/intermediate/tutorial12-camera/src/lib.rs b/code/intermediate/tutorial12-camera/src/lib.rs index 72cbc503b..78afa383e 100644 --- a/code/intermediate/tutorial12-camera/src/lib.rs +++ b/code/intermediate/tutorial12-camera/src/lib.rs @@ -166,7 +166,7 @@ fn create_render_pipeline( layout: &wgpu::PipelineLayout, color_format: wgpu::TextureFormat, depth_format: Option, - vertex_layouts: &[wgpu::VertexBufferLayout], + vertex_layouts: &[Option], shader: wgpu::ShaderModuleDescriptor, ) -> wgpu::RenderPipeline { let shader = device.create_shader_module(shader); @@ -248,6 +248,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await .unwrap(); @@ -288,6 +289,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; let texture_bind_group_layout = @@ -465,7 +467,7 @@ impl State { &render_pipeline_layout, config.format, Some(texture::Texture::DEPTH_FORMAT), - &[model::ModelVertex::desc(), InstanceRaw::desc()], + &[Some(model::ModelVertex::desc()), Some(InstanceRaw::desc())], shader, ) }; @@ -488,7 +490,7 @@ impl State { &layout, config.format, Some(texture::Texture::DEPTH_FORMAT), - &[model::ModelVertex::desc()], + &[Some(model::ModelVertex::desc())], shader, ) }; @@ -700,7 +702,7 @@ impl State { ); } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/intermediate/tutorial13-hdr/Cargo.toml b/code/intermediate/tutorial13-hdr/Cargo.toml index f9f69057d..b15038f25 100644 --- a/code/intermediate/tutorial13-hdr/Cargo.toml +++ b/code/intermediate/tutorial13-hdr/Cargo.toml @@ -18,7 +18,7 @@ env_logger = "0.10" pollster = "0.3" log = "0.4" tobj = { version = "3.2", default-features = false, features = ["async"]} -wgpu = { version = "29.0"} +wgpu = { version= "30.0"} winit = { version = "0.30", features = ["android-native-activity"] } instant = "0.1" diff --git a/code/intermediate/tutorial13-hdr/src/lib.rs b/code/intermediate/tutorial13-hdr/src/lib.rs index d8bce9736..25af23269 100644 --- a/code/intermediate/tutorial13-hdr/src/lib.rs +++ b/code/intermediate/tutorial13-hdr/src/lib.rs @@ -189,7 +189,7 @@ fn create_render_pipeline( layout: &wgpu::PipelineLayout, color_format: wgpu::TextureFormat, depth_format: Option, - vertex_layouts: &[wgpu::VertexBufferLayout], + vertex_layouts: &[Option], topology: wgpu::PrimitiveTopology, // NEW! shader: wgpu::ShaderModuleDescriptor, ) -> wgpu::RenderPipeline { @@ -270,6 +270,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await .unwrap(); @@ -307,6 +308,7 @@ impl State { // NEW! view_formats: vec![surface_format.add_srgb_suffix()], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Srgb, }; let texture_bind_group_layout = @@ -535,7 +537,7 @@ impl State { &render_pipeline_layout, hdr.format(), Some(texture::Texture::DEPTH_FORMAT), - &[model::ModelVertex::desc(), InstanceRaw::desc()], + &[Some(model::ModelVertex::desc()), Some(InstanceRaw::desc())], wgpu::PrimitiveTopology::TriangleList, shader, ) @@ -559,7 +561,7 @@ impl State { &layout, hdr.format(), Some(texture::Texture::DEPTH_FORMAT), - &[model::ModelVertex::desc()], + &[Some(model::ModelVertex::desc())], wgpu::PrimitiveTopology::TriangleList, shader, ) @@ -831,7 +833,7 @@ impl State { } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/intermediate/wip-terrain/Cargo.toml b/code/intermediate/wip-terrain/Cargo.toml index 53574ba66..0fd42cf50 100644 --- a/code/intermediate/wip-terrain/Cargo.toml +++ b/code/intermediate/wip-terrain/Cargo.toml @@ -15,7 +15,7 @@ env_logger = "0.10" pollster = "0.3" log = "0.4" tobj = { version = "3.2", default-features = false, features = ["async"]} -wgpu = { version = "29.0" } +wgpu = { version= "30.0" } winit = { version = "0.30", features = ["android-native-activity"] } instant = "0.1" @@ -28,7 +28,7 @@ features = ["png", "jpeg"] reqwest = { version = "0.11" } console_error_panic_hook = "0.1" console_log = "1.0" -wgpu = { version = "29.0", features = ["webgl"]} +wgpu = { version= "30.0", features = ["webgl"]} wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" web-sys = { version = "0.3", features = [ diff --git a/code/intermediate/wip-terrain/src/lib.rs b/code/intermediate/wip-terrain/src/lib.rs index e1b8dbd36..10399fc83 100644 --- a/code/intermediate/wip-terrain/src/lib.rs +++ b/code/intermediate/wip-terrain/src/lib.rs @@ -171,7 +171,7 @@ fn create_render_pipeline( layout: &wgpu::PipelineLayout, color_format: wgpu::TextureFormat, depth_format: Option, - vertex_layouts: &[wgpu::VertexBufferLayout], + vertex_layouts: &[Option], shader: &wgpu::ShaderModule, ) -> wgpu::RenderPipeline { device.create_render_pipeline(&wgpu::RenderPipelineDescriptor { @@ -251,6 +251,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await .unwrap(); @@ -291,6 +292,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![surface_format.add_srgb_suffix()], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; let texture_bind_group_layout = @@ -469,7 +471,7 @@ impl State { &render_pipeline_layout, config.format, Some(texture::Texture::DEPTH_FORMAT), - &[model::ModelVertex::desc(), InstanceRaw::desc()], + &[Some(model::ModelVertex::desc()), Some(InstanceRaw::desc())], &shader, ) }; @@ -493,7 +495,7 @@ impl State { &layout, config.format, Some(texture::Texture::DEPTH_FORMAT), - &[model::ModelVertex::desc()], + &[Some(model::ModelVertex::desc())], &shader, ) }; @@ -756,7 +758,7 @@ impl State { ); } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/intermediate/wip-terrain/src/resources.rs b/code/intermediate/wip-terrain/src/resources.rs index f4354e970..6b8133505 100644 --- a/code/intermediate/wip-terrain/src/resources.rs +++ b/code/intermediate/wip-terrain/src/resources.rs @@ -262,7 +262,7 @@ pub async fn load_model( // buffer_slice.map_async(wgpu::MapMode::Read, |result| { // result.unwrap(); -// let data = buffer_slice.get_mapped_range(); +// let data = buffer_slice.get_mapped_range()?; // println!("data.len(): {}", data.len()); // let data_t: &[T] = bytemuck::cast_slice(&data[..]); diff --git a/code/intermediate/wip-terrain/src/terrain.rs b/code/intermediate/wip-terrain/src/terrain.rs index 6400b92a4..6bbe4ba89 100644 --- a/code/intermediate/wip-terrain/src/terrain.rs +++ b/code/intermediate/wip-terrain/src/terrain.rs @@ -148,7 +148,7 @@ impl TerrainPipeline { &render_pipeline_layout, color_format, depth_format, - &[wgpu::VertexBufferLayout { + &[Some(wgpu::VertexBufferLayout { array_stride: 32, step_mode: wgpu::VertexStepMode::Vertex, attributes: &[ @@ -163,7 +163,7 @@ impl TerrainPipeline { shader_location: 1, }, ], - }], + })], &shader, ); diff --git a/code/showcase/compute/Cargo.toml b/code/showcase/compute/Cargo.toml index f943c35d4..690f57042 100644 --- a/code/showcase/compute/Cargo.toml +++ b/code/showcase/compute/Cargo.toml @@ -14,7 +14,7 @@ image = "0.24" log = "0.4" rayon = "1.4" tobj = "2.0" -wgpu = "29.0" +wgpu = "30.0" winit = { version = "0.30", features = ["android-native-activity"] } instant = "0.1.13" @@ -23,4 +23,4 @@ anyhow = "1.0" fs_extra = "1.2" glob = "0.3" rayon = "1.4" -naga = { version = "29.0", features = ["glsl-in", "spv-out", "wgsl-out"]} +naga = { version= "29.0", features = ["glsl-in", "spv-out", "wgsl-out"]} diff --git a/code/showcase/compute/src/main.rs b/code/showcase/compute/src/main.rs index d3375ea85..44c16f922 100644 --- a/code/showcase/compute/src/main.rs +++ b/code/showcase/compute/src/main.rs @@ -185,6 +185,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await .unwrap(); @@ -226,6 +227,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![surface_format.add_srgb_suffix()], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; let texture_bind_group_layout = @@ -409,7 +411,7 @@ impl State { &render_pipeline_layout, config.format, Some(texture::Texture::DEPTH_FORMAT), - &[model::ModelVertex::desc(), InstanceRaw::desc()], + &[Some(model::ModelVertex::desc()), Some(InstanceRaw::desc())], wgpu::include_wgsl!("shader.vert.wgsl"), wgpu::include_wgsl!("shader.frag.wgsl"), ); @@ -430,7 +432,7 @@ impl State { &layout, config.format, Some(texture::Texture::DEPTH_FORMAT), - &[model::ModelVertex::desc()], + &[Some(model::ModelVertex::desc())], wgpu::include_wgsl!("light.vert.wgsl"), wgpu::include_wgsl!("light.frag.wgsl"), ) @@ -616,7 +618,7 @@ impl State { ); } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/showcase/compute/src/pipeline.rs b/code/showcase/compute/src/pipeline.rs index 3fb55531a..be54179f0 100644 --- a/code/showcase/compute/src/pipeline.rs +++ b/code/showcase/compute/src/pipeline.rs @@ -39,7 +39,7 @@ pub fn create_render_pipeline( layout: &wgpu::PipelineLayout, color_format: wgpu::TextureFormat, depth_format: Option, - vertex_layouts: &[wgpu::VertexBufferLayout], + vertex_layouts: &[Option], vs_src: wgpu::ShaderModuleDescriptor, fs_src: wgpu::ShaderModuleDescriptor, ) -> wgpu::RenderPipeline { diff --git a/code/showcase/framework/Cargo.toml b/code/showcase/framework/Cargo.toml index b00fd9f7d..95f1553a7 100644 --- a/code/showcase/framework/Cargo.toml +++ b/code/showcase/framework/Cargo.toml @@ -45,5 +45,5 @@ instant = { version = "0.1", features = [ "wasm-bindgen" ] } anyhow = "1.0" fs_extra = "1.2" glob = "0.3" -naga = { version = "29.0", features = ["glsl-in", "spv-out", "wgsl-out"]} +naga = { version= "29.0", features = ["glsl-in", "spv-out", "wgsl-out"]} rayon = "1.5" diff --git a/code/showcase/framework/src/camera.rs b/code/showcase/framework/src/camera.rs index f1910cd8c..309388ef4 100644 --- a/code/showcase/framework/src/camera.rs +++ b/code/showcase/framework/src/camera.rs @@ -110,7 +110,11 @@ impl CameraBinder { camera: &impl Camera, projection: &impl Projection, ) -> (CameraBuffer, CameraBinding) { - let buffer = CameraBuffer::new(device); + let mut buffer = CameraBuffer::new(device); + + buffer.data.view = camera.view(); + buffer.data.proj = projection.proj(); + buffer.data.view_proj = buffer.data.proj * buffer.data.view; let bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { label: Some("CameraBinding"), diff --git a/code/showcase/framework/src/lib.rs b/code/showcase/framework/src/lib.rs index a240f09d5..f7b502d5f 100644 --- a/code/showcase/framework/src/lib.rs +++ b/code/showcase/framework/src/lib.rs @@ -65,6 +65,7 @@ impl Display { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await?; let (device, queue) = adapter @@ -102,6 +103,7 @@ impl Display { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; Ok(Self { diff --git a/code/showcase/framework/src/pipeline.rs b/code/showcase/framework/src/pipeline.rs index 205f8ff7b..105ab4115 100644 --- a/code/showcase/framework/src/pipeline.rs +++ b/code/showcase/framework/src/pipeline.rs @@ -16,7 +16,7 @@ pub struct RenderPipelineBuilder<'a> { color_states: Vec>, depth_stencil: Option, index_format: wgpu::IndexFormat, - vertex_buffers: Vec>, + vertex_buffers: Vec>>, sample_count: u32, sample_mask: u64, alpha_to_coverage_enabled: bool, @@ -158,12 +158,12 @@ impl<'a> RenderPipelineBuilder<'a> { } pub fn vertex_buffer(&mut self) -> &mut Self { - self.vertex_buffers.push(V::desc()); + self.vertex_buffers.push(Some(V::desc())); self } pub fn vertex_buffer_desc(&mut self, vb: wgpu::VertexBufferLayout<'a>) -> &mut Self { - self.vertex_buffers.push(vb); + self.vertex_buffers.push(Some(vb)); self } diff --git a/code/showcase/gifs/Cargo.toml b/code/showcase/gifs/Cargo.toml index 5ce0e587c..e55ac7111 100644 --- a/code/showcase/gifs/Cargo.toml +++ b/code/showcase/gifs/Cargo.toml @@ -14,7 +14,7 @@ pollster = "0.3" image = "0.24.2" log = "0.4" tobj = { version = "3.2", default-features = false, features = ["async"]} -wgpu = "29.0" +wgpu = "30.0" winit = { version = "0.30", features = ["android-native-activity"] } gif = "0.11.4" flume.workspace = true diff --git a/code/showcase/gifs/src/main.rs b/code/showcase/gifs/src/main.rs index 4d9411f41..cfbb58051 100644 --- a/code/showcase/gifs/src/main.rs +++ b/code/showcase/gifs/src/main.rs @@ -144,7 +144,7 @@ async fn run() { match rx.recv_async().await { Ok(Ok(())) => { - let padded_data = buffer_slice.get_mapped_range(); + let padded_data = buffer_slice.get_mapped_range().unwrap(); let data = padded_data .chunks(padded_bytes_per_row as _) .map(|chunk| &chunk[..unpadded_bytes_per_row as _]) diff --git a/code/showcase/imgui-demo/Cargo.toml b/code/showcase/imgui-demo/Cargo.toml index 8d42a7e53..ebe0f0c66 100644 --- a/code/showcase/imgui-demo/Cargo.toml +++ b/code/showcase/imgui-demo/Cargo.toml @@ -8,9 +8,9 @@ edition = "2018" [dependencies] anyhow = "1.0" -wgpu = "29.0" +wgpu = "30.0" pollster = "0.3" imgui = "0.7" -imgui-wgpu = "29.0" +imgui-wgpu = "30.0" imgui-winit-support = "0.7" framework = { path = "../framework" } \ No newline at end of file diff --git a/code/showcase/mipmaps/src/main.rs b/code/showcase/mipmaps/src/main.rs index cdf2153a7..728283f91 100644 --- a/code/showcase/mipmaps/src/main.rs +++ b/code/showcase/mipmaps/src/main.rs @@ -589,7 +589,7 @@ impl Demo for Mipmaps { } display.queue.submit([encoder.finish()]); - frame.present(); + display.queue.present(frame); } } diff --git a/code/showcase/mouse-picking/Cargo.toml b/code/showcase/mouse-picking/Cargo.toml index 780992fb6..34e6548c4 100644 --- a/code/showcase/mouse-picking/Cargo.toml +++ b/code/showcase/mouse-picking/Cargo.toml @@ -15,7 +15,7 @@ env_logger = "0.10" pollster = "0.3" log = "0.4" tobj = { version = "3.2", default-features = false, features = ["async"]} -wgpu = { version = "29.0"} +wgpu = { version= "30.0"} winit = { version = "0.30", features = ["android-native-activity"] } instant = "0.1" framework = { version = "0.1.0", path = "../framework" } @@ -29,7 +29,7 @@ features = ["png", "jpeg"] reqwest = { version = "0.11" } console_error_panic_hook = "0.1" console_log = "1.0" -wgpu = { version = "29.0", features = ["webgl"]} +wgpu = { version= "30.0", features = ["webgl"]} wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" web-sys = { version = "0.3", features = [ diff --git a/code/showcase/offscreen/Cargo.toml b/code/showcase/offscreen/Cargo.toml index 5d7f456ac..463802b33 100644 --- a/code/showcase/offscreen/Cargo.toml +++ b/code/showcase/offscreen/Cargo.toml @@ -23,5 +23,5 @@ web-sys = { version = "0.3", features = [ "Url", "DedicatedWorkerGlobalScope", ] } -wgpu = "29.0" +wgpu = "30.0" winit = { version = "0.30" } diff --git a/code/showcase/pong/Cargo.toml b/code/showcase/pong/Cargo.toml index f80554437..617999d26 100644 --- a/code/showcase/pong/Cargo.toml +++ b/code/showcase/pong/Cargo.toml @@ -14,7 +14,7 @@ winit = { version = "0.30", features = ["android-native-activity"] } bytemuck = { version = "1.24", features = [ "derive" ] } cgmath = "0.18" pollster = "0.3" -wgpu = { version = "29.0", features = ["spirv"]} +wgpu = { version= "30.0", features = ["spirv"]} wgpu_glyph = { version = "0.22", git = "https://github.com/hecrj/wgpu_glyph.git" } rand = "0.8" rodio = { version = "0.16", default-features = false, features = ["wav"] } @@ -33,11 +33,11 @@ web-sys = { version = "0.3", features = [ "Window", "Element", ]} -wgpu = { version = "29.0", features = ["spirv", "webgl"]} +wgpu = { version= "30.0", features = ["spirv", "webgl"]} [build-dependencies] anyhow = "1.0" fs_extra = "1.2" glob = "0.3" rayon = "1.4" -naga = { version = "29.0", features = ["glsl-in", "spv-out", "wgsl-out"]} +naga = { version= "30.0", features = ["glsl-in", "spv-out", "wgsl-out"]} diff --git a/code/showcase/pong/src/render/mod.rs b/code/showcase/pong/src/render/mod.rs index b12dd2465..6a164b696 100644 --- a/code/showcase/pong/src/render/mod.rs +++ b/code/showcase/pong/src/render/mod.rs @@ -58,6 +58,7 @@ impl<'a> Render<'a> { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await .unwrap(); @@ -92,6 +93,7 @@ impl<'a> Render<'a> { alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; let pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { @@ -224,7 +226,7 @@ impl<'a> Render<'a> { self.staging_belt.finish(); self.queue.submit(iter::once(encoder.finish())); - frame.present(); + display.queue.present(frame); } Err(wgpu::SurfaceError::Outdated) => { log::info!("Outdated surface texture"); @@ -266,7 +268,7 @@ fn create_render_pipeline( device: &wgpu::Device, layout: &wgpu::PipelineLayout, color_format: wgpu::TextureFormat, - vertex_layouts: &[wgpu::VertexBufferLayout], + vertex_layouts: &[Option], vs_src: wgpu::ShaderModuleDescriptor, fs_src: wgpu::ShaderModuleDescriptor, ) -> wgpu::RenderPipeline { diff --git a/code/showcase/snow/src/main.rs b/code/showcase/snow/src/main.rs index 5253bc100..2488fa77c 100644 --- a/code/showcase/snow/src/main.rs +++ b/code/showcase/snow/src/main.rs @@ -222,7 +222,7 @@ impl framework::Demo for Snow { vertex: wgpu::VertexState { module: &shader, entry_point: Some("vs_main"), - buffers: &[PARTICLE_LAYOUT], + buffers: &[Some(PARTICLE_LAYOUT)], compilation_options: Default::default(), }, primitive: wgpu::PrimitiveState { @@ -387,7 +387,7 @@ impl framework::Demo for Snow { drop(draw_pass); display.queue.submit([encoder.finish()]); - frame.present(); + display.queue.present(frame); } } diff --git a/code/showcase/stencil/src/main.rs b/code/showcase/stencil/src/main.rs index a424e5869..57bbd4de3 100644 --- a/code/showcase/stencil/src/main.rs +++ b/code/showcase/stencil/src/main.rs @@ -535,7 +535,7 @@ impl Demo for Stencil { } display.queue.submit([encoder.finish()]); - frame.present(); + display.queue.present(frame); } } diff --git a/code/showcase/text/src/font.rs b/code/showcase/text/src/font.rs index bec3ca965..996fbfb49 100644 --- a/code/showcase/text/src/font.rs +++ b/code/showcase/text/src/font.rs @@ -361,7 +361,7 @@ impl TextPipeline { module: &shader, entry_point: Some("vs_glyph"), compilation_options: Default::default(), - buffers: &[FontVertex::LAYOUT], + buffers: &[Some(FontVertex::LAYOUT)], }, primitive: Default::default(), depth_stencil: None, @@ -380,10 +380,7 @@ impl TextPipeline { cache: None, }); - Self { - debug, - draw_glyph, - } + Self { debug, draw_glyph } } pub fn buffer_text( diff --git a/code/showcase/text/src/main.rs b/code/showcase/text/src/main.rs index 448101551..62a7440c5 100644 --- a/code/showcase/text/src/main.rs +++ b/code/showcase/text/src/main.rs @@ -217,7 +217,7 @@ impl framework::Demo for TextDemo { let millis = dti.as_micros() / 1000; let micros = dti.as_micros() % 1000; - + self.metrics_text.update_text( &display.device, &display.queue, @@ -275,7 +275,7 @@ impl framework::Demo for TextDemo { } display.queue.submit([encoder.finish()]); - frame.present(); + display.queue.present(frame); } } diff --git a/code/showcase/threading/Cargo.toml b/code/showcase/threading/Cargo.toml index 0610c5aaf..fe0d6f912 100644 --- a/code/showcase/threading/Cargo.toml +++ b/code/showcase/threading/Cargo.toml @@ -16,7 +16,7 @@ pollster = "0.3" log = "0.4" rayon = "1.4" # NEW! tobj = { version = "3.2", default-features = false, features = ["async"]} -wgpu = { version = "29.0"} +wgpu = { version= "30.0"} winit = { version = "0.30", features = ["android-native-activity"] } instant = "0.1" async-std = "1" @@ -30,7 +30,7 @@ features = ["png", "jpeg"] reqwest = { version = "0.11" } console_error_panic_hook = "0.1" console_log = "1.0" -wgpu = { version = "29.0", features = ["webgl"]} +wgpu = { version= "30.0", features = ["webgl"]} wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" web-sys = { version = "0.3", features = [ diff --git a/code/showcase/threading/src/lib.rs b/code/showcase/threading/src/lib.rs index bdfb0eedb..5ee7ecf7e 100644 --- a/code/showcase/threading/src/lib.rs +++ b/code/showcase/threading/src/lib.rs @@ -167,7 +167,7 @@ fn create_render_pipeline( layout: &wgpu::PipelineLayout, color_format: wgpu::TextureFormat, depth_format: Option, - vertex_layouts: &[wgpu::VertexBufferLayout], + vertex_layouts: &[Option], shader: wgpu::ShaderModuleDescriptor, ) -> wgpu::RenderPipeline { let shader = device.create_shader_module(shader); @@ -249,6 +249,7 @@ impl State { power_preference: wgpu::PowerPreference::HighPerformance, compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await .unwrap(); @@ -289,6 +290,7 @@ impl State { alpha_mode: surface_caps.alpha_modes[0], desired_maximum_frame_latency: 2, // The max number of frames that can be in the queue view_formats: vec![], + color_space: wgpu::SurfaceColorSpace::Auto, }; let texture_bind_group_layout = @@ -473,7 +475,7 @@ impl State { &render_pipeline_layout, config.format, Some(texture::Texture::DEPTH_FORMAT), - &[model::ModelVertex::desc(), InstanceRaw::desc()], + &[Some(model::ModelVertex::desc()), Some(InstanceRaw::desc())], shader, ) }; @@ -496,7 +498,7 @@ impl State { &layout, config.format, Some(texture::Texture::DEPTH_FORMAT), - &[model::ModelVertex::desc()], + &[Some(model::ModelVertex::desc())], shader, ) }; @@ -703,7 +705,7 @@ impl State { ); } self.queue.submit(iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/code/showcase/windowless/Cargo.toml b/code/showcase/windowless/Cargo.toml index c89b7c625..f8560ce1d 100644 --- a/code/showcase/windowless/Cargo.toml +++ b/code/showcase/windowless/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" [dependencies] image = "0.24" -wgpu = { version = "29.0", features = ["spirv"] } +wgpu = { version= "30.0", features = ["spirv"] } pollster = "0.3" flume.workspace = true diff --git a/code/showcase/windowless/src/main.rs b/code/showcase/windowless/src/main.rs index 54b7389a0..4d223283c 100644 --- a/code/showcase/windowless/src/main.rs +++ b/code/showcase/windowless/src/main.rs @@ -7,6 +7,7 @@ async fn run() { power_preference: wgpu::PowerPreference::default(), compatible_surface: None, force_fallback_adapter: false, + apply_limit_buckets: true, }) .await .unwrap(); @@ -163,7 +164,7 @@ async fn run() { device.poll(wgpu::PollType::wait_indefinitely()).unwrap(); rx.recv_async().await.unwrap().unwrap(); - let data = buffer_slice.get_mapped_range(); + let data = buffer_slice.get_mapped_range().unwrap(); use image::{ImageBuffer, Rgba}; let buffer = diff --git a/docs/beginner/tutorial2-surface/README.md b/docs/beginner/tutorial2-surface/README.md index 8dc6bfff0..cc2302a51 100644 --- a/docs/beginner/tutorial2-surface/README.md +++ b/docs/beginner/tutorial2-surface/README.md @@ -50,6 +50,7 @@ impl State { power_preference: wgpu::PowerPreference::default(), compatible_surface: Some(&surface), force_fallback_adapter: false, + apply_limit_buckets: true, }) .await?; @@ -169,6 +170,7 @@ The `memory_hints` field provides the adapter with a preferred memory allocation alpha_mode: surface_caps.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, + color_space: wgpu::SurfaceColorSpace::Auto, }; ``` @@ -392,7 +394,7 @@ Now we can get to clearing the screen (a long time coming). We need to use the ` // submit will accept anything that implements IntoIter self.queue.submit(std::iter::once(encoder.finish())); - output.present(); + self.queue.present(output); Ok(()) } diff --git a/docs/beginner/tutorial7-instancing/README.md b/docs/beginner/tutorial7-instancing/README.md index a9907987c..ed198e5ca 100644 --- a/docs/beginner/tutorial7-instancing/README.md +++ b/docs/beginner/tutorial7-instancing/README.md @@ -186,7 +186,7 @@ let render_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescrip vertex: wgpu::VertexState { // ... // UPDATED! - buffers: &[Vertex::desc(), InstanceRaw::desc()], + buffers: &[Some(Vertex::desc()), Some(InstanceRaw::desc())], }, // ... }); diff --git a/docs/beginner/tutorial9-models/README.md b/docs/beginner/tutorial9-models/README.md index d48e689d5..7b57af9f2 100644 --- a/docs/beginner/tutorial9-models/README.md +++ b/docs/beginner/tutorial9-models/README.md @@ -69,7 +69,7 @@ let render_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescrip // ... vertex: wgpu::VertexState { // ... - buffers: &[model::ModelVertex::desc(), InstanceRaw::desc()], + buffers: &[Some(model::ModelVertex::desc()), Some(InstanceRaw::desc())], }, // ... }); diff --git a/docs/compute/introduction/readme.md b/docs/compute/introduction/readme.md index aa1b4ac2f..fd35027ee 100644 --- a/docs/compute/introduction/readme.md +++ b/docs/compute/introduction/readme.md @@ -343,7 +343,7 @@ The process is a little involved so let's look at the code. rx.recv()??; // We then get the bytes that were stored in the buffer - let output_data = temp_buffer.get_mapped_range(..); + let output_data = temp_buffer.get_mapped_range(..)?; // Now we have the data on the CPU we can do what ever we want to with it assert_eq!(&input_data, bytemuck::cast_slice(&output_data)); diff --git a/docs/intermediate/tutorial10-lighting/README.md b/docs/intermediate/tutorial10-lighting/README.md index fcf70d781..fc0ebad99 100644 --- a/docs/intermediate/tutorial10-lighting/README.md +++ b/docs/intermediate/tutorial10-lighting/README.md @@ -130,7 +130,7 @@ fn create_render_pipeline( layout: &wgpu::PipelineLayout, color_format: wgpu::TextureFormat, depth_format: Option, - vertex_layouts: &[wgpu::VertexBufferLayout], + vertex_layouts: &[Option], shader: wgpu::ShaderModuleDescriptor, ) -> wgpu::RenderPipeline { let shader = device.create_shader_module(shader); @@ -199,7 +199,7 @@ let render_pipeline = { &render_pipeline_layout, config.format, Some(texture::Texture::DEPTH_FORMAT), - &[model::ModelVertex::desc(), InstanceRaw::desc()], + &[Some(model::ModelVertex::desc()), Some(InstanceRaw::desc())], shader, ) }; @@ -314,7 +314,7 @@ let light_render_pipeline = { &layout, config.format, Some(texture::Texture::DEPTH_FORMAT), - &[model::ModelVertex::desc()], + &[Some(model::ModelVertex::desc())], shader, ) }; diff --git a/docs/intermediate/tutorial13-hdr/readme.md b/docs/intermediate/tutorial13-hdr/readme.md index a84daffeb..8eacea398 100644 --- a/docs/intermediate/tutorial13-hdr/readme.md +++ b/docs/intermediate/tutorial13-hdr/readme.md @@ -194,7 +194,7 @@ fn create_render_pipeline( layout: &wgpu::PipelineLayout, color_format: wgpu::TextureFormat, depth_format: Option, - vertex_layouts: &[wgpu::VertexBufferLayout], + vertex_layouts: &[Option], topology: wgpu::PrimitiveTopology, // NEW! shader: wgpu::ShaderModuleDescriptor, ) -> wgpu::RenderPipeline { @@ -887,7 +887,7 @@ fn create_render_pipeline( layout: &wgpu::PipelineLayout, color_format: wgpu::TextureFormat, depth_format: Option, - vertex_layouts: &[wgpu::VertexBufferLayout], + vertex_layouts: &[Option], topology: wgpu::PrimitiveTopology, // NEW! shader: wgpu::ShaderModuleDescriptor, ) -> wgpu::RenderPipeline { diff --git a/docs/news/0.13/readme.md b/docs/news/0.13/readme.md index d4d574e9c..381b41fcc 100644 --- a/docs/news/0.13/readme.md +++ b/docs/news/0.13/readme.md @@ -14,7 +14,7 @@ The change log above contains most of the details about what has changed about W device.poll(wgpu::PollType::wait_indefinitely())?; mapping.await.unwrap(); - let data = buffer_slice.get_mapped_range(); + let data = buffer_slice.get_mapped_range()?; use image::{ImageBuffer, Rgba}; let buffer = @@ -37,7 +37,7 @@ We would do the following: device.poll(wgpu::PollType::wait_indefinitely())?; rx.recv_async().await.unwrap().unwrap(); - let data = buffer_slice.get_mapped_range(); + let data = buffer_slice.get_mapped_range()?; use image::{ImageBuffer, Rgba}; let buffer = diff --git a/docs/news/30.0/readme.md b/docs/news/30.0/readme.md new file mode 100644 index 000000000..a8984a234 --- /dev/null +++ b/docs/news/30.0/readme.md @@ -0,0 +1,6 @@ +# Update to 0.30! + +* `SurfaceTexture::present()` -> `Queue::present()` +* `VertexBufferLayout` entries can now be `None` +* `RequestAdapterOptions::apply_limit_bucketing` +* HDR `color_space: wgpu::SurfaceColorSpace::Srgb,` diff --git a/docs/news/pre-0.12/readme.md b/docs/news/pre-0.12/readme.md index 7fcc0ef8c..9372cf9aa 100644 --- a/docs/news/pre-0.12/readme.md +++ b/docs/news/pre-0.12/readme.md @@ -44,7 +44,7 @@ Another change is that you must call `SurfaceTexture::present()` after you submi ```rust self.queue.submit(iter::once(encoder.finish())); -output.present(); +self.queue.present(output); ``` There are a good deal of internal changes such as WebGL support (which I really need to cover). You can check out more on wgpu's [changelog](https://github.com/gfx-rs/wgpu/blob/master/CHANGELOG.md#wgpu-011-2021-10-07). diff --git a/docs/showcase/windowless/README.md b/docs/showcase/windowless/README.md index d38949c01..124a51e8c 100644 --- a/docs/showcase/windowless/README.md +++ b/docs/showcase/windowless/README.md @@ -267,7 +267,7 @@ In order to get the data out of the buffer, we need to first map it, then we can device.poll(wgpu::PollType::wait_indefinitely())?; rx.recv_async().await.unwrap().unwrap(); - let data = buffer_slice.get_mapped_range(); + let data = buffer_slice.get_mapped_range()?; use image::{ImageBuffer, Rgba}; let buffer = diff --git a/run-all.sh b/run-all.sh index 79eb55e3c..b106b05e6 100755 --- a/run-all.sh +++ b/run-all.sh @@ -1,30 +1,31 @@ #!/bin/bash -(trap 'kill 0' SIGINT; -cargo run --bin tutorial1-window & -cargo run --bin tutorial2-surface & -cargo run --bin tutorial2-challenge & -cargo run --bin tutorial3-pipeline & -cargo run --bin tutorial3-challenge & -cargo run --bin tutorial4-buffer & -cargo run --bin tutorial4-challenge & -cargo run --bin tutorial5-textures & -cargo run --bin tutorial5-challenge & -cargo run --bin tutorial6-uniforms & -cargo run --bin tutorial6-challenge & -cargo run --bin tutorial7-instancing & -cargo run --bin tutorial7-challenge & -cargo run --bin tutorial8-depth & -cargo run --bin tutorial8-challenge & -cargo run --bin tutorial9-models & -cargo run --bin tutorial10-lighting & -cargo run --bin tutorial11-normals & -cargo run --bin tutorial12-camera & -cargo run --bin tutorial13-hdr & -cargo run --bin windowless & -cargo run --bin gifs & -cargo run --bin compute & -cargo r -p stencil -cargo r -p mipmaps -# cargo run --bin pong -) +cargo build; + +./target/debug/tutorial1-window +./target/debug/tutorial2-surface +./target/debug/tutorial2-challenge +./target/debug/tutorial3-pipeline +./target/debug/tutorial3-challenge +./target/debug/tutorial4-buffer +./target/debug/tutorial4-challenge +./target/debug/tutorial5-textures +./target/debug/tutorial5-challenge +./target/debug/tutorial6-uniforms +./target/debug/tutorial6-challenge +./target/debug/tutorial7-instancing +./target/debug/tutorial7-challenge +./target/debug/tutorial8-depth +./target/debug/tutorial8-challenge +./target/debug/tutorial9-models +./target/debug/tutorial10-lighting +./target/debug/tutorial11-normals +./target/debug/tutorial12-camera +./target/debug/tutorial13-hdr +./target/debug/windowless +./target/debug/gifs +./target/debug/compute +./target/debug/stencil +./target/debug/mipmaps +./target/debug/text +# # ./target/debug/pong From f257698c0b9be17bbbce1e769c74597d1002b97b Mon Sep 17 00:00:00 2001 From: Benjamin Hansen Date: Thu, 9 Jul 2026 22:51:13 -0600 Subject: [PATCH 2/3] created Note component and working on updating docs for 30.0 --- .../tutorial2-surface/src/challenge.rs | 1 - code/beginner/tutorial2-surface/src/lib.rs | 1 - .../tutorial3-pipeline/src/challenge.rs | 1 - code/beginner/tutorial3-pipeline/src/lib.rs | 1 - .../tutorial4-buffer/src/challenge.rs | 1 - code/beginner/tutorial4-buffer/src/lib.rs | 1 - .../tutorial5-textures/src/challenge.rs | 1 - code/beginner/tutorial5-textures/src/lib.rs | 1 - .../tutorial6-uniforms/src/challenge.rs | 1 - code/beginner/tutorial6-uniforms/src/lib.rs | 1 - .../tutorial7-instancing/src/challenge.rs | 1 - code/beginner/tutorial7-instancing/src/lib.rs | 1 - .../beginner/tutorial8-depth/src/challenge.rs | 1 - code/beginner/tutorial8-depth/src/lib.rs | 1 - code/beginner/tutorial9-models/src/lib.rs | 1 - .../tutorial10-lighting/src/lib.rs | 1 - .../tutorial11-normals/src/lib.rs | 1 - .../intermediate/tutorial12-camera/src/lib.rs | 1 - code/intermediate/tutorial13-hdr/src/lib.rs | 3 +- code/intermediate/wip-terrain/src/lib.rs | 1 - code/showcase/compute/src/main.rs | 1 - code/showcase/text/src/main.rs | 1 - code/showcase/threading/src/lib.rs | 1 - docs/.vuepress/client.js | 2 + docs/.vuepress/components/Note.vue | 52 +++++++++++++++++++ docs/beginner/tutorial1-window/README.md | 8 +-- docs/beginner/tutorial2-surface/README.md | 23 ++++---- docs/beginner/tutorial3-pipeline/README.md | 36 ++++++------- docs/beginner/tutorial4-buffer/README.md | 52 ++++++++++++++++--- docs/beginner/tutorial5-textures/README.md | 12 ++--- docs/beginner/tutorial7-instancing/README.md | 6 +-- docs/beginner/tutorial9-models/README.md | 12 ++--- docs/compute/introduction/readme.md | 8 +-- docs/compute/sorting/readme.md | 4 +- .../tutorial10-lighting/README.md | 20 +++---- docs/intermediate/tutorial12-camera/README.md | 4 +- docs/intermediate/tutorial13-hdr/readme.md | 14 ++--- docs/intermediate/wip-terrain/README.md | 12 ++--- docs/news/26.0.1/readme.md | 4 +- docs/news/30.0/readme.md | 45 ++++++++++++++-- docs/news/pre-0.12/readme.md | 2 - docs/showcase/alignment/README.md | 2 +- docs/showcase/imgui-demo/README.md | 6 +-- docs/showcase/mipmaps/readme.md | 8 +-- docs/showcase/pong/README.md | 2 +- docs/showcase/stencil/readme.md | 8 +-- docs/showcase/threading/README.md | 14 ++--- docs/showcase/windowless/README.md | 8 +-- 48 files changed, 246 insertions(+), 143 deletions(-) create mode 100644 docs/.vuepress/components/Note.vue diff --git a/code/beginner/tutorial2-surface/src/challenge.rs b/code/beginner/tutorial2-surface/src/challenge.rs index 36dbb4ff6..433e017fc 100644 --- a/code/beginner/tutorial2-surface/src/challenge.rs +++ b/code/beginner/tutorial2-surface/src/challenge.rs @@ -122,7 +122,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/beginner/tutorial2-surface/src/lib.rs b/code/beginner/tutorial2-surface/src/lib.rs index 78db7a5f4..6238b3fdc 100644 --- a/code/beginner/tutorial2-surface/src/lib.rs +++ b/code/beginner/tutorial2-surface/src/lib.rs @@ -122,7 +122,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/beginner/tutorial3-pipeline/src/challenge.rs b/code/beginner/tutorial3-pipeline/src/challenge.rs index 9b2d4d6e9..92cfcd3c2 100644 --- a/code/beginner/tutorial3-pipeline/src/challenge.rs +++ b/code/beginner/tutorial3-pipeline/src/challenge.rs @@ -248,7 +248,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/beginner/tutorial3-pipeline/src/lib.rs b/code/beginner/tutorial3-pipeline/src/lib.rs index 1ce373b4e..4c5140dac 100644 --- a/code/beginner/tutorial3-pipeline/src/lib.rs +++ b/code/beginner/tutorial3-pipeline/src/lib.rs @@ -193,7 +193,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/beginner/tutorial4-buffer/src/challenge.rs b/code/beginner/tutorial4-buffer/src/challenge.rs index 22ac45285..d58910ca5 100644 --- a/code/beginner/tutorial4-buffer/src/challenge.rs +++ b/code/beginner/tutorial4-buffer/src/challenge.rs @@ -312,7 +312,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/beginner/tutorial4-buffer/src/lib.rs b/code/beginner/tutorial4-buffer/src/lib.rs index 89d209142..0a52d9003 100644 --- a/code/beginner/tutorial4-buffer/src/lib.rs +++ b/code/beginner/tutorial4-buffer/src/lib.rs @@ -267,7 +267,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/beginner/tutorial5-textures/src/challenge.rs b/code/beginner/tutorial5-textures/src/challenge.rs index c789a89d0..89b970cad 100644 --- a/code/beginner/tutorial5-textures/src/challenge.rs +++ b/code/beginner/tutorial5-textures/src/challenge.rs @@ -345,7 +345,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/beginner/tutorial5-textures/src/lib.rs b/code/beginner/tutorial5-textures/src/lib.rs index 8a27cb8d0..898fd45e4 100644 --- a/code/beginner/tutorial5-textures/src/lib.rs +++ b/code/beginner/tutorial5-textures/src/lib.rs @@ -314,7 +314,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/beginner/tutorial6-uniforms/src/challenge.rs b/code/beginner/tutorial6-uniforms/src/challenge.rs index 13e3e2a43..f3a0f44b1 100644 --- a/code/beginner/tutorial6-uniforms/src/challenge.rs +++ b/code/beginner/tutorial6-uniforms/src/challenge.rs @@ -520,7 +520,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/beginner/tutorial6-uniforms/src/lib.rs b/code/beginner/tutorial6-uniforms/src/lib.rs index d6c4d01b1..7911cdb91 100644 --- a/code/beginner/tutorial6-uniforms/src/lib.rs +++ b/code/beginner/tutorial6-uniforms/src/lib.rs @@ -518,7 +518,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/beginner/tutorial7-instancing/src/challenge.rs b/code/beginner/tutorial7-instancing/src/challenge.rs index 1ea609095..9680e7b24 100644 --- a/code/beginner/tutorial7-instancing/src/challenge.rs +++ b/code/beginner/tutorial7-instancing/src/challenge.rs @@ -624,7 +624,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/beginner/tutorial7-instancing/src/lib.rs b/code/beginner/tutorial7-instancing/src/lib.rs index 0b94c429a..62ad9764a 100644 --- a/code/beginner/tutorial7-instancing/src/lib.rs +++ b/code/beginner/tutorial7-instancing/src/lib.rs @@ -609,7 +609,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/beginner/tutorial8-depth/src/challenge.rs b/code/beginner/tutorial8-depth/src/challenge.rs index 472636329..df93657f4 100644 --- a/code/beginner/tutorial8-depth/src/challenge.rs +++ b/code/beginner/tutorial8-depth/src/challenge.rs @@ -828,7 +828,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/beginner/tutorial8-depth/src/lib.rs b/code/beginner/tutorial8-depth/src/lib.rs index 7aa9a3e65..56434012d 100644 --- a/code/beginner/tutorial8-depth/src/lib.rs +++ b/code/beginner/tutorial8-depth/src/lib.rs @@ -634,7 +634,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/beginner/tutorial9-models/src/lib.rs b/code/beginner/tutorial9-models/src/lib.rs index a9c2ff7e3..2b44d9716 100644 --- a/code/beginner/tutorial9-models/src/lib.rs +++ b/code/beginner/tutorial9-models/src/lib.rs @@ -546,7 +546,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/intermediate/tutorial10-lighting/src/lib.rs b/code/intermediate/tutorial10-lighting/src/lib.rs index 2a7ae31f5..aa2817ceb 100644 --- a/code/intermediate/tutorial10-lighting/src/lib.rs +++ b/code/intermediate/tutorial10-lighting/src/lib.rs @@ -673,7 +673,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/intermediate/tutorial11-normals/src/lib.rs b/code/intermediate/tutorial11-normals/src/lib.rs index 7cc752689..519bcd612 100644 --- a/code/intermediate/tutorial11-normals/src/lib.rs +++ b/code/intermediate/tutorial11-normals/src/lib.rs @@ -720,7 +720,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/intermediate/tutorial12-camera/src/lib.rs b/code/intermediate/tutorial12-camera/src/lib.rs index 78afa383e..0b4c137cf 100644 --- a/code/intermediate/tutorial12-camera/src/lib.rs +++ b/code/intermediate/tutorial12-camera/src/lib.rs @@ -626,7 +626,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/intermediate/tutorial13-hdr/src/lib.rs b/code/intermediate/tutorial13-hdr/src/lib.rs index 25af23269..513cc368e 100644 --- a/code/intermediate/tutorial13-hdr/src/lib.rs +++ b/code/intermediate/tutorial13-hdr/src/lib.rs @@ -308,7 +308,7 @@ impl State { // NEW! view_formats: vec![surface_format.add_srgb_suffix()], desired_maximum_frame_latency: 2, - color_space: wgpu::SurfaceColorSpace::Srgb, + color_space: wgpu::SurfaceColorSpace::Auto, }; let texture_bind_group_layout = @@ -725,7 +725,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/intermediate/wip-terrain/src/lib.rs b/code/intermediate/wip-terrain/src/lib.rs index 10399fc83..de1c41cc0 100644 --- a/code/intermediate/wip-terrain/src/lib.rs +++ b/code/intermediate/wip-terrain/src/lib.rs @@ -673,7 +673,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/showcase/compute/src/main.rs b/code/showcase/compute/src/main.rs index 44c16f922..e91b43afc 100644 --- a/code/showcase/compute/src/main.rs +++ b/code/showcase/compute/src/main.rs @@ -542,7 +542,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/showcase/text/src/main.rs b/code/showcase/text/src/main.rs index 62a7440c5..80af53e2c 100644 --- a/code/showcase/text/src/main.rs +++ b/code/showcase/text/src/main.rs @@ -198,7 +198,6 @@ impl framework::Demo for TextDemo { let frame = match display.surface().get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - display.configure(); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/code/showcase/threading/src/lib.rs b/code/showcase/threading/src/lib.rs index 5ee7ecf7e..86368a185 100644 --- a/code/showcase/threading/src/lib.rs +++ b/code/showcase/threading/src/lib.rs @@ -629,7 +629,6 @@ impl State { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/docs/.vuepress/client.js b/docs/.vuepress/client.js index 21d144cfc..96c85db25 100644 --- a/docs/.vuepress/client.js +++ b/docs/.vuepress/client.js @@ -3,11 +3,13 @@ import { defineClientConfig } from "vuepress/client"; import WasmExample from "./components/WasmExample.vue"; import AutoGithubLink from "./components/AutoGithubLink.vue" import RecentArticles from "./components/RecentArticles.vue" +import Note from "./components/Note.vue"; export default defineClientConfig({ enhance({ app }) { app.component("WasmExample", WasmExample); app.component("AutoGithubLink", AutoGithubLink); app.component("RecentArticles", RecentArticles); + app.component("Note", Note); }, }); \ No newline at end of file diff --git a/docs/.vuepress/components/Note.vue b/docs/.vuepress/components/Note.vue new file mode 100644 index 000000000..5912f5e2d --- /dev/null +++ b/docs/.vuepress/components/Note.vue @@ -0,0 +1,52 @@ + + + \ No newline at end of file diff --git a/docs/beginner/tutorial1-window/README.md b/docs/beginner/tutorial1-window/README.md index 9bcc61083..d1d0cfbff 100644 --- a/docs/beginner/tutorial1-window/README.md +++ b/docs/beginner/tutorial1-window/README.md @@ -271,13 +271,13 @@ crate-type = ["cdylib", "rlib"] These lines tell Cargo that we want to allow our crate to build a native Rust static library (rlib) and a C/C++ compatible library (cdylib). We need rlib if we want to run wgpu in a desktop environment. We need cdylib to create the Web Assembly that the browser will run. -
+ ## Web Assembly Web Assembly, i.e. WASM, is a binary format supported by most modern browsers that allows lower-level languages such as Rust to run on a web page. This allows us to write the bulk of our application in Rust and use a few lines of Javascript to get it running in a web browser. -
+ Now, all we need are some more dependencies that are specific to running in WASM: @@ -358,7 +358,7 @@ init().then(() => console.log("WASM Loaded")); This site uses [Vuepress](https://vuepress.vuejs.org/), so I load the WASM in a Vue component. How you handle your WASM will depend on what you want to do. If you want to check out how I'm doing things, take a look at [this](https://github.com/sotrh/learn-wgpu/blob/master/docs/.vuepress/components/WasmExample.vue). -
+ If you intend to use your WASM module in a plain HTML website, you'll need to tell wasm-pack to target the web: @@ -401,7 +401,7 @@ You'll then need to run the WASM code in an ES6 Module: ``` -
+ ## Demo diff --git a/docs/beginner/tutorial2-surface/README.md b/docs/beginner/tutorial2-surface/README.md index cc2302a51..b5ddc2ef5 100644 --- a/docs/beginner/tutorial2-surface/README.md +++ b/docs/beginner/tutorial2-surface/README.md @@ -81,7 +81,7 @@ The `adapter` is a handle for our actual graphics card. You can use this to get * The `compatible_surface` field tells wgpu to find an adapter that can present to the supplied surface. * The `force_fallback_adapter` forces wgpu to pick an adapter that will work on all hardware. This usually means that the rendering backend will use a "software" system instead of hardware such as a GPU. -
+ The options I've passed to `request_adapter` aren't guaranteed to work for all devices, but will work for most of them. If wgpu can't find an adapter with the required permissions, `request_adapter` will return `None`. If you want to get all adapters for a particular backend, you can use `enumerate_adapters`. This will give you an iterator that you can loop over to check if one of the adapters works for your needs. @@ -104,7 +104,7 @@ Another thing to note is that `Adapter`s are locked to a specific backend. If yo For more fields you can use to refine your search, [check out the docs](https://docs.rs/wgpu/latest/wgpu/struct.Adapter.html). -
+ ### What is the Surface? @@ -135,7 +135,7 @@ Let's use the `adapter` to create the device and queue. The `required_features` field on `DeviceDescriptor` allows us to specify what extra features we want. For this simple example, I've decided not to use any extra features. -
+ The graphics card you have limits the features you can use. If you want to use certain features, you may need to limit what devices you support or provide workarounds. @@ -143,7 +143,7 @@ You can get a list of features supported by your device using `adapter.features( You can view a full list of features [here](https://docs.rs/wgpu/latest/wgpu/struct.Features.html). -
+ The `experimental_features` field specifies whether we intend to use features that are not stable yet. We'll leave this as disabled for now. @@ -186,11 +186,11 @@ The `format` defines how `SurfaceTexture`s will be stored on the GPU. We can get Make sure that the width and height of the `SurfaceTexture` are not 0, as that can cause your app to crash. - + `present_mode` uses `wgpu::PresentMode` enum, which determines how to sync the surface with the display. For the sake of simplicity, we select the first available option. If you do not want runtime selection, `PresentMode::Fifo` will cap the display rate at the display's framerate. This is essentially VSync. This mode is guaranteed to be supported on all platforms. There are other options, and you can see all of them [in the docs](https://docs.rs/wgpu/latest/wgpu/enum.PresentMode.html) -
+ If you want to let your users pick what `PresentMode` they use, you can use [SurfaceCapabilities::present_modes](https://docs.rs/wgpu/latest/wgpu/struct.SurfaceCapabilities.html#structfield.present_modes) to get a list of all the `PresentMode`s the surface supports: @@ -200,7 +200,7 @@ let modes = &surface_caps.present_modes; Regardless, `PresentMode::Fifo` will always be supported, and `PresentMode::AutoVsync` and `PresentMode::AutoNoVsync` have fallback support and therefore will work on all platforms. -
+ `alpha_mode` is honestly not something I'm familiar with. I believe it has something to do with transparent windows, but feel free to open a pull request. For now, we'll just use the first `AlphaMode` in the list given by `surface_caps`. @@ -328,7 +328,6 @@ fn render(&mut self) -> anyhow::Result<()> { let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout @@ -457,11 +456,11 @@ Some of you may be able to tell what's going on just by looking at it, but I'd b A `RenderPassDescriptor` only has three fields: `label`, `color_attachments` and `depth_stencil_attachment`. The `color_attachments` describe where we are going to draw our color to. We use the `TextureView` we created earlier to make sure that we render to the screen. -
+ The `color_attachments` field is a "sparse" array. This allows you to use a pipeline that expects multiple render targets and only supplies the ones you care about. -
+ We'll use `depth_stencil_attachment` later, but we'll set it to `None` for now. @@ -487,13 +486,13 @@ The `resolve_target` is the texture that will receive the resolved output. This The `ops` field takes a `wgpu::Operations` object. This tells wgpu what to do with the colors on the screen (specified by `view`). The `load` field tells wgpu how to handle colors stored from the previous frame. Currently, we are clearing the screen with a bluish color. The `store` field tells wgpu whether we want to store the rendered results to the `Texture` behind our `TextureView` (in this case, it's the `SurfaceTexture`). We use `StoreOp::Store` as we do want to store our render results. -
+ It's not uncommon to not clear the screen if the screen is going to be completely covered up with objects. If your scene doesn't cover the entire screen, however, you can end up with something like this. ![./no-clear.png](./no-clear.png) -
+ ## Validation Errors? diff --git a/docs/beginner/tutorial3-pipeline/README.md b/docs/beginner/tutorial3-pipeline/README.md index ecb43ebe5..71417c084 100644 --- a/docs/beginner/tutorial3-pipeline/README.md +++ b/docs/beginner/tutorial3-pipeline/README.md @@ -31,17 +31,17 @@ In the case of wgpu, it's done by the library called [naga](https://github.com/g Note that, at the time of writing this, some WebGPU implementations also support SPIR-V, but it's just a temporary measure during the transition period to WGSL and will be removed (If you are curious about the drama behind SPIR-V and WGSL, please refer to [this blog post](https://kvark.github.io/spirv/2021/05/01/spirv-horrors.html)). -
+ If you've gone through this tutorial before, you'll likely notice that I've switched from using GLSL to using WGSL. Given that GLSL support is a secondary concern and that WGSL is the first-class language of WGPU, I've elected to convert all the tutorials to use WGSL. Some showcase examples still use GLSL, but the main tutorial and all examples going forward will be using WGSL. -
+ -
+ The WGSL spec and its inclusion in WGPU are still in development. If you run into trouble using it, you may want the folks at [https://app.element.io/#/room/#wgpu:matrix.org](https://app.element.io/#/room/#wgpu:matrix.org) to take a look at your code. -
+ ## Writing the shaders @@ -68,31 +68,31 @@ fn vs_main( First, we declare `struct` to store the output of our vertex shader. This currently consists of only one field, which is our vertex's `clip_position`. The `@builtin(position)` bit tells WGPU that this is the value we want to use as the vertex's [clip coordinates](https://en.wikipedia.org/wiki/Clip_coordinates). This is analogous to GLSL's `gl_Position` variable. -
+ Vector types such as `vec4` are generic. Currently, you must specify the type of value the vector will contain. Thus, a 3D vector using 32bit floats would be `vec3`. -
+ The next part of the shader code is the `vs_main` function. We are using `@vertex` to mark this function as a valid entry point for a vertex shader. We expect a `u32` called `in_vertex_index`, which gets its value from `@builtin(vertex_index)`. We then declare a variable called `out` using our `VertexOutput` struct. We create two other variables for the `x` and `y` of a triangle. -
+ The `f32()` and `i32()` bits are examples of casts. -
+ -
+ Variables defined with `var` can be modified but must specify their type. Variables created with `let` can have their types inferred, but their value cannot be changed during the shader. -
+ Now we can save our `clip_position` to `out`. We then just return `out`, and we're done with the vertex shader! -
+ We technically didn't need a struct for this example and could have just done something like the following: @@ -107,7 +107,7 @@ fn vs_main( We'll be adding more fields to `VertexOutput` later, so we might as well start using it now. -
+ Next up, the fragment shader. Still in `shader.wgsl` add the following: @@ -122,15 +122,15 @@ fn fs_main(in: VertexOutput) -> @location(0) vec4 { This sets the color of the current fragment to brown. -
+ Notice that the entry point for the vertex shader was named `vs_main` and that the entry point for the fragment shader is called `fs_main`. In earlier versions of wgpu, it was ok for both these functions to have the same name, but newer versions of the [WGSL spec](https://www.w3.org/TR/WGSL/#declaration-and-scope) require these names to be different. Therefore, the above-mentioned naming scheme (which is adopted from the `wgpu` examples) is used throughout the tutorial. -
+ The `@location(0)` bit tells WGPU to store the `vec4` value returned by this function in the first color target. We'll get into what this is later. -
+ Something to note about `@builtin(position)`, in the fragment shader, this value is in [framebuffer space](https://gpuweb.github.io/gpuweb/#coordinate-systems). This means that if your window is 800x600, the x and y of `clip_position` would be between 0-800 and 0-600, respectively, with the y = 0 being the top of the screen. This can be useful if you want to know the pixel coordinates of a given fragment, but if you want the position coordinates, you'll have to pass them in separately. @@ -153,7 +153,7 @@ fn vs_main( } ``` -
+ ## How do we use the shaders? @@ -182,7 +182,7 @@ let shader = device.create_shader_module(wgpu::ShaderModuleDescriptor { }); ``` -
+ You can also use `include_wgsl!` macro as a small shortcut to create the `ShaderModuleDescriptor`. @@ -190,7 +190,7 @@ You can also use `include_wgsl!` macro as a small shortcut to create the `Shader let shader = device.create_shader_module(wgpu::include_wgsl!("shader.wgsl")); ``` -
+ One more thing, we need to create a `PipelineLayout`. We'll get more into this after we cover `Buffer`s. diff --git a/docs/beginner/tutorial4-buffer/README.md b/docs/beginner/tutorial4-buffer/README.md index 895f174f3..5efce6a91 100644 --- a/docs/beginner/tutorial4-buffer/README.md +++ b/docs/beginner/tutorial4-buffer/README.md @@ -90,7 +90,7 @@ struct Vertex { } ``` -
+ If your struct includes types that don't implement `Pod` and `Zeroable`, you'll need to implement these traits manually. These traits don't require us to implement any methods, so we just need to use the following to get our code to work. @@ -99,7 +99,7 @@ unsafe impl bytemuck::Pod for Vertex {} unsafe impl bytemuck::Zeroable for Vertex {} ``` -
+ Finally, we can add our `vertex_buffer` to our `State` struct. @@ -178,7 +178,7 @@ impl Vertex { } ``` -
+ Specifying the attributes as we did now is quite verbose. We could use the `vertex_attr_array` macro provided by wgpu to clean things up a bit. With it, our `VertexBufferLayout` becomes @@ -211,7 +211,7 @@ impl Vertex { Regardless, I feel it's good to show how the data gets mapped, so I'll forgo using this macro for now. -
+ Now, we can use it when we create the `render_pipeline`. @@ -221,14 +221,41 @@ let render_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescrip vertex: wgpu::VertexState { // ... buffers: &[ - Vertex::desc(), + Some(Vertex::desc()), ], }, // ... }); ``` -One more thing: we need to actually set the vertex buffer in the render method. Otherwise, our program will crash. +You'll notice that buffers is a `&[Option]`. Each entry +in this list represents a slot that a buffer can be bound to. Having `None` means +that slot should be empty. This can be useful if you like having specific buffers +in specific slots. For example consider the following buffer list: + +```rust +&[ + Some(Vertex::desc()), + Some(Instance::desc()), + Some(Material::desc()), +] +``` + +Slot 0 would be a vertex buffer, slot 1 would be an instance buffer (we'll talk +about those [later](../tutorial7-instancing/)), and a buffer for material data. +If you only wanted vertex and material data in your pipeline you could use the +following: + +```rust +&[ + Some(Vertex::desc()), + None, + Some(Material::desc()), +] +``` + +For this demo we will only use one buffer. That said we need to actually set the +vertex buffer in the render method otherwise, our program will crash. ```rust // render() @@ -238,10 +265,21 @@ render_pass.set_vertex_buffer(0, self.vertex_buffer.slice(..)); render_pass.draw(0..3, 0..1); ``` -`set_vertex_buffer` takes two parameters. The first is what buffer slot to use for this vertex buffer. You can have multiple vertex buffers set at a time. +`set_vertex_buffer` takes two parameters. The first is what buffer slot to use for this vertex buffer. The second parameter is the slice of the buffer to use. You can store as many objects in a buffer as your hardware allows, so `slice` allows us to specify which portion of the buffer to use. We use `..` to specify the entire buffer. + + +If you want to specify a slot is empty you can pass `None` for +the buffer slice parameter. + +```rust +render_pass.set_vertex_buffer(slot_num, None); +``` + + + Before we continue, we should change the `render_pass.draw()` call to use the number of vertices specified by `VERTICES`. Add a `num_vertices` to `State`, and set it to be equal to `VERTICES.len()`. ```rust diff --git a/docs/beginner/tutorial5-textures/README.md b/docs/beginner/tutorial5-textures/README.md index 8e70d2098..bd11f5e4f 100644 --- a/docs/beginner/tutorial5-textures/README.md +++ b/docs/beginner/tutorial5-textures/README.md @@ -21,11 +21,11 @@ features = ["png", "jpeg"] The jpeg decoder that `image` includes uses [rayon](https://docs.rs/rayon) to speed up the decoding with threads. WASM doesn't support threads currently, so we need to disable this so our code won't crash when we try to load a jpeg on the web. -
+ Decoding jpegs in WASM isn't very performant. If you want to speed up image loading in general in WASM, you could opt to use the browser's built-in decoders instead of `image` when building with `wasm-bindgen`. This will involve creating an `` tag in Rust to get the image and then a `` to get the pixel data, but I'll leave this as an exercise for the reader. -
+ In `State`'s `new()` method, add the following just after declaring the `config`: @@ -111,7 +111,7 @@ queue.write_texture( ); ``` -
+ The old way of writing data to a texture was to copy the pixel data to a buffer and then copy it to the texture. Using `write_texture` is a bit more efficient as it uses one buffer less - I'll leave it here, though, in case you need it. @@ -149,7 +149,7 @@ queue.submit(std::iter::once(encoder.finish())); The `bytes_per_row` field needs some consideration. This value needs to be a multiple of 256. Check out [the gif tutorial](../../showcase/gifs/#how-do-we-make-the-frames) for more details. -
+ ## TextureViews and Samplers @@ -554,11 +554,11 @@ impl Texture { } ``` -
+ Notice that we're using `to_rgba8()` instead of `as_rgba8()`. PNGs work fine with `as_rgba8()`, as they have an alpha channel. But JPEGs don't have an alpha channel, and the code would panic if we try to call `as_rgba8()` on the JPEG texture image we are going to use. Instead, we can use `to_rgba8()` to handle such an image, which will generate a new image buffer with an alpha channel even if the original image does not have one. -
+ We need to import `texture.rs` as a module, so at the top of `lib.rs` add the following. diff --git a/docs/beginner/tutorial7-instancing/README.md b/docs/beginner/tutorial7-instancing/README.md index ed198e5ca..c261146ae 100644 --- a/docs/beginner/tutorial7-instancing/README.md +++ b/docs/beginner/tutorial7-instancing/README.md @@ -38,11 +38,11 @@ struct Instance { } ``` -
+ A `Quaternion` is a mathematical structure often used to represent rotation. The math behind them is beyond me (it involves imaginary numbers and 4D space), so I won't be covering them here. If you really want to dive into them [here's a Wolfram Alpha article](https://mathworld.wolfram.com/Quaternion.html). -
+ Using these values directly in the shader would be a pain, as quaternions don't have a WGSL analog. I don't feel like writing the math in the shader, so we'll convert the `Instance` data into a matrix and store it in a struct called `InstanceRaw`. @@ -222,7 +222,7 @@ render_pass.draw_indexed(0..self.num_indices, 0, 0..self.instances.len() as _); Make sure that if you add new instances to the `Vec`, you recreate the `instance_buffer` as well as `camera_bind_group`. Otherwise, your new instances won't show up correctly. - + We need to reference the parts of our new matrix in `shader.wgsl` so that we can use it for our instances. Add the following to the top of `shader.wgsl`. diff --git a/docs/beginner/tutorial9-models/README.md b/docs/beginner/tutorial9-models/README.md index 7b57af9f2..1948e4da1 100644 --- a/docs/beginner/tutorial9-models/README.md +++ b/docs/beginner/tutorial9-models/README.md @@ -110,17 +110,17 @@ fn main() -> Result<()> { } ``` -
+ Make sure to put `build.rs` in the same folder as the `Cargo.toml`. If you don't, Cargo won't run it when your crate builds. -
+ -
+ The `OUT_DIR` is an environment variable that Cargo uses to specify where our application will be built. -
+ You'll need to modify your `Cargo.toml` for this to work properly. Add the following below your `[dependencies]` block. @@ -189,11 +189,11 @@ pub async fn load_binary(file_name: &str) -> anyhow::Result> { } ``` -
+ We're using `OUT_DIR` on desktop to access our `res` folder. -
+ I'm using [reqwest](https://docs.rs/reqwest) to handle loading the requests when using WASM. Add the following to the `Cargo.toml`: diff --git a/docs/compute/introduction/readme.md b/docs/compute/introduction/readme.md index fd35027ee..3b2fabec7 100644 --- a/docs/compute/introduction/readme.md +++ b/docs/compute/introduction/readme.md @@ -68,14 +68,14 @@ a device and queue with this simple code: let (device, queue) = adapter.request_device(&Default::default()).await.unwrap(); ``` -
+ I'm using [pollster](https://docs.rs/pollster) to handle `async` in the native code in these examples. You can use whatever `async` implementation you like though. I'm also using [anyhow](https://docs.rs/anyhow) for error handling, and [flume](https://docs.rs/flume) for it's `async` channel implementation. -
+ If you want more info about these calls and the potential arguments you can pass to them check out [the rendering guide](../../beginner/tutorial2-surface/). @@ -172,7 +172,7 @@ that the following: This means that we might not be able to use `@workgroup_size(64, 64, 1)` but `@workgroup_size(16, 16, 1)` should work on most devices. -
+ ### Why XYZ? @@ -183,7 +183,7 @@ For example, a blur on a 2D image would benefit from a 2D work group so each thr match up to a pixel in the image. A marching cubes implementation would benefit from a 3D workgroup, so each thread handles the geometry for one voxel in the voxel grid. -
+ ## The global invocation id diff --git a/docs/compute/sorting/readme.md b/docs/compute/sorting/readme.md index 6c46b1b4e..8e0d9081b 100644 --- a/docs/compute/sorting/readme.md +++ b/docs/compute/sorting/readme.md @@ -166,7 +166,7 @@ until all other threads in the work group have reached the barrier. It will also sync up all atomic variables and data stored in workgroup address space as well. -
+ In WGSL and "address space" determines how a certain chunk of can be access. Data in the `workgroup` address space is only accessible by threads within @@ -175,7 +175,7 @@ the same workgroup. Many of the address spaces are implicit such as the significant as they correspond to uniform buffers and storage buffers respectively. -
+ A `storageBarrier` will cause the GPU to sync all changes to storage buffers. Since our data is in a storage buffer, this is the barrier we need to diff --git a/docs/intermediate/tutorial10-lighting/README.md b/docs/intermediate/tutorial10-lighting/README.md index fc0ebad99..a66ff6dbd 100644 --- a/docs/intermediate/tutorial10-lighting/README.md +++ b/docs/intermediate/tutorial10-lighting/README.md @@ -35,14 +35,14 @@ struct LightUniform { Our `LightUniform` represents a colored point in space. We're just going to use pure white light, but it's good to allow different colors of light. -
+ The rule of thumb for alignment with WGSL structs is field alignments are always powers of 2. For example, a `vec3` may only have three float fields, giving it a size of 12. The alignment will be bumped up to the next power of 2 being 16. This means that you have to be more careful with how you layout your struct in Rust. Some developers choose to use `vec4`s instead of `vec3`s to avoid alignment issues. You can learn more about the alignment rules in the [WGSL spec](https://www.w3.org/TR/WGSL/#alignment-and-size) -
+ We're going to create another buffer to store our light in. @@ -622,11 +622,11 @@ We could compute the normal matrix in the vertex shader, but that would involve Instead, we're going to add a `normal` matrix field to `InstanceRaw`. Instead of inverting the model matrix, we'll just use the instance's rotation to create a `Matrix3`. -
+ We are using `Matrix3` instead of `Matrix4` as we only really need the rotation component of the matrix. -
+ ```rust #[repr(C)] @@ -762,13 +762,13 @@ fn vs_main( } ``` -
+ I'm currently doing things in [world space](https://gamedev.stackexchange.com/questions/65783/what-are-world-space-and-eye-space-in-game-development). Doing things in view-space, also known as eye-space, is more standard as objects can have lighting issues when they are further away from the origin. If we wanted to use view-space, we would have included the rotation due to the view matrix as well. We'd also have to transform our light's position using something like `view_matrix * model_matrix * light_position` to keep the calculation from getting messed up when the camera moves. There are advantages to using view space. The main one is that when you have massive worlds doing lighting and other calculations in model spacing, it can cause issues as floating-point precision degrades when numbers get really large. View space keeps the camera at the origin meaning all calculations will be using smaller numbers. The actual lighting math ends up the same, but it does require a bit more setup. -
+ With that change, our lighting now looks correct. @@ -778,7 +778,7 @@ Bringing back our other objects and adding the ambient lighting gives us this. ![./ambient_diffuse_lighting.png](./ambient_diffuse_lighting.png); -
+ If you can guarantee that your model matrix will always apply uniform scaling to your objects, you can get away with just using the model matrix. Github user @julhe shared this code with me that does the trick: @@ -792,7 +792,7 @@ The scaling factor *needs* to be uniform in order for this to work. If it's not, ![./normal-scale-issue.png](./normal-scale-issue.png) -
+ ## Specular Lighting @@ -811,11 +811,11 @@ struct Camera { var camera: Camera; ``` -
+ Don't forget to update the `Camera` struct in `light.wgsl` as well, as if it doesn't match the `CameraUniform` struct in rust, the light will render wrong. -
+ We're going to need to update the `CameraUniform` struct as well. diff --git a/docs/intermediate/tutorial12-camera/README.md b/docs/intermediate/tutorial12-camera/README.md index 00abe0bab..006dcd521 100644 --- a/docs/intermediate/tutorial12-camera/README.md +++ b/docs/intermediate/tutorial12-camera/README.md @@ -22,7 +22,7 @@ pub const OPENGL_TO_WGPU_MATRIX: cgmath::Matrix4 = cgmath::Matrix4::from_co const SAFE_FRAC_PI_2: f32 = FRAC_PI_2 - 0.0001; ``` -
+ `std::time::Instant` panics on WASM, so we'll use the [instant crate](https://docs.rs/instant). You'll want to include it in your `Cargo.toml`: @@ -35,7 +35,7 @@ instant = "0.1" instant = { version = "0.1", features = [ "wasm-bindgen" ] } ``` -
+ ## The Camera diff --git a/docs/intermediate/tutorial13-hdr/readme.md b/docs/intermediate/tutorial13-hdr/readme.md index 8eacea398..dd49d0851 100644 --- a/docs/intermediate/tutorial13-hdr/readme.md +++ b/docs/intermediate/tutorial13-hdr/readme.md @@ -12,11 +12,11 @@ In layman's terms, a High Dynamic Range texture is a texture with more bits per As of writing, wgpu doesn't allow us to use a floating point format such as `TextureFormat::Rgba16Float` as the surface texture format (not all monitors support that anyway), so we will have to render our scene in an HDR format, then convert the values to a supported format, such as `TextureFormat::Bgra8UnormSrgb` using a technique called tonemapping. -
+ There are some talks about implementing HDR surface texture support in wgpu. Here is a GitHub issue if you want to contribute to that effort: https://github.com/gfx-rs/wgpu/issues/2920 -
+ Before we do that, though, we need to switch to using an HDR texture for rendering. @@ -389,7 +389,7 @@ While we can technically use an equirectangular map directly, as long as we do s A cube map is a special kind of texture that has six layers. Each layer corresponds to a different face of an imaginary cube that is aligned to the X, Y and Z axes. The layers are stored in the following order: +X, -X, +Y, -Y, +Z, -Z. - + To prepare to store the cube texture, we are going to create a new struct called `CubeTexture` in `texture.rs`. @@ -495,7 +495,7 @@ Consequently, we are going to remove the WebGL feature from `Cargo.toml`. This l wgpu = { version = "28.0", features = ["webgl"]} ``` - + Now that we've told wgpu that we want to use the compute shaders, let's create a struct in `resource.rs` that we'll use to load the HDR image into our cube map. @@ -794,7 +794,7 @@ The `workgroup_size` decorator tells the dimensions of the workgroup's local gri For WebGPU, each workgroup can only have a max of 256 threads (also called invocations). - + With this, we can load the environment map in the `new()` function: @@ -1056,7 +1056,7 @@ You may have noticed that we removed the `OPENGL_TO_WGPU_MATRIX`. The reason for Technically, it wasn't needed, so I felt fine removing it. - + ## Reflections @@ -1262,7 +1262,7 @@ With that you should get the sRGB output as expected. If your browser doesn't support WebGPU, this example won't work for you. - + diff --git a/docs/intermediate/wip-terrain/README.md b/docs/intermediate/wip-terrain/README.md index 512d3fa0b..90a067036 100644 --- a/docs/intermediate/wip-terrain/README.md +++ b/docs/intermediate/wip-terrain/README.md @@ -8,11 +8,11 @@ As the name of this article suggests, we're going to create a terrain. Now, the A compute shader is simply a shader that allows you to leverage the GPU's parallel computing power for arbitrary tasks. You can use them for anything from creating a texture to running a neural network. I'll get more into how they work in a bit, but for now, suffice to say that we're going to use them to create the vertex and index buffers for our terrain. -
+ As of writing, compute shaders are still experimental on the web. You can enable them on beta versions of browsers such as Chrome Canary and Firefox Nightly. Because of this, I'll cover a method to use a fragment shader to compute the vertex and index buffers after we cover the compute shader method. -
+ ## Noise Functions @@ -157,13 +157,13 @@ The `terrain_point` function takes an XZ point on the terrain and returns a `vec `terrain_vertex` uses `terrain_point` to get its position and also to compute the normal of the surface by sampling four nearby points and uses them to compute the normal using [cross products](https://www.khanacademy.org/math/multivariable-calculus/thinking-about-multivariable-function/x786f2022:vectors-and-matrices/a/cross-products-mvc). -
+ You'll notice that our `Vertex` struct doesn't include a texture coordinate. We could easily create texture coordinates by using the XZ coords of the vertices and having the texture sampler mirror the texture on the x and y axes, but heightmaps tend to have stretching when textured in this way. We'll cover a method called triplanar mapping to texture the terrain in a future tutorial. For now, we'll just use a procedural texture that will be created in the fragment shader we use to render the terrain. -
+ Now that we can get a vertex on the terrain surface, we can fill our vertex and index buffers with actual data. We'll create a `gen_terrain()` function that will be the entry point for our compute shader: @@ -186,7 +186,7 @@ Visually, the workgroup grid would look something like this: ![work group grid](./figure_work-groups.jpg) -
+ It may be helpful to think of a compute shader as a function that is run in a bunch of nested for loops, but each loop is executed in parallel. It would look something like this: @@ -205,7 +205,7 @@ for wgx in num_workgroups.x: If you want to learn more about workgroups, [check out the docs](https://www.w3.org/TR/WGSL/#compute-shader-workgroups). -
+ diff --git a/docs/news/26.0.1/readme.md b/docs/news/26.0.1/readme.md index 3cfa28b55..46c6634f7 100644 --- a/docs/news/26.0.1/readme.md +++ b/docs/news/26.0.1/readme.md @@ -24,12 +24,12 @@ all you need to get prevent the issue: } ``` -
+ Technically you only need the `width: 100%` part. Basically you just need to make the browser in charge of what size the canvas should be. -
+ ## What's changed diff --git a/docs/news/30.0/readme.md b/docs/news/30.0/readme.md index a8984a234..b5b9055e5 100644 --- a/docs/news/30.0/readme.md +++ b/docs/news/30.0/readme.md @@ -1,6 +1,43 @@ # Update to 0.30! -* `SurfaceTexture::present()` -> `Queue::present()` -* `VertexBufferLayout` entries can now be `None` -* `RequestAdapterOptions::apply_limit_bucketing` -* HDR `color_space: wgpu::SurfaceColorSpace::Srgb,` +A few things have changed, so let's jump in! + +* `SurfaceTexture::present()` has been removed. We now need to + pass the `SurfaceTexture` into the `Queue::present()` function. + + ```rust + self.queue.present(output); + ``` + +* `VertexBufferLayout` entries can now be `None`. This allows you + to have keep buffers bound at the same slots when rendering. This allows + you to use consistent slots for specific buffers between different pipelines, + so if you normally have the following buffer list: + + ```rust + &[ + Some(VertexDesc::Layout), + Some(InstanceDesc::Layout), + Some(MaterialDesc::Layout), + ] + ``` + + If you wanted to draw something that had a material but no instancing such + as a large set piece, or a boss character. You could have the following list: + + ```rust + &[ + Some(VertexDesc::Layout), + None, + Some(MaterialDesc::Layout), + ] + ``` + + The [buffer tutorial](../../beginner/tutorial4-buffer/) has been updated with + more details. + +* When requesting an adapter you need to specify `RequestAdapterOptions::apply_limit_bucketing`. +This allows you to mask your GPU's capabilities from bad actors who might want to use +your systems capabilities for fingerprinting or other suspicious activity. It can also +help with shader caching if you want to compile custom shaders for specific tiers of devices. +* When `color_space: wgpu::SurfaceColorSpace::Auto,` diff --git a/docs/news/pre-0.12/readme.md b/docs/news/pre-0.12/readme.md index 9372cf9aa..8fe602578 100644 --- a/docs/news/pre-0.12/readme.md +++ b/docs/news/pre-0.12/readme.md @@ -16,7 +16,6 @@ If you want to check out the demo, just head over to [the write up](../showcase/ let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout @@ -85,7 +84,6 @@ Finally, getting a `SurfaceTexture` to draw to will use the surface directly. let output = match self.surface.get_current_texture() { wgpu::CurrentSurfaceTexture::Success(surface_texture) => surface_texture, wgpu::CurrentSurfaceTexture::Suboptimal(surface_texture) => { - self.surface.configure(&self.device, &self.config); surface_texture } wgpu::CurrentSurfaceTexture::Timeout diff --git a/docs/showcase/alignment/README.md b/docs/showcase/alignment/README.md index 27422d88e..1173777e9 100644 --- a/docs/showcase/alignment/README.md +++ b/docs/showcase/alignment/README.md @@ -4,7 +4,7 @@ This page is currently being reworked. I want to understand the topics a bit better, but as 0.12 is out I want to release what I have for now. - + ## Alignment of vertex and index buffers diff --git a/docs/showcase/imgui-demo/README.md b/docs/showcase/imgui-demo/README.md index a2f02c8bf..1c85e282b 100644 --- a/docs/showcase/imgui-demo/README.md +++ b/docs/showcase/imgui-demo/README.md @@ -8,7 +8,7 @@ This tutorial is focused on how to use wgpu (and by extension the WebGPU standar For the 0.10 migration, I'll keep this example in and keep the showcase code excluded. - + This is not an in-depth guide on how to use Imgui. But here are some of the basics you'll need to get started. We'll need to import [imgui-rs](https://docs.rs/imgui), [imgui-wgpu](https://docs.rs/imgui-wgpu), and [imgui-winit-support](https://docs.rs/imgui-winit-support). @@ -18,11 +18,11 @@ imgui-wgpu = "28.0" imgui-winit-support = "0.7" ``` -
+ I've excluded some dependencies for brevity. I'm also using the [framework crate](https://github.com/sotrh/learn-wgpu/tree/master/code/showcase/framework) I've created for showcases to simplify setup. If you see a `display` variable in code, it's from the `framework`. `Display` is where the `device`, `queue`, `swap_chain`, and other basic wgpu objects are stored. -
+ We need to set up imgui and a `WinitPlatform` to get started. Do this after creating you're `winit::Window`. diff --git a/docs/showcase/mipmaps/readme.md b/docs/showcase/mipmaps/readme.md index 90775415a..7b831d562 100644 --- a/docs/showcase/mipmaps/readme.md +++ b/docs/showcase/mipmaps/readme.md @@ -387,7 +387,7 @@ mipmapper.blit_mipmaps(&display.device, &display.queue, &diffuse_blit_texture)?; With that our texture looks great even at far distances. ![ground-with-mips.png](./ground-with-mips.png) -
+ You may have noticed that when we created the render pipeline we used the texture format `RgbaUnorm`, if we wanted to support a different format @@ -400,7 +400,7 @@ this method will not work otherwise. You can check out the [WebGPU specification](https://www.w3.org/TR/webgpu/#renderable) for how to tell if a format is renderable or not. -
+ ## Generating mipmaps with a compute shader @@ -448,7 +448,7 @@ a mip from the texture and `dst` will be the mip directly below that. We will that grab 4 pixels from the `src` texture, compute there average and store that into `dst` texture. -
+ Similar to the render pipeline, this compute pipeline only works with `Rgba8Unorm` textures. Supporting other textures requires we @@ -456,7 +456,7 @@ modify both the shader and the bind group setup (that we'll cover next). We are also limited to textures that can be used as a storage texture. -
+ With that done we can move on to setting up the compute pipeline. diff --git a/docs/showcase/pong/README.md b/docs/showcase/pong/README.md index 8631630d9..cdbac092b 100644 --- a/docs/showcase/pong/README.md +++ b/docs/showcase/pong/README.md @@ -9,7 +9,7 @@ the latest version I'll switch it over, but given that the crate maintainer is directing users to use [glypon](https://github.com/grovesNL/glyphon?tab=readme-ov-file) I'm considering either switching to using that, or writing my own text code. - + Practically the "Hello World!" of games. Pong has been remade thousands of times. I know Pong. You know Pong. We all know Pong. That being said, this time I wanted to put in a little more effort than most people do. This showcase has a basic menu system, sounds, and different game states. diff --git a/docs/showcase/stencil/readme.md b/docs/showcase/stencil/readme.md index e1159a935..7b19277f4 100644 --- a/docs/showcase/stencil/readme.md +++ b/docs/showcase/stencil/readme.md @@ -73,14 +73,14 @@ a mask to the screen. We'll skip the visible object pipeline as that's something that we've already covered in the rendering guide. Let's start with the mask pipeline. -
+ I'm leveraging some code shared between multiple showcases, including a `RenderPipelineBuilder` to reduce the boilerplate. I won't go into all the code for that here, but you can check it out in the [Github Repo](https://github.com/sotrh/learn-wgpu/tree/master/code/showcase/framework) -
+ ```rust let mask_pipeline_layout = @@ -255,7 +255,7 @@ let hidden_pipeline = framework::RenderPipelineBuilder::new() .build(&display.device)?; ``` -
+ We are skipping over `model.wgsl` as it's a standard shader that just renders the objects using normal mapping and diffuse lighting. @@ -265,7 +265,7 @@ buffer is used properly. You can check out [the code](https://github.com/sotrh/learn-wgpu/tree/master/code/showcase/stencil/src/model.wgsl) if you are curious. -
+ We also create another pipeline just like this one to draw the visible objects. Will skip over that because it's just the same code but we use diff --git a/docs/showcase/threading/README.md b/docs/showcase/threading/README.md index f987baea7..cef684042 100644 --- a/docs/showcase/threading/README.md +++ b/docs/showcase/threading/README.md @@ -4,23 +4,23 @@ This example has not been tested on WASM. Rayon has support for multi threading on WASM via [wasm-bindgen-rayon](https://docs.rs/crate/wasm-bindgen-rayon/latest), though that implementation is only currently working on Chrome-based browsers. Because of this I've elected not to make a WASM version of this tutorial at this time. - + The main selling point of Vulkan, DirectX 12, Metal, and by extension Wgpu is that these APIs is that they designed from the ground up to be thread safe. Up to this point, we have been doing everything on a single thread. That's about to change. -
+ This example is based on the code for [tutorial12-camera](../intermediate/tutorial12-camera) -
+ -
+ I won't go into what threads are in this tutorial. That is a full CS course in and of itself. All we'll be covering is using threading to make loading resources faster. We won't go over multithreading rendering as we don't have enough different types of objects to justify that yet. This will change in a coming tutorial -
+ ## Parallelizing loading models and textures @@ -124,13 +124,13 @@ impl Model { We've parallelized loading the meshes, and making the vertex array for them. Probably a bit overkill, but `rayon` should prevent us from using too many threads. -
+ You'll notice that we didn't use `rayon` for calculating the tangent, and bitangent. I tried to get it to work, but I was having trouble finding a way to do it without multiple mutable references to `vertices`. I don't feel like introducing a `std::sync::Mutex`, so I'll leave it for now. This is honestly a better job for a compute shader, as the model data is going to get loaded into a buffer anyway. -
+ ## It's that easy! diff --git a/docs/showcase/windowless/README.md b/docs/showcase/windowless/README.md index 124a51e8c..fe165d6e6 100644 --- a/docs/showcase/windowless/README.md +++ b/docs/showcase/windowless/README.md @@ -278,21 +278,21 @@ In order to get the data out of the buffer, we need to first map it, then we can output_buffer.unmap(); ``` -
+ I used [futures-intrusive](https://docs.rs/futures-intrusive) as that's the crate they use in the [exampls on the wgpu repo](https://github.com/gfx-rs/wgpu/tree/master/wgpu/examples/capture). -
+ ## Main is not asyncable The `main()` method can't return a future, so we can't use the `async` keyword. We'll get around this by putting our code into a different function so that we can block it in `main()`. You'll need to use a crate that can poll futures such as the [pollster crate](https://docs.rs/pollster). -
+ There are crates such as [async-std](https://docs.rs/async-std), and [tokio](https://docs.rs/tokio) that you can use to annotate `main()` so it can be async. I opted not to do that as both those crates are a little more hefty for this project. You're welcome to use whatever async setup you like :slightly_smiling_face: -
+ ```rust async fn run() { From 7b0cc7ddf7c45470fe2480bfd8bd441a0db69ec0 Mon Sep 17 00:00:00 2001 From: Benjamin Hansen Date: Sun, 12 Jul 2026 14:27:12 -0600 Subject: [PATCH 3/3] updated docs and fixed issues with Note --- docs/.vuepress/components/Note.vue | 16 ++- docs/.vuepress/config.js | 1 + docs/beginner/tutorial2-surface/README.md | 16 ++- docs/beginner/tutorial7-instancing/README.md | 2 +- docs/intermediate/tutorial13-hdr/readme.md | 10 +- docs/news/30.0/readme.md | 105 ++++++++++++++----- docs/showcase/alignment/README.md | 2 +- docs/showcase/imgui-demo/README.md | 2 +- docs/showcase/pong/README.md | 2 +- docs/showcase/threading/README.md | 2 +- 10 files changed, 116 insertions(+), 42 deletions(-) diff --git a/docs/.vuepress/components/Note.vue b/docs/.vuepress/components/Note.vue index 5912f5e2d..5055ad1b3 100644 --- a/docs/.vuepress/components/Note.vue +++ b/docs/.vuepress/components/Note.vue @@ -1,7 +1,7 @@