From 0305bcf98f4626e07f7c0c4eda5b345e1d703446 Mon Sep 17 00:00:00 2001 From: "Victor A." <52110451+cs50victor@users.noreply.github.com> Date: Sat, 27 Sep 2025 16:57:09 -0700 Subject: [PATCH 1/5] chore: bevy 0.17.0, (headless feature) --- Cargo.lock | 2160 ++++++++++++++++++++--- Cargo.toml | 14 +- examples/headless.rs | 738 ++++---- examples/multi_camera.rs | 7 +- src/gaussian/cloud.rs | 32 +- src/gaussian/interface.rs | 6 +- src/material/classification.rs | 4 +- src/material/depth.rs | 4 +- src/material/optical_flow.rs | 4 +- src/material/position.rs | 4 +- src/material/spherical_harmonics.rs | 4 +- src/material/spherindrical_harmonics.rs | 4 +- src/morph/interpolate.rs | 12 +- src/morph/particle.rs | 10 +- src/query/select.rs | 12 +- src/render/mod.rs | 90 +- src/render/texture.rs | 4 +- src/sort/mod.rs | 8 +- src/sort/radix.rs | 20 +- viewer/viewer.rs | 28 +- 20 files changed, 2393 insertions(+), 772 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ac1ab41a..a6b3df52 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -34,6 +34,16 @@ dependencies = [ "serde", ] +[[package]] +name = "accesskit" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c0690ad6e6f9597b8439bd3c95e8c6df5cd043afd950c6d68f3b37df641e27c" +dependencies = [ + "enumn", + "serde", +] + [[package]] name = "accesskit_consumer" version = "0.22.0" @@ -55,6 +65,16 @@ dependencies = [ "immutable-chunkmap", ] +[[package]] +name = "accesskit_consumer" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec27574c1baeb7747c802a194566b46b602461e81dc4957949580ea8da695038" +dependencies = [ + "accesskit 0.21.0", + "hashbrown 0.15.5", +] + [[package]] name = "accesskit_macos" version = "0.15.0" @@ -83,6 +103,20 @@ dependencies = [ "objc2-foundation 0.2.2", ] +[[package]] +name = "accesskit_macos" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf962bfd305aed21133d06128ab3f4a6412031a5b8505534d55af869788af272" +dependencies = [ + "accesskit 0.21.0", + "accesskit_consumer 0.30.0", + "hashbrown 0.15.5", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", +] + [[package]] name = "accesskit_windows" version = "0.20.0" @@ -111,6 +145,20 @@ dependencies = [ "windows-core 0.58.0", ] +[[package]] +name = "accesskit_windows" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4cd727229c389e32c1a78fe9f74dc62d7c9fb6eac98cfa1a17efde254fb2d98" +dependencies = [ + "accesskit 0.21.0", + "accesskit_consumer 0.30.0", + "hashbrown 0.15.5", + "static_assertions", + "windows 0.61.3", + "windows-core 0.61.2", +] + [[package]] name = "accesskit_winit" version = "0.20.4" @@ -137,11 +185,24 @@ dependencies = [ "winit", ] +[[package]] +name = "accesskit_winit" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "822493d0e54e6793da77525bb7235a19e4fef8418194aaf25a988bc93740d683" +dependencies = [ + "accesskit 0.21.0", + "accesskit_macos 0.22.0", + "accesskit_windows 0.29.0", + "raw-window-handle", + "winit", +] + [[package]] name = "addr2line" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" dependencies = [ "gimli", ] @@ -354,9 +415,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.99" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] name = "approx" @@ -443,7 +504,7 @@ version = "0.38.0+1.3.281" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" dependencies = [ - "libloading 0.8.8", + "libloading 0.8.9", ] [[package]] @@ -604,7 +665,7 @@ dependencies = [ "polling 3.11.0", "rustix 1.1.2", "slab", - "windows-sys 0.61.0", + "windows-sys 0.61.1", ] [[package]] @@ -736,9 +797,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.75" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ "addr2line", "cfg-if", @@ -746,7 +807,7 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-targets 0.52.6", + "windows-link 0.2.0", ] [[package]] @@ -797,6 +858,15 @@ dependencies = [ "bevy_internal 0.16.1", ] +[[package]] +name = "bevy" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514407994eb6af9adfc725ac5d2807f1a3e175cca9a4e1ac946dcee8fca8dc1c" +dependencies = [ + "bevy_internal 0.17.0-rc.2", +] + [[package]] name = "bevy-inspector-egui" version = "0.31.0" @@ -809,21 +879,21 @@ dependencies = [ "bevy_color 0.16.2", "bevy_core_pipeline 0.16.1", "bevy_ecs 0.16.1", - "bevy_egui", - "bevy_image", + "bevy_egui 0.34.1", + "bevy_image 0.16.1", "bevy_log 0.16.1", "bevy_math 0.16.1", "bevy_pbr 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_reflect 0.16.1", "bevy_render 0.16.1", - "bevy_state", + "bevy_state 0.16.1", "bevy_time 0.16.1", "bevy_utils 0.16.1", "bevy_window 0.16.1", "bytemuck", "disqualified", - "egui", + "egui 0.31.1", "fuzzy-matcher", "image", "smallvec", @@ -868,6 +938,51 @@ dependencies = [ "serde", ] +[[package]] +name = "bevy_a11y" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21d3d8b360a910f10286bbdf8fc63ee01d2d70b6f73838c6f33586be86653116" +dependencies = [ + "accesskit 0.21.0", + "bevy_app 0.17.0-rc.2", + "bevy_derive 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "serde", +] + +[[package]] +name = "bevy_android" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3c90e9bc11d9887d9e66dbf1bcdd1e5077abe8921c6c7c6ed3392f111a3dbce" +dependencies = [ + "android-activity", +] + +[[package]] +name = "bevy_anti_alias" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a434ad402bd4a1589326d7679f572446e19976489c6c8abf6e0293c4b685e4" +dependencies = [ + "bevy_app 0.17.0-rc.2", + "bevy_asset 0.17.0-rc.2", + "bevy_camera", + "bevy_core_pipeline 0.17.0-rc.2", + "bevy_derive 0.17.0-rc.2", + "bevy_diagnostic 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_image 0.17.0-rc.2", + "bevy_math 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_render 0.17.0-rc.2", + "bevy_shader", + "bevy_utils 0.17.0-rc.2", + "tracing", +] + [[package]] name = "bevy_app" version = "0.14.2" @@ -894,7 +1009,7 @@ checksum = "4491cc4c718ae76b4c6883df58b94cc88b32dcd894ea8d5b603c7c7da72ca967" dependencies = [ "bevy_derive 0.16.1", "bevy_ecs 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_reflect 0.16.1", "bevy_tasks 0.16.1", "bevy_utils 0.16.1", @@ -909,13 +1024,35 @@ dependencies = [ "web-sys", ] +[[package]] +name = "bevy_app" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43895cb389531d74f8dab16418f31d8855c7656dacf4cced363e8bc19ece8fde" +dependencies = [ + "bevy_derive 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_tasks 0.17.0-rc.2", + "bevy_utils 0.17.0-rc.2", + "cfg-if", + "console_error_panic_hook", + "ctrlc", + "downcast-rs 2.0.2", + "log", + "thiserror 2.0.16", + "variadics_please", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "bevy_args" version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac904a740526b144edf9fc089976b300736f6e5a46e1d6a314bc2adb22788536" +source = "git+https://github.com/cs50victor/bevy_args?branch=chore%2Fbevy_0.17#949301e7e1c0f99c9e8cdec440e390a9ce177de4" dependencies = [ - "bevy 0.16.1", + "bevy 0.17.0-rc.2", "clap", "console_error_panic_hook", "serde", @@ -947,7 +1084,7 @@ dependencies = [ "futures-lite 2.6.1", "js-sys", "parking_lot", - "ron", + "ron 0.8.1", "serde", "thiserror 1.0.69", "uuid", @@ -969,7 +1106,7 @@ dependencies = [ "bevy_app 0.16.1", "bevy_asset_macros 0.16.1", "bevy_ecs 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_reflect 0.16.1", "bevy_tasks 0.16.1", "bevy_utils 0.16.1", @@ -977,7 +1114,47 @@ dependencies = [ "bitflags 2.9.4", "blake3", "crossbeam-channel", - "derive_more", + "derive_more 1.0.0", + "disqualified", + "downcast-rs 2.0.2", + "either", + "futures-io", + "futures-lite 2.6.1", + "js-sys", + "parking_lot", + "ron 0.8.1", + "serde", + "stackfuture", + "thiserror 2.0.16", + "tracing", + "uuid", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "bevy_asset" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18de6cb44dee31c3e6627ed08f6fa5401de4119819ac97543636a459b33b76dc" +dependencies = [ + "async-broadcast 0.7.2", + "async-fs", + "async-lock 3.4.1", + "atomicow", + "bevy_android", + "bevy_app 0.17.0-rc.2", + "bevy_asset_macros 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_tasks 0.17.0-rc.2", + "bevy_utils 0.17.0-rc.2", + "bitflags 2.9.4", + "blake3", + "crossbeam-channel", + "derive_more 2.0.1", "disqualified", "downcast-rs 2.0.2", "either", @@ -985,7 +1162,7 @@ dependencies = [ "futures-lite 2.6.1", "js-sys", "parking_lot", - "ron", + "ron 0.10.1", "serde", "stackfuture", "thiserror 2.0.16", @@ -1020,6 +1197,44 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "bevy_asset_macros" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c18f95bc2b4de9be11572cd951fcee359c01e0226b86aedab4f8191edd252c4a" +dependencies = [ + "bevy_macro_utils 0.17.0-rc.2", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "bevy_camera" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99217db1b8d6d51dc22d77d281012743e82ee82bcce270da022eea966640c24a" +dependencies = [ + "bevy_app 0.17.0-rc.2", + "bevy_asset 0.17.0-rc.2", + "bevy_color 0.17.0-rc.2", + "bevy_derive 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_image 0.17.0-rc.2", + "bevy_math 0.17.0-rc.2", + "bevy_mesh 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_transform 0.17.0-rc.2", + "bevy_utils 0.17.0-rc.2", + "bevy_window 0.17.0-rc.2", + "derive_more 2.0.1", + "downcast-rs 2.0.2", + "serde", + "smallvec", + "thiserror 2.0.16", + "wgpu-types 26.0.0", +] + [[package]] name = "bevy_color" version = "0.14.3" @@ -1044,13 +1259,29 @@ dependencies = [ "bevy_math 0.16.1", "bevy_reflect 0.16.1", "bytemuck", - "derive_more", + "derive_more 1.0.0", "encase 0.10.0", "serde", "thiserror 2.0.16", "wgpu-types 24.0.0", ] +[[package]] +name = "bevy_color" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953016aa35c8a45e3195a67d889bdb10c3b8d97212bcbb249c790d1627649bd0" +dependencies = [ + "bevy_math 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bytemuck", + "derive_more 2.0.1", + "encase 0.11.2", + "serde", + "thiserror 2.0.16", + "wgpu-types 26.0.0", +] + [[package]] name = "bevy_core" version = "0.14.2" @@ -1102,9 +1333,9 @@ dependencies = [ "bevy_derive 0.16.1", "bevy_diagnostic 0.16.1", "bevy_ecs 0.16.1", - "bevy_image", + "bevy_image 0.16.1", "bevy_math 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_reflect 0.16.1", "bevy_render 0.16.1", "bevy_transform 0.16.1", @@ -1120,6 +1351,35 @@ dependencies = [ "tracing", ] +[[package]] +name = "bevy_core_pipeline" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2de3e4b357e52da7b15f37688af2d04973c8f34d4938890f86e971a7a0affa54" +dependencies = [ + "bevy_app 0.17.0-rc.2", + "bevy_asset 0.17.0-rc.2", + "bevy_camera", + "bevy_color 0.17.0-rc.2", + "bevy_derive 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_image 0.17.0-rc.2", + "bevy_math 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_render 0.17.0-rc.2", + "bevy_shader", + "bevy_transform 0.17.0-rc.2", + "bevy_utils 0.17.0-rc.2", + "bevy_window 0.17.0-rc.2", + "bitflags 2.9.4", + "nonmax", + "radsort", + "smallvec", + "thiserror 2.0.16", + "tracing", +] + [[package]] name = "bevy_derive" version = "0.14.2" @@ -1142,6 +1402,17 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "bevy_derive" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cb3ece117a6052bd2b9af37d9f3933e96524fc04d4e0789c873fb0798b82699" +dependencies = [ + "bevy_macro_utils 0.17.0-rc.2", + "quote", + "syn 2.0.106", +] + [[package]] name = "bevy_diagnostic" version = "0.14.2" @@ -1165,7 +1436,7 @@ checksum = "48797366f312a8f31e237d08ce3ee70162591282d2bfe7c5ad8be196fb263e55" dependencies = [ "bevy_app 0.16.1", "bevy_ecs 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_tasks 0.16.1", "bevy_time 0.16.1", "bevy_utils 0.16.1", @@ -1174,6 +1445,23 @@ dependencies = [ "serde", ] +[[package]] +name = "bevy_diagnostic" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4595d8ef80c0941f757c7c9a7d955aa9344280b3062e7c31402143f6a221b56c" +dependencies = [ + "atomic-waker", + "bevy_app 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_tasks 0.17.0-rc.2", + "bevy_time 0.17.0-rc.2", + "const-fnv1a-hash", + "log", + "serde", +] + [[package]] name = "bevy_ecs" version = "0.14.2" @@ -1202,7 +1490,7 @@ checksum = "3c2bf6521aae57a0ec3487c4bfb59e36c4a378e834b626a4bea6a885af2fdfe7" dependencies = [ "arrayvec 0.7.6", "bevy_ecs_macros 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_ptr 0.16.1", "bevy_reflect 0.16.1", "bevy_tasks 0.16.1", @@ -1210,7 +1498,7 @@ dependencies = [ "bitflags 2.9.4", "bumpalo", "concurrent-queue", - "derive_more", + "derive_more 1.0.0", "disqualified", "fixedbitset 0.5.7", "indexmap", @@ -1222,6 +1510,34 @@ dependencies = [ "variadics_please", ] +[[package]] +name = "bevy_ecs" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ae89df258af27286fafc1503ffa9dc095d747f10fc94f4e1932f54da40d819" +dependencies = [ + "arrayvec 0.7.6", + "bevy_ecs_macros 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_ptr 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_tasks 0.17.0-rc.2", + "bevy_utils 0.17.0-rc.2", + "bitflags 2.9.4", + "bumpalo", + "concurrent-queue", + "derive_more 2.0.1", + "fixedbitset 0.5.7", + "indexmap", + "log", + "nonmax", + "serde", + "slotmap", + "smallvec", + "thiserror 2.0.16", + "variadics_please", +] + [[package]] name = "bevy_ecs_macros" version = "0.14.2" @@ -1246,6 +1562,18 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "bevy_ecs_macros" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40b142eb11acc9827116708b7963e1fc179ab70ed297c03d41f97cc215ce243e" +dependencies = [ + "bevy_macro_utils 0.17.0-rc.2", + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "bevy_egui" version = "0.34.1" @@ -1257,11 +1585,11 @@ dependencies = [ "bevy_asset 0.16.1", "bevy_derive 0.16.1", "bevy_ecs 0.16.1", - "bevy_image", + "bevy_image 0.16.1", "bevy_input 0.16.1", "bevy_log 0.16.1", "bevy_math 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_reflect 0.16.1", "bevy_render 0.16.1", "bevy_time 0.16.1", @@ -1269,7 +1597,7 @@ dependencies = [ "bevy_winit 0.16.1", "bytemuck", "crossbeam-channel", - "egui", + "egui 0.31.1", "encase 0.10.0", "image", "js-sys", @@ -1281,6 +1609,33 @@ dependencies = [ "winit", ] +[[package]] +name = "bevy_egui" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a88030fa6940bb976943bee1a23271b8505cc3e07b4f699b44657bc7062ce69" +dependencies = [ + "bevy_app 0.16.1", + "bevy_derive 0.16.1", + "bevy_ecs 0.16.1", + "bevy_input 0.16.1", + "bevy_log 0.16.1", + "bevy_math 0.16.1", + "bevy_platform 0.16.1", + "bevy_reflect 0.16.1", + "bevy_time 0.16.1", + "bevy_window 0.16.1", + "bevy_winit 0.16.1", + "crossbeam-channel", + "egui 0.32.3", + "image", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winit", +] + [[package]] name = "bevy_encase_derive" version = "0.14.2" @@ -1301,6 +1656,16 @@ dependencies = [ "encase_derive_impl 0.10.0", ] +[[package]] +name = "bevy_encase_derive" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd72610576468d37eb523552c08751b97e2e9d8e355f3b252d5489d4f7ac6748" +dependencies = [ + "bevy_macro_utils 0.17.0-rc.2", + "encase_derive_impl 0.11.2", +] + [[package]] name = "bevy_eventlistener" version = "0.8.1" @@ -1344,7 +1709,7 @@ name = "bevy_gaussian_splatting" version = "5.3.0" dependencies = [ "base64 0.22.1", - "bevy 0.16.1", + "bevy 0.17.0-rc.2", "bevy-inspector-egui", "bevy_args", "bevy_file_asset", @@ -1358,6 +1723,7 @@ dependencies = [ "clap", "console_error_panic_hook", "criterion", + "crossbeam-channel", "flate2", "flexbuffers", "futures-intrusive", @@ -1401,25 +1767,28 @@ dependencies = [ [[package]] name = "bevy_gizmos" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7823154a9682128c261d8bddb3a4d7192a188490075c527af04520c2f0f8aad6" -dependencies = [ - "bevy_app 0.16.1", - "bevy_asset 0.16.1", - "bevy_color 0.16.2", - "bevy_core_pipeline 0.16.1", - "bevy_ecs 0.16.1", - "bevy_gizmos_macros 0.16.1", - "bevy_image", - "bevy_math 0.16.1", - "bevy_pbr 0.16.1", - "bevy_reflect 0.16.1", - "bevy_render 0.16.1", - "bevy_sprite", - "bevy_time 0.16.1", - "bevy_transform 0.16.1", - "bevy_utils 0.16.1", +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3472f96a60ca5ef87740824b19c40ab58ea3d0529f9aa635d81860cb550ab5f7" +dependencies = [ + "bevy_app 0.17.0-rc.2", + "bevy_asset 0.17.0-rc.2", + "bevy_camera", + "bevy_color 0.17.0-rc.2", + "bevy_core_pipeline 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_gizmos_macros 0.17.0-rc.2", + "bevy_image 0.17.0-rc.2", + "bevy_light", + "bevy_math 0.17.0-rc.2", + "bevy_mesh 0.17.0-rc.2", + "bevy_pbr 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_render 0.17.0-rc.2", + "bevy_shader", + "bevy_time 0.17.0-rc.2", + "bevy_transform 0.17.0-rc.2", + "bevy_utils 0.17.0-rc.2", "bytemuck", "tracing", ] @@ -1438,12 +1807,11 @@ dependencies = [ [[package]] name = "bevy_gizmos_macros" -version = "0.16.1" +version = "0.17.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f378f3b513218ddc78254bbe76536d9de59c1429ebd0c14f5d8f2a25812131ad" +checksum = "db88cc51dc7ef4ef67feba11ea89ecde148bd7715123e82481f59ef5f4da4f35" dependencies = [ - "bevy_macro_utils 0.16.1", - "proc-macro2", + "bevy_macro_utils 0.17.0-rc.2", "quote", "syn 2.0.106", ] @@ -1472,7 +1840,7 @@ dependencies = [ "bevy_asset 0.16.1", "bevy_color 0.16.2", "bevy_math 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_reflect 0.16.1", "bevy_utils 0.16.1", "bitflags 2.9.4", @@ -1489,15 +1857,42 @@ dependencies = [ ] [[package]] -name = "bevy_input" -version = "0.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dd3a54e67cc3ba17971de7b1a7e64eda84493c1e7bb6bfa11c6cf8ac124377b" -dependencies = [ - "bevy_app 0.14.2", - "bevy_ecs 0.14.2", - "bevy_math 0.14.2", - "bevy_reflect 0.14.2", +name = "bevy_image" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b522c262192f2f669dba5327e7ee434fffaa246f447b8e4e1fb504acae4de8b2" +dependencies = [ + "bevy_app 0.17.0-rc.2", + "bevy_asset 0.17.0-rc.2", + "bevy_color 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_math 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_utils 0.17.0-rc.2", + "bitflags 2.9.4", + "bytemuck", + "futures-lite 2.6.1", + "guillotiere", + "half", + "image", + "rectangle-pack", + "serde", + "thiserror 2.0.16", + "tracing", + "wgpu-types 26.0.0", +] + +[[package]] +name = "bevy_input" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dd3a54e67cc3ba17971de7b1a7e64eda84493c1e7bb6bfa11c6cf8ac124377b" +dependencies = [ + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", + "bevy_math 0.14.2", + "bevy_reflect 0.14.2", "bevy_utils 0.14.2", "smol_str", "thiserror 1.0.69", @@ -1512,10 +1907,28 @@ dependencies = [ "bevy_app 0.16.1", "bevy_ecs 0.16.1", "bevy_math 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_reflect 0.16.1", "bevy_utils 0.16.1", - "derive_more", + "derive_more 1.0.0", + "log", + "serde", + "smol_str", + "thiserror 2.0.16", +] + +[[package]] +name = "bevy_input" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ead6a14544a60ec7609dcfdbe8adc24bca267ba81758565412259f0565811014" +dependencies = [ + "bevy_app 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_math 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "derive_more 2.0.1", "log", "serde", "smol_str", @@ -1538,13 +1951,29 @@ dependencies = [ "thiserror 2.0.16", ] +[[package]] +name = "bevy_input_focus" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b27865a6a54271006c28a67d5aaac50402d29cbf1251199c209d43fd6b002f0c" +dependencies = [ + "bevy_app 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_input 0.17.0-rc.2", + "bevy_math 0.17.0-rc.2", + "bevy_picking", + "bevy_reflect 0.17.0-rc.2", + "bevy_window 0.17.0-rc.2", + "log", + "thiserror 2.0.16", +] + [[package]] name = "bevy_interleave" version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bfe1f7e02a4113fd2ee3be2cbc7647234a9e84d5f176d562e74c0b9fc77dcba" +source = "git+https://github.com/cs50victor/bevy_interleave?branch=chore%2Fbump_bevy#e891a27b3d3e34e283a527225f157bc2f65bf651" dependencies = [ - "bevy 0.16.1", + "bevy 0.17.0-rc.2", "bevy_interleave_interface", "bevy_interleave_macros", "bytemuck", @@ -1558,19 +1987,17 @@ dependencies = [ [[package]] name = "bevy_interleave_interface" version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85dfed00d02ff904f9140e2f7e65a2a3a1dd57323d9be95799ea7712bb784522" +source = "git+https://github.com/cs50victor/bevy_interleave?branch=chore%2Fbump_bevy#e891a27b3d3e34e283a527225f157bc2f65bf651" dependencies = [ - "bevy 0.16.1", + "bevy 0.17.0-rc.2", ] [[package]] name = "bevy_interleave_macros" version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2f1c9a83705a01dc2968dd3e8860073ba106c6f9198b9c6e8bee6d19f90e65" +source = "git+https://github.com/cs50victor/bevy_interleave?branch=chore%2Fbump_bevy#e891a27b3d3e34e283a527225f157bc2f65bf651" dependencies = [ - "bevy 0.16.1", + "bevy 0.17.0-rc.2", "bevy_interleave_interface", "bytemuck", "convert_case", @@ -1623,34 +2050,91 @@ dependencies = [ "bevy_app 0.16.1", "bevy_asset 0.16.1", "bevy_color 0.16.2", - "bevy_core_pipeline 0.16.1", "bevy_derive 0.16.1", "bevy_diagnostic 0.16.1", "bevy_ecs 0.16.1", - "bevy_gizmos 0.16.1", - "bevy_image", + "bevy_image 0.16.1", "bevy_input 0.16.1", - "bevy_input_focus", - "bevy_log 0.16.1", "bevy_math 0.16.1", - "bevy_pbr 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_ptr 0.16.1", "bevy_reflect 0.16.1", - "bevy_render 0.16.1", "bevy_scene 0.16.1", - "bevy_sprite", - "bevy_state", "bevy_tasks 0.16.1", - "bevy_text", "bevy_time 0.16.1", "bevy_transform 0.16.1", - "bevy_ui", + "bevy_ui 0.16.1", "bevy_utils 0.16.1", "bevy_window 0.16.1", "bevy_winit 0.16.1", ] +[[package]] +name = "bevy_internal" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad5002c26a34b3feb788cdd50c1115b4dc4f351ef5451614477e38bb1ca49ab5" +dependencies = [ + "bevy_a11y 0.17.0-rc.2", + "bevy_android", + "bevy_anti_alias", + "bevy_app 0.17.0-rc.2", + "bevy_asset 0.17.0-rc.2", + "bevy_camera", + "bevy_color 0.17.0-rc.2", + "bevy_core_pipeline 0.17.0-rc.2", + "bevy_derive 0.17.0-rc.2", + "bevy_diagnostic 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_gizmos 0.17.0-rc.2", + "bevy_image 0.17.0-rc.2", + "bevy_input 0.17.0-rc.2", + "bevy_input_focus 0.17.0-rc.2", + "bevy_light", + "bevy_log 0.17.0-rc.2", + "bevy_math 0.17.0-rc.2", + "bevy_mesh 0.17.0-rc.2", + "bevy_pbr 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_ptr 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_render 0.17.0-rc.2", + "bevy_scene 0.17.0-rc.2", + "bevy_shader", + "bevy_sprite 0.17.0-rc.2", + "bevy_sprite_render", + "bevy_state 0.17.0-rc.2", + "bevy_tasks 0.17.0-rc.2", + "bevy_text 0.17.0-rc.2", + "bevy_time 0.17.0-rc.2", + "bevy_transform 0.17.0-rc.2", + "bevy_ui 0.17.0-rc.2", + "bevy_utils 0.17.0-rc.2", + "bevy_window 0.17.0-rc.2", + "bevy_winit 0.17.0-rc.2", +] + +[[package]] +name = "bevy_light" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c83909dc68eff79bd3b9bfa6a9e52cc4f268649ae4f9e48e5c1a5fcef7d44d84" +dependencies = [ + "bevy_app 0.17.0-rc.2", + "bevy_asset 0.17.0-rc.2", + "bevy_camera", + "bevy_color 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_image 0.17.0-rc.2", + "bevy_math 0.17.0-rc.2", + "bevy_mesh 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_transform 0.17.0-rc.2", + "bevy_utils 0.17.0-rc.2", + "tracing", +] + [[package]] name = "bevy_log" version = "0.14.2" @@ -1678,7 +2162,25 @@ dependencies = [ "bevy_utils 0.16.1", "tracing", "tracing-log", - "tracing-oslog", + "tracing-oslog 0.2.0", + "tracing-subscriber", + "tracing-wasm", +] + +[[package]] +name = "bevy_log" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be79d161555350d3e7adbe30ceaa7d07d3a064893a5cdf15a198df9dd9c7b27e" +dependencies = [ + "android_log-sys", + "bevy_app 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_utils 0.17.0-rc.2", + "tracing", + "tracing-log", + "tracing-oslog 0.3.0", "tracing-subscriber", "tracing-wasm", ] @@ -1708,6 +2210,19 @@ dependencies = [ "toml_edit 0.22.27", ] +[[package]] +name = "bevy_macro_utils" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f66d0c0b425c6181de04b867e744170275e037d35b1c7f8cdc324f57c78358" +dependencies = [ + "parking_lot", + "proc-macro2", + "quote", + "syn 2.0.106", + "toml_edit 0.23.6", +] + [[package]] name = "bevy_math" version = "0.14.2" @@ -1730,12 +2245,32 @@ checksum = "68553e0090fe9c3ba066c65629f636bd58e4ebd9444fdba097b91af6cd3e243f" dependencies = [ "approx", "bevy_reflect 0.16.1", - "derive_more", + "derive_more 1.0.0", "glam 0.29.3", "itertools 0.14.0", "libm", "rand 0.8.5", - "rand_distr", + "rand_distr 0.4.3", + "serde", + "smallvec", + "thiserror 2.0.16", + "variadics_please", +] + +[[package]] +name = "bevy_math" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5a1168f2b0ad3b3e8393baaaf55e8c0b88c21e8b44483c754b17bffde43c1f2" +dependencies = [ + "approx", + "bevy_reflect 0.17.0-rc.2", + "derive_more 2.0.1", + "glam 0.30.8", + "itertools 0.14.0", + "libm", + "rand 0.9.2", + "rand_distr 0.5.1", "serde", "smallvec", "thiserror 2.0.16", @@ -1751,10 +2286,10 @@ dependencies = [ "bevy_asset 0.16.1", "bevy_derive 0.16.1", "bevy_ecs 0.16.1", - "bevy_image", + "bevy_image 0.16.1", "bevy_math 0.16.1", "bevy_mikktspace 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_reflect 0.16.1", "bevy_transform 0.16.1", "bevy_utils 0.16.1", @@ -1767,6 +2302,32 @@ dependencies = [ "wgpu-types 24.0.0", ] +[[package]] +name = "bevy_mesh" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94a8396db24356fb86404c8f4ea85f3645fdaf0f22ccdf84705190a19f4ba60a" +dependencies = [ + "bevy_app 0.17.0-rc.2", + "bevy_asset 0.17.0-rc.2", + "bevy_derive 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_image 0.17.0-rc.2", + "bevy_math 0.17.0-rc.2", + "bevy_mikktspace 0.17.0-dev", + "bevy_platform 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_transform 0.17.0-rc.2", + "bitflags 2.9.4", + "bytemuck", + "derive_more 2.0.1", + "hexasphere 16.0.0", + "serde", + "thiserror 2.0.16", + "tracing", + "wgpu-types 26.0.0", +] + [[package]] name = "bevy_mikktspace" version = "0.14.2" @@ -1785,6 +2346,12 @@ dependencies = [ "glam 0.29.3", ] +[[package]] +name = "bevy_mikktspace" +version = "0.17.0-dev" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef8e4b7e61dfe7719bb03c884dc270cd46a82efb40f93e9933b990c5c190c59" + [[package]] name = "bevy_mod_picking" version = "0.20.1" @@ -1828,12 +2395,11 @@ dependencies = [ [[package]] name = "bevy_panorbit_camera" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6e15e297754d0bcb7665620c390c4f05665d4ac4ac91b4b5d3c66b9fe1f0e6" +version = "0.28.0" +source = "git+https://github.com/kristoff3r/bevy_panorbit_camera#feb2858d8a431b6efb7dcd5a6885a33906eef9b1" dependencies = [ - "bevy 0.16.1", - "bevy_egui", + "bevy 0.17.0-rc.2", + "bevy_egui 0.36.0", ] [[package]] @@ -1876,9 +2442,9 @@ dependencies = [ "bevy_derive 0.16.1", "bevy_diagnostic 0.16.1", "bevy_ecs 0.16.1", - "bevy_image", + "bevy_image 0.16.1", "bevy_math 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_reflect 0.16.1", "bevy_render 0.16.1", "bevy_transform 0.16.1", @@ -1886,7 +2452,7 @@ dependencies = [ "bevy_window 0.16.1", "bitflags 2.9.4", "bytemuck", - "derive_more", + "derive_more 1.0.0", "fixedbitset 0.5.7", "nonmax", "offset-allocator", @@ -1897,6 +2463,64 @@ dependencies = [ "tracing", ] +[[package]] +name = "bevy_pbr" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fa4e308ef763403a9f0d96c0d77276aaa1aa70b90350b4076f741b3c41e9cc7" +dependencies = [ + "bevy_app 0.17.0-rc.2", + "bevy_asset 0.17.0-rc.2", + "bevy_camera", + "bevy_color 0.17.0-rc.2", + "bevy_core_pipeline 0.17.0-rc.2", + "bevy_derive 0.17.0-rc.2", + "bevy_diagnostic 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_image 0.17.0-rc.2", + "bevy_light", + "bevy_math 0.17.0-rc.2", + "bevy_mesh 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_render 0.17.0-rc.2", + "bevy_shader", + "bevy_transform 0.17.0-rc.2", + "bevy_utils 0.17.0-rc.2", + "bitflags 2.9.4", + "bytemuck", + "derive_more 2.0.1", + "fixedbitset 0.5.7", + "nonmax", + "offset-allocator", + "smallvec", + "static_assertions", + "thiserror 2.0.16", + "tracing", +] + +[[package]] +name = "bevy_picking" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c12a483309172057c6206a7f674920e25663701a1ba491f00339fe844d8e03e2" +dependencies = [ + "bevy_app 0.17.0-rc.2", + "bevy_asset 0.17.0-rc.2", + "bevy_camera", + "bevy_derive 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_input 0.17.0-rc.2", + "bevy_math 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_time 0.17.0-rc.2", + "bevy_transform 0.17.0-rc.2", + "bevy_window 0.17.0-rc.2", + "tracing", + "uuid", +] + [[package]] name = "bevy_picking_core" version = "0.20.0" @@ -1973,7 +2597,7 @@ checksum = "f7573dc824a1b08b4c93fdbe421c53e1e8188e9ca1dd74a414455fe571facb47" dependencies = [ "cfg-if", "critical-section", - "foldhash", + "foldhash 0.1.5", "getrandom 0.2.16", "hashbrown 0.15.5", "portable-atomic", @@ -1983,6 +2607,27 @@ dependencies = [ "web-time", ] +[[package]] +name = "bevy_platform" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cc4d19e7ef9e6360ce16a54406135f3ca76f7b4de3d4fae520847d3fad2deed" +dependencies = [ + "critical-section", + "foldhash 0.2.0", + "futures-channel", + "getrandom 0.3.3", + "hashbrown 0.16.0", + "js-sys", + "portable-atomic", + "portable-atomic-util", + "serde", + "spin 0.10.0", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-time", +] + [[package]] name = "bevy_ptr" version = "0.14.2" @@ -1995,6 +2640,12 @@ version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df7370d0e46b60e071917711d0860721f5347bc958bf325975ae6913a5dfcf01" +[[package]] +name = "bevy_ptr" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d129fa79c6ec9a63acbb3719eac25a10a4edfdfc88f83af40b963c1cfa540b98" + [[package]] name = "bevy_reflect" version = "0.14.2" @@ -2021,15 +2672,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "daeb91a63a1a4df00aa58da8cc4ddbd4b9f16ab8bb647c5553eb156ce36fa8c2" dependencies = [ "assert_type_match", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_ptr 0.16.1", "bevy_reflect_derive 0.16.1", "bevy_utils 0.16.1", - "derive_more", + "derive_more 1.0.0", "disqualified", "downcast-rs 2.0.2", "erased-serde", - "foldhash", + "foldhash 0.1.5", "glam 0.29.3", "serde", "smallvec", @@ -2040,6 +2691,33 @@ dependencies = [ "wgpu-types 24.0.0", ] +[[package]] +name = "bevy_reflect" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2457c391687f5773f86bcc1e7dab5529b050069733c6639bf1d3283965f3c0f1" +dependencies = [ + "assert_type_match", + "bevy_platform 0.17.0-rc.2", + "bevy_ptr 0.17.0-rc.2", + "bevy_reflect_derive 0.17.0-rc.2", + "bevy_utils 0.17.0-rc.2", + "derive_more 2.0.1", + "disqualified", + "downcast-rs 2.0.2", + "erased-serde", + "foldhash 0.2.0", + "glam 0.30.8", + "inventory", + "serde", + "smallvec", + "smol_str", + "thiserror 2.0.16", + "uuid", + "variadics_please", + "wgpu-types 26.0.0", +] + [[package]] name = "bevy_reflect_derive" version = "0.14.2" @@ -2066,6 +2744,20 @@ dependencies = [ "uuid", ] +[[package]] +name = "bevy_reflect_derive" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73fdd27630d61ddded2a3c6c8b2c846f7fbdce863472ea20cab1ae73674fa454" +dependencies = [ + "bevy_macro_utils 0.17.0-rc.2", + "indexmap", + "proc-macro2", + "quote", + "syn 2.0.106", + "uuid", +] + [[package]] name = "bevy_render" version = "0.14.2" @@ -2093,7 +2785,7 @@ dependencies = [ "bevy_window 0.14.2", "bitflags 2.9.4", "bytemuck", - "codespan-reporting", + "codespan-reporting 0.11.1", "downcast-rs 1.2.1", "encase 0.8.0", "futures-lite 2.6.1", @@ -2126,10 +2818,10 @@ dependencies = [ "bevy_diagnostic 0.16.1", "bevy_ecs 0.16.1", "bevy_encase_derive 0.16.1", - "bevy_image", + "bevy_image 0.16.1", "bevy_math 0.16.1", - "bevy_mesh", - "bevy_platform", + "bevy_mesh 0.16.1", + "bevy_platform 0.16.1", "bevy_reflect 0.16.1", "bevy_render_macros 0.16.1", "bevy_tasks 0.16.1", @@ -2139,8 +2831,8 @@ dependencies = [ "bevy_window 0.16.1", "bitflags 2.9.4", "bytemuck", - "codespan-reporting", - "derive_more", + "codespan-reporting 0.11.1", + "derive_more 1.0.0", "downcast-rs 2.0.2", "encase 0.10.0", "fixedbitset 0.5.7", @@ -2163,6 +2855,55 @@ dependencies = [ "wgpu 24.0.5", ] +[[package]] +name = "bevy_render" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ff320cd6ad7e97ab013c71998cea44b9a8a7585fc0155545fc02ded7ea0e165" +dependencies = [ + "async-channel 2.5.0", + "bevy_app 0.17.0-rc.2", + "bevy_asset 0.17.0-rc.2", + "bevy_camera", + "bevy_color 0.17.0-rc.2", + "bevy_derive 0.17.0-rc.2", + "bevy_diagnostic 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_encase_derive 0.17.0-rc.2", + "bevy_image 0.17.0-rc.2", + "bevy_math 0.17.0-rc.2", + "bevy_mesh 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_render_macros 0.17.0-rc.2", + "bevy_shader", + "bevy_tasks 0.17.0-rc.2", + "bevy_time 0.17.0-rc.2", + "bevy_transform 0.17.0-rc.2", + "bevy_utils 0.17.0-rc.2", + "bevy_window 0.17.0-rc.2", + "bitflags 2.9.4", + "bytemuck", + "derive_more 2.0.1", + "downcast-rs 2.0.2", + "encase 0.11.2", + "fixedbitset 0.5.7", + "image", + "indexmap", + "js-sys", + "naga 26.0.0", + "nonmax", + "offset-allocator", + "send_wrapper", + "smallvec", + "thiserror 2.0.16", + "tracing", + "variadics_please", + "wasm-bindgen", + "web-sys", + "wgpu 26.0.1", +] + [[package]] name = "bevy_render_macros" version = "0.14.2" @@ -2187,6 +2928,18 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "bevy_render_macros" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4de919ef0bbc6c2a1ea7cbb4736c3595dddc3a5e522132a4ec99a8d690b89891" +dependencies = [ + "bevy_macro_utils 0.17.0-rc.2", + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "bevy_scene" version = "0.14.2" @@ -2217,17 +2970,54 @@ dependencies = [ "bevy_asset 0.16.1", "bevy_derive 0.16.1", "bevy_ecs 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_reflect 0.16.1", - "bevy_render 0.16.1", "bevy_transform 0.16.1", "bevy_utils 0.16.1", - "derive_more", + "derive_more 1.0.0", + "serde", + "thiserror 2.0.16", + "uuid", +] + +[[package]] +name = "bevy_scene" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "034d932deaedb2c27abab086cf4f1be1fc9f0cf8359323f6f98c9d0870c49c2c" +dependencies = [ + "bevy_app 0.17.0-rc.2", + "bevy_asset 0.17.0-rc.2", + "bevy_camera", + "bevy_derive 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_transform 0.17.0-rc.2", + "bevy_utils 0.17.0-rc.2", + "derive_more 2.0.1", "serde", "thiserror 2.0.16", "uuid", ] +[[package]] +name = "bevy_shader" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dc6490a74a75d8c40a7f731da37271114cc21d5b7dc9236c1dded434036efa5" +dependencies = [ + "bevy_asset 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "naga 26.0.0", + "naga_oil 0.19.1", + "serde", + "thiserror 2.0.16", + "tracing", + "wgpu-types 26.0.0", +] + [[package]] name = "bevy_sprite" version = "0.16.1" @@ -2240,22 +3030,78 @@ dependencies = [ "bevy_core_pipeline 0.16.1", "bevy_derive 0.16.1", "bevy_ecs 0.16.1", - "bevy_image", + "bevy_image 0.16.1", "bevy_math 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_reflect 0.16.1", "bevy_render 0.16.1", "bevy_transform 0.16.1", "bevy_utils 0.16.1", "bitflags 2.9.4", "bytemuck", - "derive_more", + "derive_more 1.0.0", "fixedbitset 0.5.7", "nonmax", "radsort", "tracing", ] +[[package]] +name = "bevy_sprite" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271220b03bac345f2d4d3384af51693df9a0e6388bca0aabfb1bcb574bb04942" +dependencies = [ + "bevy_app 0.17.0-rc.2", + "bevy_asset 0.17.0-rc.2", + "bevy_camera", + "bevy_color 0.17.0-rc.2", + "bevy_derive 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_image 0.17.0-rc.2", + "bevy_math 0.17.0-rc.2", + "bevy_mesh 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_text 0.17.0-rc.2", + "bevy_transform 0.17.0-rc.2", + "bevy_window 0.17.0-rc.2", + "radsort", + "tracing", + "wgpu-types 26.0.0", +] + +[[package]] +name = "bevy_sprite_render" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2f84066780df878a0497525e41453e519d78945bc92ba1bce5d6b46965fdd1e" +dependencies = [ + "bevy_app 0.17.0-rc.2", + "bevy_asset 0.17.0-rc.2", + "bevy_camera", + "bevy_color 0.17.0-rc.2", + "bevy_core_pipeline 0.17.0-rc.2", + "bevy_derive 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_image 0.17.0-rc.2", + "bevy_math 0.17.0-rc.2", + "bevy_mesh 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_render 0.17.0-rc.2", + "bevy_shader", + "bevy_sprite 0.17.0-rc.2", + "bevy_text 0.17.0-rc.2", + "bevy_transform 0.17.0-rc.2", + "bevy_utils 0.17.0-rc.2", + "bitflags 2.9.4", + "bytemuck", + "derive_more 2.0.1", + "fixedbitset 0.5.7", + "nonmax", + "tracing", +] + [[package]] name = "bevy_state" version = "0.16.1" @@ -2264,14 +3110,30 @@ checksum = "155d3cd97b900539008cdcaa702f88b724d94b08977b8e591a32536ce66faa8c" dependencies = [ "bevy_app 0.16.1", "bevy_ecs 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_reflect 0.16.1", - "bevy_state_macros", + "bevy_state_macros 0.16.1", "bevy_utils 0.16.1", "log", "variadics_please", ] +[[package]] +name = "bevy_state" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd1c0c60f6cf37922af20219ed3dd0d7fb2a809b20c2b086924cb3f7faf47f90" +dependencies = [ + "bevy_app 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_state_macros 0.17.0-rc.2", + "bevy_utils 0.17.0-rc.2", + "log", + "variadics_please", +] + [[package]] name = "bevy_state_macros" version = "0.16.1" @@ -2284,6 +3146,17 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "bevy_state_macros" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a1257d8624a526deb3dd41dd5e7510f15a0534b39fab89c99d3a8260183f5ef" +dependencies = [ + "bevy_macro_utils 0.17.0-rc.2", + "quote", + "syn 2.0.106", +] + [[package]] name = "bevy_tasks" version = "0.14.2" @@ -2301,15 +3174,13 @@ version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b674242641cab680688fc3b850243b351c1af49d4f3417a576debd6cca8dcf5" dependencies = [ - "async-channel 2.5.0", "async-executor", "async-task", "atomic-waker", - "bevy_platform", + "bevy_platform 0.16.1", "cfg-if", - "concurrent-queue", "crossbeam-queue", - "derive_more", + "derive_more 1.0.0", "futures-channel", "futures-lite 2.6.1", "heapless", @@ -2317,6 +3188,25 @@ dependencies = [ "wasm-bindgen-futures", ] +[[package]] +name = "bevy_tasks" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec5efc5d9db0cb3841e8e06b484f4adb071ec45819a4dc07d475a684b5ab75" +dependencies = [ + "async-channel 2.5.0", + "async-executor", + "async-task", + "atomic-waker", + "bevy_platform 0.17.0-rc.2", + "concurrent-queue", + "crossbeam-queue", + "derive_more 2.0.1", + "futures-lite 2.6.1", + "heapless", + "pin-project", +] + [[package]] name = "bevy_text" version = "0.16.1" @@ -2328,17 +3218,17 @@ dependencies = [ "bevy_color 0.16.2", "bevy_derive 0.16.1", "bevy_ecs 0.16.1", - "bevy_image", + "bevy_image 0.16.1", "bevy_log 0.16.1", "bevy_math 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_reflect 0.16.1", "bevy_render 0.16.1", - "bevy_sprite", + "bevy_sprite 0.16.1", "bevy_transform 0.16.1", "bevy_utils 0.16.1", "bevy_window 0.16.1", - "cosmic-text", + "cosmic-text 0.13.2", "serde", "smallvec", "sys-locale", @@ -2347,6 +3237,32 @@ dependencies = [ "unicode-bidi", ] +[[package]] +name = "bevy_text" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49501528ca9a823b18aa3842575ba01fbb2eccb7fea7d4c8b91bed1b052958a5" +dependencies = [ + "bevy_app 0.17.0-rc.2", + "bevy_asset 0.17.0-rc.2", + "bevy_color 0.17.0-rc.2", + "bevy_derive 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_image 0.17.0-rc.2", + "bevy_log 0.17.0-rc.2", + "bevy_math 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_utils 0.17.0-rc.2", + "cosmic-text 0.14.2", + "serde", + "smallvec", + "sys-locale", + "thiserror 2.0.16", + "tracing", + "wgpu-types 26.0.0", +] + [[package]] name = "bevy_time" version = "0.14.2" @@ -2369,13 +3285,28 @@ checksum = "bc98eb356c75be04fbbc77bb3d8ffa24c8bacd99f76111cee23d444be6ac8c9c" dependencies = [ "bevy_app 0.16.1", "bevy_ecs 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_reflect 0.16.1", "crossbeam-channel", "log", "serde", ] +[[package]] +name = "bevy_time" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8519fc3d9d76d80d1f0236c2d1aa6b57ffbc0dbe0670d6439b79a2baf9f8dec" +dependencies = [ + "bevy_app 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "crossbeam-channel", + "log", + "serde", +] + [[package]] name = "bevy_transform" version = "0.14.2" @@ -2403,7 +3334,25 @@ dependencies = [ "bevy_reflect 0.16.1", "bevy_tasks 0.16.1", "bevy_utils 0.16.1", - "derive_more", + "derive_more 1.0.0", + "serde", + "thiserror 2.0.16", +] + +[[package]] +name = "bevy_transform" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "974a8ebf9a23a30745f5764525d1c332dc92e7d2e8d00d941076b4c28e5ac373" +dependencies = [ + "bevy_app 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_log 0.17.0-rc.2", + "bevy_math 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_tasks 0.17.0-rc.2", + "bevy_utils 0.17.0-rc.2", + "derive_more 2.0.1", "serde", "thiserror 2.0.16", ] @@ -2433,19 +3382,19 @@ dependencies = [ "bevy_core_pipeline 0.16.1", "bevy_derive 0.16.1", "bevy_ecs 0.16.1", - "bevy_image", + "bevy_image 0.16.1", "bevy_input 0.16.1", "bevy_math 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_reflect 0.16.1", "bevy_render 0.16.1", - "bevy_sprite", - "bevy_text", + "bevy_sprite 0.16.1", + "bevy_text 0.16.1", "bevy_transform 0.16.1", "bevy_utils 0.16.1", "bevy_window 0.16.1", "bytemuck", - "derive_more", + "derive_more 1.0.0", "nonmax", "serde", "smallvec", @@ -2454,6 +3403,38 @@ dependencies = [ "tracing", ] +[[package]] +name = "bevy_ui" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0553b9991dc57dce5561c403b272117a087b3d319d7a5a649c6422167ac47e72" +dependencies = [ + "accesskit 0.21.0", + "bevy_a11y 0.17.0-rc.2", + "bevy_app 0.17.0-rc.2", + "bevy_asset 0.17.0-rc.2", + "bevy_camera", + "bevy_color 0.17.0-rc.2", + "bevy_derive 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_image 0.17.0-rc.2", + "bevy_input 0.17.0-rc.2", + "bevy_math 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_sprite 0.17.0-rc.2", + "bevy_text 0.17.0-rc.2", + "bevy_transform 0.17.0-rc.2", + "bevy_utils 0.17.0-rc.2", + "bevy_window 0.17.0-rc.2", + "derive_more 2.0.1", + "serde", + "smallvec", + "taffy", + "thiserror 2.0.16", + "tracing", +] + [[package]] name = "bevy_utils" version = "0.14.2" @@ -2475,7 +3456,18 @@ version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94f7a8905a125d2017e8561beefb7f2f5e67e93ff6324f072ad87c5fd6ec3b99" dependencies = [ - "bevy_platform", + "bevy_platform 0.16.1", + "thread_local", +] + +[[package]] +name = "bevy_utils" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0a08df94307630c54474c3766e6ac6641408c8d550e42ca6c528d4ab305b7b" +dependencies = [ + "bevy_platform 0.17.0-rc.2", + "disqualified", "thread_local", ] @@ -2532,7 +3524,7 @@ dependencies = [ "bevy_ecs 0.16.1", "bevy_input 0.16.1", "bevy_math 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_reflect 0.16.1", "bevy_utils 0.16.1", "log", @@ -2541,6 +3533,23 @@ dependencies = [ "smol_str", ] +[[package]] +name = "bevy_window" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb297d54a7f547529f01f355e302db83d416d8bec9d9c57fade81fb3e5f45ebc" +dependencies = [ + "bevy_app 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_input 0.17.0-rc.2", + "bevy_math 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "log", + "raw-window-handle", + "serde", +] + [[package]] name = "bevy_winit" version = "0.14.2" @@ -2583,10 +3592,10 @@ dependencies = [ "bevy_derive 0.16.1", "bevy_ecs 0.16.1", "bevy_input 0.16.1", - "bevy_input_focus", + "bevy_input_focus 0.16.1", "bevy_log 0.16.1", "bevy_math 0.16.1", - "bevy_platform", + "bevy_platform 0.16.1", "bevy_reflect 0.16.1", "bevy_tasks 0.16.1", "bevy_utils 0.16.1", @@ -2601,6 +3610,35 @@ dependencies = [ "winit", ] +[[package]] +name = "bevy_winit" +version = "0.17.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc717910b4b64feba182ab99c8be332c2bb44e9a1a101373de31cca3dc6f891d" +dependencies = [ + "accesskit 0.21.0", + "accesskit_winit 0.29.0", + "approx", + "bevy_a11y 0.17.0-rc.2", + "bevy_android", + "bevy_app 0.17.0-rc.2", + "bevy_derive 0.17.0-rc.2", + "bevy_ecs 0.17.0-rc.2", + "bevy_input 0.17.0-rc.2", + "bevy_input_focus 0.17.0-rc.2", + "bevy_log 0.17.0-rc.2", + "bevy_math 0.17.0-rc.2", + "bevy_platform 0.17.0-rc.2", + "bevy_reflect 0.17.0-rc.2", + "bevy_tasks 0.17.0-rc.2", + "bevy_window 0.17.0-rc.2", + "cfg-if", + "tracing", + "wasm-bindgen", + "web-sys", + "winit", +] + [[package]] name = "bincode2" version = "2.0.1" @@ -2679,6 +3717,7 @@ version = "2.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" dependencies = [ + "bytemuck", "serde", ] @@ -2776,7 +3815,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" dependencies = [ "once_cell", - "proc-macro-crate 3.3.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", "syn 2.0.106", @@ -2936,9 +3975,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.37" +version = "1.2.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44" +checksum = "e1354349954c6fc9cb0deab020f27f783cf0b604e8bb754dc4658ecf0d29c35f" dependencies = [ "find-msvc-tools", "jobserver", @@ -3033,14 +4072,14 @@ checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", - "libloading 0.8.8", + "libloading 0.8.9", ] [[package]] name = "clap" -version = "4.5.47" +version = "4.5.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931" +checksum = "e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae" dependencies = [ "clap_builder", "clap_derive", @@ -3048,9 +4087,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.47" +version = "4.5.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6" +checksum = "c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9" dependencies = [ "anstream", "anstyle", @@ -3092,7 +4131,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" dependencies = [ "termcolor", - "unicode-width", + "unicode-width 0.1.14", +] + +[[package]] +name = "codespan-reporting" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" +dependencies = [ + "serde", + "termcolor", + "unicode-width 0.2.1", ] [[package]] @@ -3257,6 +4307,16 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -3270,8 +4330,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ "bitflags 1.3.2", - "core-foundation", - "core-graphics-types", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", "foreign-types", "libc", ] @@ -3283,7 +4343,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ "bitflags 1.3.2", - "core-foundation", + "core-foundation 0.9.4", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.9.4", + "core-foundation 0.10.1", "libc", ] @@ -3310,6 +4381,29 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "cosmic-text" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da46a9d5a8905cc538a4a5bceb6a4510de7a51049c5588c0114efce102bcbbe8" +dependencies = [ + "bitflags 2.9.4", + "fontdb", + "log", + "rangemap", + "rustc-hash", + "rustybuzz", + "self_cell", + "smol_str", + "swash", + "sys-locale", + "ttf-parser 0.21.1", + "unicode-bidi", + "unicode-linebreak", + "unicode-script", + "unicode-segmentation", +] + [[package]] name = "cpufeatures" version = "0.2.17" @@ -3459,7 +4553,7 @@ checksum = "881c5d0a13b2f1498e2306e82cbada78390e152d4b1378fb28a84f4dcd0dc4f3" dependencies = [ "dispatch", "nix", - "windows-sys 0.61.0", + "windows-sys 0.61.1", ] [[package]] @@ -3475,7 +4569,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b28bfe653d79bd16c77f659305b195b82bb5ce0c0eb2a4846b82ddbd77586813" dependencies = [ "bitflags 2.9.4", - "libloading 0.8.8", + "libloading 0.8.9", "winapi", ] @@ -3518,7 +4612,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" dependencies = [ - "derive_more-impl", + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.1", ] [[package]] @@ -3533,6 +4636,18 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "unicode-xid", +] + [[package]] name = "digest" version = "0.9.0" @@ -3597,7 +4712,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.8.8", + "libloading 0.8.9", ] [[package]] @@ -3634,7 +4749,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc4feb366740ded31a004a0e4452fbf84e80ef432ecf8314c485210229672fd1" dependencies = [ "bytemuck", - "emath", + "emath 0.31.1", +] + +[[package]] +name = "ecolor" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94bdf37f8d5bd9aa7f753573fdda9cf7343afa73dd28d7bfe9593bd9798fc07e" +dependencies = [ + "emath 0.32.3", ] [[package]] @@ -3645,10 +4769,26 @@ checksum = "25dd34cec49ab55d85ebf70139cb1ccd29c977ef6b6ba4fe85489d6877ee9ef3" dependencies = [ "ahash 0.8.12", "bitflags 2.9.4", - "emath", - "epaint", + "emath 0.31.1", + "epaint 0.31.1", + "nohash-hasher", + "profiling", +] + +[[package]] +name = "egui" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5d0306cd61ca75e29682926d71f2390160247f135965242e904a636f51c0dc" +dependencies = [ + "ahash 0.8.12", + "bitflags 2.9.4", + "emath 0.32.3", + "epaint 0.32.3", "nohash-hasher", "profiling", + "smallvec", + "unicode-segmentation", ] [[package]] @@ -3666,6 +4806,12 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "emath" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45fd7bc25f769a3c198fe1cf183124bf4de3bd62ef7b4f1eaf6b08711a3af8db" + [[package]] name = "encase" version = "0.8.0" @@ -3690,6 +4836,18 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "encase" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02ba239319a4f60905966390f5e52799d868103a533bb7e27822792332504ddd" +dependencies = [ + "const_panic", + "encase_derive 0.11.2", + "glam 0.30.8", + "thiserror 2.0.16", +] + [[package]] name = "encase_derive" version = "0.8.0" @@ -3708,6 +4866,15 @@ dependencies = [ "encase_derive_impl 0.10.0", ] +[[package]] +name = "encase_derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5223d6c647f09870553224f6e37261fe5567bc5a4f4cf13ed337476e79990f2f" +dependencies = [ + "encase_derive_impl 0.11.2", +] + [[package]] name = "encase_derive_impl" version = "0.8.0" @@ -3730,6 +4897,17 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "encase_derive_impl" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1796db3d892515842ca2dfb11124c4bb4a9e58d9f2c5c1072e5bca1b2334507b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "enumn" version = "0.1.14" @@ -3750,14 +4928,29 @@ dependencies = [ "ab_glyph", "ahash 0.8.12", "bytemuck", - "ecolor", - "emath", + "ecolor 0.31.1", + "emath 0.31.1", "epaint_default_fonts", "nohash-hasher", "parking_lot", "profiling", ] +[[package]] +name = "epaint" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63adcea970b7a13094fe97a36ab9307c35a750f9e24bf00bb7ef3de573e0fddb" +dependencies = [ + "ab_glyph", + "ahash 0.8.12", + "ecolor 0.32.3", + "emath 0.32.3", + "nohash-hasher", + "parking_lot", + "profiling", +] + [[package]] name = "epaint_default_fonts" version = "0.31.1" @@ -3808,7 +5001,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.0", + "windows-sys 0.61.1", ] [[package]] @@ -3923,9 +5116,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d" +checksum = "1ced73b1dacfc750a6db6c0a0c3a3853c8b41997e2e2c563dc90804ae6867959" [[package]] name = "fixedbitset" @@ -3951,9 +5144,9 @@ dependencies = [ [[package]] name = "flexbuffers" -version = "25.2.10" +version = "25.9.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "935627e7bc8f083035d9faad09ffaed9128f73fb1f74a8798f115749c43378e8" +checksum = "0e6701cb4a12d88a63f83ac41a11aa61286b5a678445a1a5ab9bc8e38654910a" dependencies = [ "bitflags 1.3.2", "byteorder", @@ -3968,6 +5161,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "font-types" version = "0.9.0" @@ -4230,9 +5429,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi", "wasi 0.14.7+wasi-0.2.4", + "wasm-bindgen", ] [[package]] @@ -4257,9 +5458,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.31.1" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" [[package]] name = "gl_generator" @@ -4295,6 +5496,18 @@ dependencies = [ "serde", ] +[[package]] +name = "glam" +version = "0.30.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e12d847aeb25f41be4c0ec9587d624e9cd631bc007a8fd7ce3f5851e064c6460" +dependencies = [ + "bytemuck", + "libm", + "rand 0.9.2", + "serde_core", +] + [[package]] name = "glob" version = "0.3.3" @@ -4443,6 +5656,7 @@ checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" dependencies = [ "cfg-if", "crunchy", + "num-traits", "serde", ] @@ -4482,7 +5696,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "equivalent", - "foldhash", + "foldhash 0.1.5", + "serde", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +dependencies = [ + "equivalent", "serde", ] @@ -4495,7 +5719,7 @@ dependencies = [ "bitflags 2.9.4", "com", "libc", - "libloading 0.8.8", + "libloading 0.8.9", "thiserror 1.0.69", "widestring", "winapi", @@ -4551,6 +5775,17 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "hexasphere" +version = "16.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29a164ceff4500f2a72b1d21beaa8aa8ad83aec2b641844c659b190cb3ea2e0b" +dependencies = [ + "constgebra", + "glam 0.30.8", + "tinyvec", +] + [[package]] name = "hexf-parse" version = "0.2.1" @@ -4767,9 +6002,9 @@ dependencies = [ [[package]] name = "imgref" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408" +checksum = "e7c5cedc30da3a610cac6b4ba17597bdf7152cf974e8aab3afb3d54455e371c8" [[package]] name = "immutable-chunkmap" @@ -4782,12 +6017,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.3" +version = "2.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92119844f513ffa41556430369ab02c295a3578af21cf945caa3e9e0c2481ac3" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" dependencies = [ "equivalent", - "hashbrown 0.15.5", + "hashbrown 0.16.0", "serde", "serde_core", ] @@ -4818,6 +6053,15 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "inventory" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e" +dependencies = [ + "rustversion", +] + [[package]] name = "io-lifetimes" version = "1.0.11" @@ -4922,9 +6166,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.78" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0b063578492ceec17683ef2f8c5e89121fbd0b172cbc280635ab7567db2738" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" dependencies = [ "once_cell", "wasm-bindgen", @@ -4949,7 +6193,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" dependencies = [ "libc", - "libloading 0.8.8", + "libloading 0.8.9", "pkg-config", ] @@ -4995,9 +6239,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.175" +version = "0.2.176" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" +checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" [[package]] name = "libfuzzer-sys" @@ -5021,12 +6265,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets 0.53.3", + "windows-link 0.2.0", ] [[package]] @@ -5140,9 +6384,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "memmap2" @@ -5161,7 +6405,7 @@ checksum = "5637e166ea14be6063a3f8ba5ccb9a4159df7d8f6d61c02fc3d480b1f90dcfcb" dependencies = [ "bitflags 2.9.4", "block", - "core-graphics-types", + "core-graphics-types 0.1.3", "foreign-types", "log", "objc", @@ -5176,7 +6420,22 @@ checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" dependencies = [ "bitflags 2.9.4", "block", - "core-graphics-types", + "core-graphics-types 0.1.3", + "foreign-types", + "log", + "objc", + "paste", +] + +[[package]] +name = "metal" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605" +dependencies = [ + "bitflags 2.9.4", + "block", + "core-graphics-types 0.2.0", "foreign-types", "log", "objc", @@ -5245,7 +6504,7 @@ dependencies = [ "arrayvec 0.7.6", "bit-set 0.5.3", "bitflags 2.9.4", - "codespan-reporting", + "codespan-reporting 0.11.1", "hexf-parse", "indexmap", "log", @@ -5268,7 +6527,7 @@ dependencies = [ "bit-set 0.8.0", "bitflags 2.9.4", "cfg_aliases 0.2.1", - "codespan-reporting", + "codespan-reporting 0.11.1", "hexf-parse", "indexmap", "log", @@ -5281,6 +6540,33 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "naga" +version = "26.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "916cbc7cb27db60be930a4e2da243cf4bc39569195f22fd8ee419cd31d5b662c" +dependencies = [ + "arrayvec 0.7.6", + "bit-set 0.8.0", + "bitflags 2.9.4", + "cfg-if", + "cfg_aliases 0.2.1", + "codespan-reporting 0.12.0", + "half", + "hashbrown 0.15.5", + "hexf-parse", + "indexmap", + "libm", + "log", + "num-traits", + "once_cell", + "pp-rs", + "rustc-hash", + "spirv", + "thiserror 2.0.16", + "unicode-ident", +] + [[package]] name = "naga_oil" version = "0.14.0" @@ -5288,7 +6574,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "275d9720a7338eedac966141089232514c84d76a246a58ef501af88c5edf402f" dependencies = [ "bit-set 0.5.3", - "codespan-reporting", + "codespan-reporting 0.11.1", "data-encoding", "indexmap", "naga 0.20.0", @@ -5308,7 +6594,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2464f7395decfd16bb4c33fb0cb3b2c645cc60d051bc7fb652d3720bfb20f18" dependencies = [ "bit-set 0.5.3", - "codespan-reporting", + "codespan-reporting 0.11.1", "data-encoding", "indexmap", "naga 24.0.0", @@ -5321,6 +6607,23 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "naga_oil" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b586d3cf5c9b7e13fe2af6e114406ff70773fd80881960378933b63e76f37dd" +dependencies = [ + "codespan-reporting 0.12.0", + "data-encoding", + "indexmap", + "naga 26.0.0", + "regex", + "rustc-hash", + "thiserror 2.0.16", + "tracing", + "unicode-ident", +] + [[package]] name = "ndk" version = "0.9.0" @@ -5535,7 +6838,7 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ - "proc-macro-crate 3.3.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", "syn 2.0.106", @@ -5822,9 +7125,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.7" +version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ "memchr", ] @@ -6106,7 +7409,7 @@ dependencies = [ "hermit-abi 0.5.2", "pin-project-lite", "rustix 1.1.2", - "windows-sys 0.61.0", + "windows-sys 0.61.1", ] [[package]] @@ -6196,11 +7499,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.22.27", + "toml_edit 0.23.6", ] [[package]] @@ -6270,9 +7573,9 @@ dependencies = [ [[package]] name = "pxfm" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55f4fedc84ed39cb7a489322318976425e42a147e2be79d8f878e2884f94e84" +checksum = "83f9b339b02259ada5c0f4a389b7fb472f933aa17ce176fd2ad98f28bb401fde" dependencies = [ "num-traits", ] @@ -6352,6 +7655,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", +] + [[package]] name = "rand_chacha" version = "0.2.2" @@ -6372,6 +7685,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + [[package]] name = "rand_core" version = "0.5.1" @@ -6390,14 +7713,33 @@ dependencies = [ "getrandom 0.2.16", ] +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", +] + +[[package]] +name = "rand_distr" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + [[package]] name = "rand_distr" -version = "0.4.3" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" +checksum = "6a8615d50dcf34fa31f7ab52692afec947c4dd0ab803cc87cb3b0b4570ff7463" dependencies = [ "num-traits", - "rand 0.8.5", + "rand 0.9.2", ] [[package]] @@ -6542,9 +7884,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.2" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" +checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" dependencies = [ "aho-corasick", "memchr", @@ -6554,9 +7896,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" +checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" dependencies = [ "aho-corasick", "memchr", @@ -6646,6 +7988,19 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "ron" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "beceb6f7bf81c73e73aeef6dd1356d9a1b2b4909e1f0fc3e59b034f9572d7b7f" +dependencies = [ + "base64 0.22.1", + "bitflags 2.9.4", + "serde", + "serde_derive", + "unicode-ident", +] + [[package]] name = "roxmltree" version = "0.20.0" @@ -6726,7 +8081,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.11.0", - "windows-sys 0.61.0", + "windows-sys 0.61.1", ] [[package]] @@ -6860,9 +8215,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.224" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aaeb1e94f53b16384af593c71e20b095e958dab1d26939c1b70645c5cfbcc0b" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ "serde_core", "serde_derive", @@ -6870,18 +8225,18 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.224" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f39390fa6346e24defbcdd3d9544ba8a19985d0af74df8501fbfe9a64341ab" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.224" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ff78ab5e8561c9a675bfc1785cb07ae721f0ee53329a595cefd8c04c2ac4e0" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -7116,6 +8471,15 @@ dependencies = [ "portable-atomic", ] +[[package]] +name = "spin" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" +dependencies = [ + "portable-atomic", +] + [[package]] name = "spirv" version = "0.3.0+sdk-1.3.268.0" @@ -7361,15 +8725,15 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.22.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84fa4d11fadde498443cca10fd3ac23c951f0dc59e080e9f4b93d4df4e4eea53" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand 2.3.0", "getrandom 0.3.3", "once_cell", "rustix 1.1.2", - "windows-sys 0.61.0", + "windows-sys 0.61.1", ] [[package]] @@ -7564,7 +8928,7 @@ checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", - "toml_datetime", + "toml_datetime 0.6.11", "toml_edit 0.22.27", ] @@ -7577,6 +8941,15 @@ dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_edit" version = "0.19.15" @@ -7584,7 +8957,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ "indexmap", - "toml_datetime", + "toml_datetime 0.6.11", "winnow 0.5.40", ] @@ -7597,7 +8970,28 @@ dependencies = [ "indexmap", "serde", "serde_spanned", - "toml_datetime", + "toml_datetime 0.6.11", + "winnow 0.7.13", +] + +[[package]] +name = "toml_edit" +version = "0.23.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3effe7c0e86fdff4f69cdd2ccc1b96f933e24811c5441d44904e8683e27184b" +dependencies = [ + "indexmap", + "toml_datetime 0.7.2", + "toml_parser", + "winnow 0.7.13", +] + +[[package]] +name = "toml_parser" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" +dependencies = [ "winnow 0.7.13", ] @@ -7659,6 +9053,18 @@ dependencies = [ "tracing-subscriber", ] +[[package]] +name = "tracing-oslog" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d76902d2a8d5f9f55a81155c08971734071968c90f2d9bfe645fe700579b2950" +dependencies = [ + "cc", + "cfg-if", + "tracing-core", + "tracing-subscriber", +] + [[package]] name = "tracing-subscriber" version = "0.3.20" @@ -7784,6 +9190,12 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +[[package]] +name = "unicode-width" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" + [[package]] name = "unicode-xid" version = "0.2.6" @@ -7942,9 +9354,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.101" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e14915cadd45b529bb8d1f343c4ed0ac1de926144b746e2710f9cd05df6603b" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" dependencies = [ "cfg-if", "once_cell", @@ -7955,9 +9367,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.101" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28d1ba982ca7923fd01448d5c30c6864d0a14109560296a162f80f305fb93bb" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" dependencies = [ "bumpalo", "log", @@ -7969,9 +9381,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.51" +version = "0.4.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca85039a9b469b38336411d6d6ced91f3fc87109a2a27b0c197663f5144dffe" +checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" dependencies = [ "cfg-if", "js-sys", @@ -7982,9 +9394,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.101" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c3d463ae3eff775b0c45df9da45d68837702ac35af998361e2c84e7c5ec1b0d" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7992,9 +9404,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.101" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb4ce89b08211f923caf51d527662b75bdc9c9c7aab40f86dcb9fb85ac552aa" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" dependencies = [ "proc-macro2", "quote", @@ -8005,9 +9417,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.101" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f143854a3b13752c6950862c906306adb27c7e839f7414cec8fea35beab624c1" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" dependencies = [ "unicode-ident", ] @@ -8123,9 +9535,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.78" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e4b637749ff0d92b8fad63aa1f7cff3cbe125fd49c175cd6345e7272638b12" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" dependencies = [ "js-sys", "wasm-bindgen", @@ -8218,6 +9630,34 @@ dependencies = [ "wgpu-types 24.0.0", ] +[[package]] +name = "wgpu" +version = "26.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70b6ff82bbf6e9206828e1a3178e851f8c20f1c9028e74dd3a8090741ccd5798" +dependencies = [ + "arrayvec 0.7.6", + "bitflags 2.9.4", + "cfg-if", + "cfg_aliases 0.2.1", + "document-features", + "hashbrown 0.15.5", + "js-sys", + "log", + "naga 26.0.0", + "portable-atomic", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core 26.0.1", + "wgpu-hal 26.0.4", + "wgpu-types 26.0.0", +] + [[package]] name = "wgpu-core" version = "0.21.1" @@ -8228,7 +9668,7 @@ dependencies = [ "bit-vec 0.6.3", "bitflags 2.9.4", "cfg_aliases 0.1.1", - "codespan-reporting", + "codespan-reporting 0.11.1", "document-features", "indexmap", "log", @@ -8270,6 +9710,64 @@ dependencies = [ "wgpu-types 24.0.0", ] +[[package]] +name = "wgpu-core" +version = "26.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f62f1053bd28c2268f42916f31588f81f64796e2ff91b81293515017ca8bd9" +dependencies = [ + "arrayvec 0.7.6", + "bit-set 0.8.0", + "bit-vec 0.8.0", + "bitflags 2.9.4", + "cfg_aliases 0.2.1", + "document-features", + "hashbrown 0.15.5", + "indexmap", + "log", + "naga 26.0.0", + "once_cell", + "parking_lot", + "portable-atomic", + "profiling", + "raw-window-handle", + "rustc-hash", + "smallvec", + "thiserror 2.0.16", + "wgpu-core-deps-apple", + "wgpu-core-deps-wasm", + "wgpu-core-deps-windows-linux-android", + "wgpu-hal 26.0.4", + "wgpu-types 26.0.0", +] + +[[package]] +name = "wgpu-core-deps-apple" +version = "26.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18ae5fbde6a4cbebae38358aa73fcd6e0f15c6144b67ef5dc91ded0db125dbdf" +dependencies = [ + "wgpu-hal 26.0.4", +] + +[[package]] +name = "wgpu-core-deps-wasm" +version = "26.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c03b9f9e1a50686d315fc6debe4980cc45cd37b0e919351917df494e8fdc8885" +dependencies = [ + "wgpu-hal 26.0.4", +] + +[[package]] +name = "wgpu-core-deps-windows-linux-android" +version = "26.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "720a5cb9d12b3d337c15ff0e24d3e97ed11490ff3f7506e7f3d98c68fa5d6f14" +dependencies = [ + "wgpu-hal 26.0.4", +] + [[package]] name = "wgpu-hal" version = "0.21.1" @@ -8283,7 +9781,7 @@ dependencies = [ "bitflags 2.9.4", "block", "cfg_aliases 0.1.1", - "core-graphics-types", + "core-graphics-types 0.1.3", "d3d12", "glow 0.13.1", "glutin_wgl_sys 0.5.0", @@ -8294,7 +9792,7 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading 0.8.8", + "libloading 0.8.9", "log", "metal 0.28.0", "naga 0.20.0", @@ -8329,7 +9827,7 @@ dependencies = [ "block", "bytemuck", "cfg_aliases 0.2.1", - "core-graphics-types", + "core-graphics-types 0.1.3", "glow 0.16.0", "glutin_wgl_sys 0.6.1", "gpu-alloc", @@ -8338,7 +9836,7 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading 0.8.8", + "libloading 0.8.9", "log", "metal 0.31.0", "naga 24.0.0", @@ -8361,6 +9859,54 @@ dependencies = [ "windows-core 0.58.0", ] +[[package]] +name = "wgpu-hal" +version = "26.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7df2c64ac282a91ad7662c90bc4a77d4a2135bc0b2a2da5a4d4e267afc034b9e" +dependencies = [ + "android_system_properties", + "arrayvec 0.7.6", + "ash 0.38.0+1.3.281", + "bit-set 0.8.0", + "bitflags 2.9.4", + "block", + "bytemuck", + "cfg-if", + "cfg_aliases 0.2.1", + "core-graphics-types 0.2.0", + "glow 0.16.0", + "glutin_wgl_sys 0.6.1", + "gpu-alloc", + "gpu-allocator 0.27.0", + "gpu-descriptor", + "hashbrown 0.15.5", + "js-sys", + "khronos-egl", + "libc", + "libloading 0.8.9", + "log", + "metal 0.32.0", + "naga 26.0.0", + "ndk-sys 0.6.0+11769913", + "objc", + "ordered-float 5.0.0", + "parking_lot", + "portable-atomic", + "portable-atomic-util", + "profiling", + "range-alloc", + "raw-window-handle", + "renderdoc-sys", + "smallvec", + "thiserror 2.0.16", + "wasm-bindgen", + "web-sys", + "wgpu-types 26.0.0", + "windows 0.58.0", + "windows-core 0.58.0", +] + [[package]] name = "wgpu-types" version = "0.20.0" @@ -8385,6 +9931,21 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wgpu-types" +version = "26.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca7a8d8af57c18f57d393601a1fb159ace8b2328f1b6b5f80893f7d672c9ae2" +dependencies = [ + "bitflags 2.9.4", + "bytemuck", + "js-sys", + "log", + "serde", + "thiserror 2.0.16", + "web-sys", +] + [[package]] name = "widestring" version = "1.2.0" @@ -8413,7 +9974,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.0", + "windows-sys 0.61.1", ] [[package]] @@ -8454,6 +10015,28 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections", + "windows-core 0.61.2", + "windows-future", + "windows-link 0.1.3", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core 0.61.2", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -8482,10 +10065,34 @@ dependencies = [ "windows-implement 0.58.0", "windows-interface 0.58.0", "windows-result 0.2.0", - "windows-strings", + "windows-strings 0.1.0", "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement 0.60.1", + "windows-interface 0.59.2", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading", +] + [[package]] name = "windows-implement" version = "0.53.0" @@ -8508,6 +10115,17 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "windows-implement" +version = "0.60.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb307e42a74fb6de9bf3a02d9712678b22399c87e6fa869d6dfcd8c1b7754e0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "windows-interface" version = "0.53.0" @@ -8530,6 +10148,17 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "windows-interface" +version = "0.59.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0abd1ddbc6964ac14db11c7213d6532ef34bd9aa042c2e5935f59d7908b46a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "windows-link" version = "0.1.3" @@ -8542,6 +10171,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", +] + [[package]] name = "windows-result" version = "0.1.2" @@ -8560,6 +10199,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + [[package]] name = "windows-strings" version = "0.1.0" @@ -8570,6 +10218,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", +] + [[package]] name = "windows-sys" version = "0.45.0" @@ -8612,14 +10269,14 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.3", + "windows-targets 0.53.4", ] [[package]] name = "windows-sys" -version = "0.61.0" +version = "0.61.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa" +checksum = "6f109e41dd4a3c848907eb83d5a42ea98b3769495597450cf6d153507b166f0f" dependencies = [ "windows-link 0.2.0", ] @@ -8672,11 +10329,11 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.3" +version = "0.53.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +checksum = "2d42b7b7f66d2a06854650af09cfdf8713e427a439c97ad65a6375318033ac4b" dependencies = [ - "windows-link 0.1.3", + "windows-link 0.2.0", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -8687,6 +10344,15 @@ dependencies = [ "windows_x86_64_msvc 0.53.0", ] +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -8882,7 +10548,7 @@ dependencies = [ "calloop", "cfg_aliases 0.2.1", "concurrent-queue", - "core-foundation", + "core-foundation 0.9.4", "core-graphics", "cursor-icon", "dpi", @@ -8978,7 +10644,7 @@ dependencies = [ "as-raw-xcb-connection", "gethostname", "libc", - "libloading 0.8.8", + "libloading 0.8.9", "once_cell", "rustix 1.1.2", "x11rb-protocol", diff --git a/Cargo.toml b/Cargo.toml index 1b77b0f6..f7e58b9d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -117,8 +117,11 @@ headless = [ "io_ply", "planar", "buffer_storage", + "sh3", "sort_rayon", "sort_std", + "sort_bitonic", + "sort_radix", ] viewer = [ @@ -157,11 +160,13 @@ webgpu = ["bevy/webgpu"] [dependencies] base64 = { version = "0.22", optional = true } -bevy_args = "~1.8" +# TODO change after PRs get merged +bevy_args = { git = "https://github.com/cs50victor/bevy_args", branch = "chore/bevy_0.17" } +bevy_interleave = { git = "https://github.com/cs50victor/bevy_interleave", branch = "chore/bump_bevy" } + bevy-inspector-egui = { version = "0.31", optional = true } -bevy_interleave = { version = "0.7.2" } # bevy_panorbit_camera = { git = "https://github.com/mosure/bevy_panorbit_camera.git", optional = true, features = ["bevy_egui"] } -bevy_panorbit_camera = { version = "0.26", optional = true, features = ["bevy_egui"] } +bevy_panorbit_camera = { git = "https://github.com/kristoff3r/bevy_panorbit_camera", optional = true , features = ["bevy_egui"]} bevy_transform_gizmo = { version = "0.12", optional = true } bevy_file_asset = { version = "0.2", optional = true } bevy_web_asset = { version = "0.11", optional = true } @@ -191,7 +196,7 @@ wasm-bindgen = "0.2" [dependencies.bevy] -version = "0.16" +version = "0.17.0-rc.2" default-features = false features = [ "bevy_asset", @@ -220,6 +225,7 @@ features = [ [dev-dependencies] criterion = { version = "0.6", features = ["html_reports"] } +crossbeam-channel = "0.5.15" futures-intrusive = { version = "0.5.0" } pollster = { version = "0.4.0" } diff --git a/examples/headless.rs b/examples/headless.rs index 5bbb89f4..569caf35 100644 --- a/examples/headless.rs +++ b/examples/headless.rs @@ -1,464 +1,396 @@ -// for running the gaussian splatting viewer without a window ( i.e on a server ) -//! ensure the "headless_output" directory exists in the root of the project -// c_rr --example headless --no-default-features --features "headless" -- [filename] +//! Headless rendering for gaussian splatting +//! +//! Renders gaussian splatting to images without creating a window. +//! Based on Bevy's headless_renderer example. +//! +//! Usage: cargo run --example headless --no-default-features --features "headless" -- [filename] use bevy::{ - app::ScheduleRunnerPlugin, core_pipeline::tonemapping::Tonemapping, prelude::*, - render::renderer::RenderDevice, + app::{AppExit, ScheduleRunnerPlugin}, + camera::RenderTarget, + core_pipeline::tonemapping::Tonemapping, + image::TextureFormatPixelInfo, + prelude::*, + render::{ + render_asset::RenderAssets, + render_graph::{self, NodeRunError, RenderGraph, RenderGraphContext, RenderLabel}, + render_resource::{ + Buffer, BufferDescriptor, BufferUsages, CommandEncoderDescriptor, Extent3d, MapMode, + PollType, TexelCopyBufferInfo, TexelCopyBufferLayout, TextureFormat, TextureUsages, + }, + renderer::{RenderContext, RenderDevice, RenderQueue}, + texture::GpuImage, + Extract, Render, RenderApp, RenderSystems, + }, + window::ExitCondition, + winit::WinitPlugin, }; use bevy_args::BevyArgsPlugin; - use bevy_gaussian_splatting::{ CloudSettings, GaussianCamera, GaussianSplattingPlugin, PlanarGaussian3d, PlanarGaussian3dHandle, gaussian::interface::TestCloud, random_gaussians_3d, utils::GaussianSplattingViewer, }; +use crossbeam_channel::{Receiver, Sender}; +use std::{ + ops::Deref, + path::PathBuf, + sync::{ + atomic::{AtomicBool, Ordering}, + Arc, + }, + time::Duration, +}; -/// Derived from: https://github.com/bevyengine/bevy/pull/5550 -mod frame_capture { - pub mod image_copy { - use std::sync::Arc; +#[derive(Resource, Deref)] +struct MainWorldReceiver(Receiver>); - use bevy::prelude::*; - use bevy::render::render_asset::RenderAssets; - use bevy::render::render_graph::{ - self, NodeRunError, RenderGraph, RenderGraphContext, RenderLabel, - }; - use bevy::render::renderer::{RenderContext, RenderDevice, RenderQueue}; - use bevy::render::texture::GpuImage; - use bevy::render::{Extract, RenderApp}; +#[derive(Resource, Deref)] +struct RenderWorldSender(Sender>); - use bevy::render::render_resource::{ - Buffer, BufferDescriptor, BufferUsages, CommandEncoderDescriptor, Extent3d, MapMode, - }; - use pollster::FutureExt; - use wgpu::{Maintain, TexelCopyBufferInfo, TexelCopyBufferLayout}; - - use std::sync::atomic::{AtomicBool, Ordering}; - - pub fn receive_images( - image_copiers: Query<&ImageCopier>, - mut images: ResMut>, - render_device: Res, - ) { - for image_copier in image_copiers.iter() { - if !image_copier.enabled() { - continue; - } - // Derived from: https://sotrh.github.io/learn-wgpu/showcase/windowless/#a-triangle-without-a-window - // We need to scope the mapping variables so that we can - // unmap the buffer - async { - let buffer_slice = image_copier.buffer.slice(..); - - // NOTE: We have to create the mapping THEN device.poll() before await - // the future. Otherwise the application will freeze. - let (tx, rx) = futures_intrusive::channel::shared::oneshot_channel(); - buffer_slice.map_async(MapMode::Read, move |result| { - tx.send(result).unwrap(); - }); - render_device.poll(Maintain::Wait); - rx.receive().await.unwrap().unwrap(); - if let Some(image) = images.get_mut(&image_copier.dst_image) { - image.data = buffer_slice.get_mapped_range().to_vec().into(); - } - - image_copier.buffer.unmap(); - } - .block_on(); - } +#[derive(Debug, Default, Resource)] +struct CaptureController { + frames_to_wait: u32, + width: u32, + height: u32, +} + +impl CaptureController { + pub fn new(width: u32, height: u32) -> Self { + Self { + frames_to_wait: 40, + width, + height, } + } +} - #[derive(Debug, Hash, PartialEq, Eq, Clone, RenderLabel)] - pub struct ImageCopyLabel; +fn main() { + App::new() + .insert_resource(CaptureController::new(1920, 1080)) + .insert_resource(ClearColor(Color::srgb_u8(0, 0, 0))) + .add_plugins( + DefaultPlugins + .set(ImagePlugin::default_nearest()) + .set(WindowPlugin { + primary_window: None, + exit_condition: ExitCondition::DontExit, + ..default() + }) + // Disable WinitPlugin for headless environments + .disable::(), + ) + .add_plugins(BevyArgsPlugin::::default()) + .add_plugins(ImageCopyPlugin) + .add_plugins(CaptureFramePlugin) + .add_plugins(ScheduleRunnerPlugin::run_loop( + Duration::from_secs_f64(1.0 / 60.0), + )) + .add_plugins(GaussianSplattingPlugin) + .add_systems(Startup, setup_gaussian_cloud) + .run(); +} - pub struct ImageCopyPlugin; - impl Plugin for ImageCopyPlugin { - fn build(&self, app: &mut App) { - let render_app = app - .add_systems(Update, receive_images) - .sub_app_mut(RenderApp); +fn setup_gaussian_cloud( + mut commands: Commands, + asset_server: Res, + args: Res, + mut gaussian_assets: ResMut>, + mut images: ResMut>, + render_device: Res, + controller: Res, +) { + // Load or generate gaussian cloud + let cloud = if args.gaussian_count > 0 { + println!("Generating {} gaussians", args.gaussian_count); + gaussian_assets.add(random_gaussians_3d(args.gaussian_count)) + } else if args.input_cloud.is_some() && !args.input_cloud.as_ref().unwrap().is_empty() { + println!("Loading {:?}", args.input_cloud); + asset_server.load(&args.input_cloud.as_ref().unwrap().clone()) + } else { + gaussian_assets.add(PlanarGaussian3d::test_model()) + }; - render_app.add_systems(ExtractSchedule, image_copy_extract); + // Setup render target + let size = Extent3d { + width: controller.width, + height: controller.height, + ..default() + }; - let mut graph = render_app - .world_mut() - .get_resource_mut::() - .unwrap(); + let mut render_target_image = Image::new_target_texture( + size.width, + size.height, + TextureFormat::bevy_default(), + ); + render_target_image.texture_descriptor.usage |= TextureUsages::COPY_SRC; + let render_target_handle = images.add(render_target_image); - graph.add_node(ImageCopyLabel, ImageCopyDriver); - graph.add_node_edge(ImageCopyLabel, bevy::render::graph::CameraDriverLabel); - } - } + let cpu_image = Image::new_target_texture( + size.width, + size.height, + TextureFormat::bevy_default(), + ); + let cpu_image_handle = images.add(cpu_image); - #[derive(Clone, Default, Resource, Deref, DerefMut)] - pub struct ImageCopiers(pub Vec); + commands.spawn(( + PlanarGaussian3dHandle(cloud), + CloudSettings::default(), + Name::new("gaussian_cloud"), + )); - #[derive(Clone, Component)] - pub struct ImageCopier { - buffer: Buffer, - enabled: Arc, - src_image: Handle, - dst_image: Handle, - } + commands.spawn(( + Camera3d::default(), + Camera { + target: RenderTarget::Image(render_target_handle.clone().into()), + ..default() + }, + Transform::from_translation(Vec3::new(0.0, 1.5, 5.0)), + Tonemapping::None, + GaussianCamera::default(), + )); - impl ImageCopier { - pub fn new( - src_image: Handle, - dst_image: Handle, - size: Extent3d, - render_device: &RenderDevice, - ) -> ImageCopier { - let padded_bytes_per_row = - RenderDevice::align_copy_bytes_per_row((size.width) as usize) * 4; - - let cpu_buffer = render_device.create_buffer(&BufferDescriptor { - label: None, - size: padded_bytes_per_row as u64 * size.height as u64, - usage: BufferUsages::MAP_READ | BufferUsages::COPY_DST, - mapped_at_creation: false, - }); - - ImageCopier { - buffer: cpu_buffer, - src_image, - dst_image, - enabled: Arc::new(AtomicBool::new(true)), - } - } + // Spawn image copier for GPU->CPU transfer + commands.spawn(ImageCopier::new( + render_target_handle, + size, + &render_device, + )); - pub fn enabled(&self) -> bool { - self.enabled.load(Ordering::Relaxed) - } - } + // Spawn image to save + commands.spawn(ImageToSave(cpu_image_handle)); +} - pub fn image_copy_extract( - mut commands: Commands, - image_copiers: Extract>, - ) { - commands.insert_resource(ImageCopiers( - image_copiers.iter().cloned().collect::>(), - )); - } +/// Plugin for copying images from GPU to CPU +pub struct ImageCopyPlugin; - #[derive(Default)] - pub struct ImageCopyDriver; - - impl render_graph::Node for ImageCopyDriver { - fn run( - &self, - _graph: &mut RenderGraphContext, - render_context: &mut RenderContext, - world: &World, - ) -> Result<(), NodeRunError> { - let image_copiers = world.get_resource::().unwrap(); - let gpu_images = world.get_resource::>().unwrap(); - - for image_copier in image_copiers.iter() { - if !image_copier.enabled() { - continue; - } - - let src_image = gpu_images.get(&image_copier.src_image).unwrap(); - - let mut encoder = render_context - .render_device() - .create_command_encoder(&CommandEncoderDescriptor::default()); - - let block_dimensions = src_image.texture_format.block_dimensions(); - let block_size = src_image.texture_format.block_copy_size(None).unwrap(); - - let padded_bytes_per_row = RenderDevice::align_copy_bytes_per_row( - (src_image.size.width as usize / block_dimensions.0 as usize) - * block_size as usize, - ); - - let texture_extent = Extent3d { - width: src_image.size.width as u32, - height: src_image.size.height as u32, - depth_or_array_layers: 1, - }; - - encoder.copy_texture_to_buffer( - src_image.texture.as_image_copy(), - TexelCopyBufferInfo { - buffer: &image_copier.buffer, - layout: TexelCopyBufferLayout { - offset: 0, - bytes_per_row: Some( - std::num::NonZeroU32::new(padded_bytes_per_row as u32) - .unwrap() - .into(), - ), - rows_per_image: None, - }, - }, - texture_extent, - ); - - let render_queue = world.get_resource::().unwrap(); - render_queue.submit(std::iter::once(encoder.finish())); - } - - Ok(()) - } - } - } - pub mod scene { - use std::path::PathBuf; +impl Plugin for ImageCopyPlugin { + fn build(&self, app: &mut App) { + let (sender, receiver) = crossbeam_channel::unbounded(); - use bevy::{ - app::AppExit, - prelude::*, - render::{camera::RenderTarget, renderer::RenderDevice}, - }; - use wgpu::{Extent3d, TextureDescriptor, TextureDimension, TextureFormat, TextureUsages}; + let render_app = app + .insert_resource(MainWorldReceiver(receiver)) + .sub_app_mut(RenderApp); - use super::image_copy::ImageCopier; + let mut graph = render_app.world_mut().resource_mut::(); + graph.add_node(ImageCopy, ImageCopyDriver); + graph.add_node_edge(bevy::render::graph::CameraDriverLabel, ImageCopy); - #[derive(Component, Default)] - pub struct CaptureCamera; + render_app + .insert_resource(RenderWorldSender(sender)) + .add_systems(ExtractSchedule, extract_image_copiers) + .add_systems( + Render, + receive_image_from_buffer.after(RenderSystems::Render), + ); + } +} - #[derive(Component, Deref, DerefMut)] - struct ImageToSave(Handle); +pub struct CaptureFramePlugin; - pub struct CaptureFramePlugin; - impl Plugin for CaptureFramePlugin { - fn build(&self, app: &mut App) { - app.add_systems(PostUpdate, update); - } - } +impl Plugin for CaptureFramePlugin { + fn build(&self, app: &mut App) { + app.add_systems(PostUpdate, save_captured_frame); + } +} - #[derive(Debug, Default, Resource, Event)] - pub struct SceneController { - state: SceneState, - name: String, - width: u32, - height: u32, - single_image: bool, - } +#[derive(Clone, Component)] +struct ImageCopier { + buffer: Buffer, + enabled: Arc, + src_image: Handle, +} - impl SceneController { - pub fn new(width: u32, height: u32, single_image: bool) -> SceneController { - SceneController { - state: SceneState::BuildScene, - name: String::from(""), - width, - height, - single_image, - } - } +impl ImageCopier { + pub fn new(src_image: Handle, size: Extent3d, render_device: &RenderDevice) -> Self { + let padded_bytes_per_row = + RenderDevice::align_copy_bytes_per_row(size.width as usize) * 4; + + let buffer = render_device.create_buffer(&BufferDescriptor { + label: Some("image_copier_buffer"), + size: padded_bytes_per_row as u64 * size.height as u64, + usage: BufferUsages::MAP_READ | BufferUsages::COPY_DST, + mapped_at_creation: false, + }); + + Self { + buffer, + src_image, + enabled: Arc::new(AtomicBool::new(true)), } + } - #[derive(Debug, Default)] - pub enum SceneState { - #[default] - BuildScene, - Render(u32), - } + pub fn enabled(&self) -> bool { + self.enabled.load(Ordering::Relaxed) + } +} - pub fn setup_render_target( - commands: &mut Commands, - images: &mut ResMut>, - render_device: &Res, - scene_controller: &mut ResMut, - pre_roll_frames: u32, - scene_name: String, - ) -> RenderTarget { - let size = Extent3d { - width: scene_controller.width, - height: scene_controller.height, - ..Default::default() - }; +#[derive(Clone, Default, Resource, Deref)] +struct ImageCopiers(Vec); - // This is the texture that will be rendered to. - let mut render_target_image = Image { - texture_descriptor: TextureDescriptor { - label: None, - size, - dimension: TextureDimension::D2, - format: TextureFormat::Rgba8UnormSrgb, - mip_level_count: 1, - sample_count: 1, - usage: TextureUsages::COPY_SRC - | TextureUsages::COPY_DST - | TextureUsages::TEXTURE_BINDING - | TextureUsages::RENDER_ATTACHMENT, - view_formats: &[], - }, - ..Default::default() - }; - render_target_image.resize(size); - let render_target_image_handle = images.add(render_target_image); - - // This is the texture that will be copied to. - let mut cpu_image = Image { - texture_descriptor: TextureDescriptor { - label: None, - size, - dimension: TextureDimension::D2, - format: TextureFormat::Rgba8UnormSrgb, - mip_level_count: 1, - sample_count: 1, - usage: TextureUsages::COPY_DST | TextureUsages::TEXTURE_BINDING, - view_formats: &[], - }, - ..Default::default() - }; - cpu_image.resize(size); - let cpu_image_handle = images.add(cpu_image); +fn extract_image_copiers( + mut commands: Commands, + image_copiers: Extract>, +) { + commands.insert_resource(ImageCopiers( + image_copiers.iter().cloned().collect(), + )); +} - commands.spawn(ImageCopier::new( - render_target_image_handle.clone(), - cpu_image_handle.clone(), - size, - render_device, - )); +/// RenderGraph label +#[derive(Debug, PartialEq, Eq, Clone, Hash, RenderLabel)] +struct ImageCopy; + +#[derive(Default)] +struct ImageCopyDriver; + +impl render_graph::Node for ImageCopyDriver { + fn run( + &self, + _graph: &mut RenderGraphContext, + render_context: &mut RenderContext, + world: &World, + ) -> Result<(), NodeRunError> { + let image_copiers = world.get_resource::().unwrap(); + let gpu_images = world.get_resource::>().unwrap(); + + for image_copier in image_copiers.iter() { + if !image_copier.enabled() { + continue; + } - commands.spawn(ImageToSave(cpu_image_handle)); + let Some(src_image) = gpu_images.get(&image_copier.src_image) else { + continue; + }; - scene_controller.state = SceneState::Render(pre_roll_frames); - scene_controller.name = scene_name; - RenderTarget::Image(render_target_image_handle.into()) - } + let mut encoder = render_context + .render_device() + .create_command_encoder(&CommandEncoderDescriptor::default()); + + let block_dimensions = src_image.texture_format.block_dimensions(); + let block_size = src_image.texture_format.block_copy_size(None).unwrap(); + + let padded_bytes_per_row = RenderDevice::align_copy_bytes_per_row( + (src_image.size.width as usize / block_dimensions.0 as usize) * block_size as usize, + ); + + encoder.copy_texture_to_buffer( + src_image.texture.as_image_copy(), + TexelCopyBufferInfo { + buffer: &image_copier.buffer, + layout: TexelCopyBufferLayout { + offset: 0, + bytes_per_row: Some( + std::num::NonZero::::new(padded_bytes_per_row as u32) + .unwrap() + .into(), + ), + rows_per_image: None, + }, + }, + src_image.size, + ); - fn update( - images_to_save: Query<&ImageToSave>, - mut images: ResMut>, - mut scene_controller: ResMut, - mut app_exit_writer: EventWriter, - ) { - if let SceneState::Render(n) = scene_controller.state { - if n < 1 { - for (i, image) in images_to_save.iter().enumerate() { - let img_bytes = images.get_mut(image.id()).unwrap(); - - let img = match img_bytes.clone().try_into_dynamic() { - Ok(img) => img.to_rgba8(), - Err(e) => panic!("Failed to create image buffer {e:?}"), - }; - - let images_dir = - PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("headless_output"); - std::fs::create_dir_all(&images_dir).unwrap(); - - let image_path = images_dir.join(format!("{i}.png")); - if let Err(e) = img.save(image_path) { - panic!("Failed to save image: {}", e); - }; - } - if scene_controller.single_image { - app_exit_writer.write(AppExit::Success); - } - } else { - scene_controller.state = SceneState::Render(n - 1); - } - } + let render_queue = world.get_resource::().unwrap(); + render_queue.submit(std::iter::once(encoder.finish())); } + + Ok(()) } } -fn setup_gaussian_cloud( - mut commands: Commands, - asset_server: Res, - args: Res, - mut gaussian_assets: ResMut>, - mut scene_controller: ResMut, - mut images: ResMut>, +fn receive_image_from_buffer( + image_copiers: Res, render_device: Res, + sender: Res, ) { - let cloud: Handle; + for image_copier in image_copiers.0.iter() { + if !image_copier.enabled() { + continue; + } - if args.gaussian_count > 0 { - println!("generating {} gaussians", args.gaussian_count); - cloud = gaussian_assets.add(random_gaussians_3d(args.gaussian_count)); - } else if args.input_cloud.is_some() && !args.input_cloud.as_ref().unwrap().is_empty() { - println!("loading {:?}", args.input_cloud); - cloud = asset_server.load(&args.input_cloud.as_ref().unwrap().clone()); - } else { - cloud = gaussian_assets.add(PlanarGaussian3d::test_model()); - } + let buffer_slice = image_copier.buffer.slice(..); + let (tx, rx) = crossbeam_channel::bounded(1); - let render_target = frame_capture::scene::setup_render_target( - &mut commands, - &mut images, - &render_device, - &mut scene_controller, - 15, - String::from("main_scene"), - ); + buffer_slice.map_async(MapMode::Read, move |result| match result { + Ok(()) => tx.send(()).expect("Failed to send map result"), + Err(err) => panic!("Failed to map buffer: {err}"), + }); - commands.spawn(( - PlanarGaussian3dHandle(cloud), - CloudSettings::default(), - Name::new("gaussian_cloud"), - )); + render_device + .poll(PollType::Wait) + .expect("Failed to poll device"); - commands.spawn(( - Camera3d::default(), - Transform::from_translation(Vec3::new(0.0, 1.5, 5.0)), - Tonemapping::None, - Camera { - target: render_target, - ..default() - }, - GaussianCamera::default(), - )); -} + rx.recv().expect("Failed to receive buffer map"); -pub struct AppConfig { - width: u32, - height: u32, - single_image: bool, + let _ = sender.send(buffer_slice.get_mapped_range().to_vec()); + image_copier.buffer.unmap(); + } } -fn headless_app() { - let mut app = App::new(); +#[derive(Component, Deref)] +struct ImageToSave(Handle); - let config = AppConfig { - width: 1920, - height: 1080, - single_image: true, - }; +fn save_captured_frame( + images_to_save: Query<&ImageToSave>, + receiver: Res, + mut images: ResMut>, + mut controller: ResMut, + mut app_exit: MessageWriter, +) { + if controller.frames_to_wait > 0 { + controller.frames_to_wait -= 1; + while receiver.try_recv().is_ok() {} + return; + } - // setup frame capture - app.insert_resource(frame_capture::scene::SceneController::new( - config.width, - config.height, - config.single_image, - )); - app.insert_resource(ClearColor(Color::srgb_u8(0, 0, 0))); - - app.add_plugins( - DefaultPlugins - .set(ImagePlugin::default_nearest()) - .set(WindowPlugin { - primary_window: None, - exit_condition: bevy::window::ExitCondition::DontExit, - close_when_requested: false, - }), - ); - app.add_plugins(BevyArgsPlugin::::default()); + // Try to receive image data + let mut image_data = Vec::new(); + while let Ok(data) = receiver.try_recv() { + image_data = data; + } - // headless frame capture - app.add_plugins(frame_capture::image_copy::ImageCopyPlugin); - app.add_plugins(frame_capture::scene::CaptureFramePlugin); + if image_data.is_empty() { + return; + } - app.add_plugins(ScheduleRunnerPlugin::run_loop( - core::time::Duration::from_secs_f64(1.0 / 60.0), - )); + for image_handle in images_to_save.iter() { + let Some(image) = images.get_mut(image_handle.id()) else { + continue; + }; - // setup for gaussian splatting - app.add_plugins(GaussianSplattingPlugin); + let row_bytes = image.width() as usize + * image.texture_descriptor.format.pixel_size().unwrap(); + let aligned_row_bytes = RenderDevice::align_copy_bytes_per_row(row_bytes); + + if row_bytes == aligned_row_bytes { + image.data.as_mut().unwrap().clone_from(&image_data); + } else { + // Shrink to original size + image.data = Some( + image_data + .chunks(aligned_row_bytes) + .take(image.height() as usize) + .flat_map(|row| &row[..row_bytes.min(row.len())]) + .cloned() + .collect(), + ); + } - app.init_resource::(); - app.add_event::(); + let img = match image.clone().try_into_dynamic() { + Ok(img) => img.to_rgba8(), + Err(e) => panic!("Failed to create image: {e:?}"), + }; - app.add_systems(Startup, setup_gaussian_cloud); + let output_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("headless_output"); + std::fs::create_dir_all(&output_dir).unwrap(); + let output_path = output_dir.join("0.png"); - app.run(); -} + info!("Saving screenshot to {:?}", output_path); + if let Err(e) = img.save(&output_path) { + panic!("Failed to save image: {e}"); + } + } -pub fn main() { - headless_app(); -} + app_exit.write(AppExit::Success); +} \ No newline at end of file diff --git a/examples/multi_camera.rs b/examples/multi_camera.rs index 3ec20a2a..b6695f24 100644 --- a/examples/multi_camera.rs +++ b/examples/multi_camera.rs @@ -1,6 +1,5 @@ use bevy::{ - app::AppExit, core_pipeline::tonemapping::Tonemapping, prelude::*, render::camera::Viewport, - window::WindowResized, + app::AppExit, camera::Viewport, core_pipeline::tonemapping::Tonemapping, prelude::*, window::WindowResized }; use bevy_args::{BevyArgsPlugin, parse_args}; use bevy_inspector_egui::{bevy_egui::EguiPlugin, quick::WorldInspectorPlugin}; @@ -226,7 +225,7 @@ struct CameraPosition { fn set_camera_viewports( windows: Query<&Window>, - mut resize_events: EventReader, + mut resize_events: MessageReader, mut cameras: Query<(&CameraPosition, &mut Camera), With>, ) { for resize_event in resize_events.read() { @@ -243,7 +242,7 @@ fn set_camera_viewports( } } -fn esc_close(keys: Res>, mut exit: EventWriter) { +fn esc_close(keys: Res>, mut exit: MessageWriter) { if keys.just_pressed(KeyCode::Escape) { exit.write(AppExit::Success); } diff --git a/src/gaussian/cloud.rs b/src/gaussian/cloud.rs index dd8cf423..8ada439a 100644 --- a/src/gaussian/cloud.rs +++ b/src/gaussian/cloud.rs @@ -1,18 +1,30 @@ use bevy::{ - ecs::{component::HookContext, world::DeferredWorld}, + camera::visibility::{NoFrustumCulling, VisibilitySystems, VisibilityClass, add_visibility_class}, + ecs::{lifecycle::HookContext, world::DeferredWorld}, + math::bounding::Aabb3d, prelude::*, - render::{ - primitives::Aabb, - view::{ - VisibilityClass, - visibility::{NoFrustumCulling, VisibilitySystems, add_visibility_class}, - }, - }, }; use bevy_interleave::prelude::*; use crate::gaussian::interface::CommonCloud; +#[derive(Component, Clone, Debug)] +pub struct GaussianCloudAabb(pub Aabb3d); + +impl From for GaussianCloudAabb { + fn from(aabb: Aabb3d) -> Self { + GaussianCloudAabb(aabb) + } +} + +impl std::ops::Deref for GaussianCloudAabb { + type Target = Aabb3d; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + #[derive(Default)] pub struct CloudPlugin { _phantom: std::marker::PhantomData, @@ -47,14 +59,14 @@ where pub fn calculate_bounds( mut commands: Commands, gaussian_clouds: Res>, - without_aabb: Query<(Entity, &R::PlanarTypeHandle), (Without, Without)>, + without_aabb: Query<(Entity, &R::PlanarTypeHandle), (Without, Without)>, ) where R::PlanarType: CommonCloud, { for (entity, cloud_handle) in &without_aabb { if let Some(cloud) = gaussian_clouds.get(cloud_handle.handle()) { if let Some(aabb) = cloud.compute_aabb() { - commands.entity(entity).try_insert(aabb); + commands.entity(entity).try_insert(GaussianCloudAabb(aabb)); } } } diff --git a/src/gaussian/interface.rs b/src/gaussian/interface.rs index d04a7f3b..03b1b982 100644 --- a/src/gaussian/interface.rs +++ b/src/gaussian/interface.rs @@ -1,4 +1,4 @@ -use bevy::{prelude::*, render::primitives::Aabb}; +use bevy::{prelude::*, math::bounding::Aabb3d}; use bevy_interleave::prelude::Planar; #[cfg(feature = "sort_rayon")] @@ -19,7 +19,7 @@ where self.len_sqrt_ceil().pow(2) } - fn compute_aabb(&self) -> Option { + fn compute_aabb(&self) -> Option { if self.is_empty() { return None; } @@ -56,7 +56,7 @@ where } } - Aabb::from_min_max(min, max).into() + Some(Aabb3d { min: min.into(), max: max.into() }) } fn visibility(&self, index: usize) -> f32; diff --git a/src/material/classification.rs b/src/material/classification.rs index 215611b1..a48e5642 100644 --- a/src/material/classification.rs +++ b/src/material/classification.rs @@ -1,10 +1,10 @@ use bevy::{ - asset::{load_internal_asset, weak_handle}, + asset::{load_internal_asset, uuid_handle}, prelude::*, }; const CLASSIFICATION_SHADER_HANDLE: Handle = - weak_handle!("8b453dba-5095-47f2-9c60-ae369fe51579"); + uuid_handle!("8b453dba-5095-47f2-9c60-ae369fe51579"); pub struct ClassificationMaterialPlugin; diff --git a/src/material/depth.rs b/src/material/depth.rs index 0fdf87f4..9e4b4cb0 100644 --- a/src/material/depth.rs +++ b/src/material/depth.rs @@ -1,9 +1,9 @@ use bevy::{ - asset::{load_internal_asset, weak_handle}, + asset::{load_internal_asset, uuid_handle}, prelude::*, }; -const DEPTH_SHADER_HANDLE: Handle = weak_handle!("72e596c7-6226-4366-af26-2acceb34c8a4"); +const DEPTH_SHADER_HANDLE: Handle = uuid_handle!("72e596c7-6226-4366-af26-2acceb34c8a4"); pub struct DepthMaterialPlugin; diff --git a/src/material/optical_flow.rs b/src/material/optical_flow.rs index 51d4401c..3a2bdda3 100644 --- a/src/material/optical_flow.rs +++ b/src/material/optical_flow.rs @@ -1,10 +1,10 @@ use bevy::{ - asset::{load_internal_asset, weak_handle}, + asset::{load_internal_asset, uuid_handle}, prelude::*, }; const OPTICAL_FLOW_SHADER_HANDLE: Handle = - weak_handle!("e25fefbf-dd95-46f2-89bb-91175f6bb4a6"); + uuid_handle!("e25fefbf-dd95-46f2-89bb-91175f6bb4a6"); pub struct OpticalFlowMaterialPlugin; diff --git a/src/material/position.rs b/src/material/position.rs index 2036af47..10969598 100644 --- a/src/material/position.rs +++ b/src/material/position.rs @@ -1,9 +1,9 @@ use bevy::{ - asset::{load_internal_asset, weak_handle}, + asset::{load_internal_asset, uuid_handle}, prelude::*, }; -const POSITION_SHADER_HANDLE: Handle = weak_handle!("91ad4ad8-5e95-4f30-a262-7d3de4abd5a8"); +const POSITION_SHADER_HANDLE: Handle = uuid_handle!("91ad4ad8-5e95-4f30-a262-7d3de4abd5a8"); pub struct PositionMaterialPlugin; diff --git a/src/material/spherical_harmonics.rs b/src/material/spherical_harmonics.rs index fe5ad034..2de67428 100644 --- a/src/material/spherical_harmonics.rs +++ b/src/material/spherical_harmonics.rs @@ -2,7 +2,7 @@ use std::marker::Copy; use bevy::{ - asset::{load_internal_asset, weak_handle}, + asset::{load_internal_asset, uuid_handle}, prelude::*, render::render_resource::ShaderType, }; @@ -15,7 +15,7 @@ use serde::{Deserialize, Serialize, Serializer, ser::SerializeTuple}; use crate::math::pad_4; const SPHERICAL_HARMONICS_SHADER_HANDLE: Handle = - weak_handle!("879b9cd3-ba20-4030-a8f3-adda0a042ffe"); + uuid_handle!("879b9cd3-ba20-4030-a8f3-adda0a042ffe"); pub struct SphericalHarmonicCoefficientsPlugin; diff --git a/src/material/spherindrical_harmonics.rs b/src/material/spherindrical_harmonics.rs index 0ef5b375..0cdc79ee 100644 --- a/src/material/spherindrical_harmonics.rs +++ b/src/material/spherindrical_harmonics.rs @@ -2,7 +2,7 @@ use std::marker::Copy; use bevy::{ - asset::{load_internal_asset, weak_handle}, + asset::{load_internal_asset, uuid_handle}, prelude::*, render::render_resource::ShaderType, }; @@ -37,7 +37,7 @@ static_assertions::const_assert_eq!(WASTE, 0); pub const SH_4D_VEC4_PLANES: usize = SH_4D_COEFF_COUNT / 4; const SPHERINDRICAL_HARMONICS_SHADER_HANDLE: Handle = - weak_handle!("0b379c3c-daa3-48c5-bf4b-0262b9941a0a"); + uuid_handle!("0b379c3c-daa3-48c5-bf4b-0262b9941a0a"); pub struct SpherindricalHarmonicCoefficientsPlugin; impl Plugin for SpherindricalHarmonicCoefficientsPlugin { diff --git a/src/morph/interpolate.rs b/src/morph/interpolate.rs index 2812cb63..1ff1b37b 100644 --- a/src/morph/interpolate.rs +++ b/src/morph/interpolate.rs @@ -1,17 +1,17 @@ use std::{any::TypeId, marker::PhantomData}; use bevy::{ - asset::{Assets, LoadState, load_internal_asset, weak_handle}, + asset::{Assets, LoadState, load_internal_asset, uuid_handle}, core_pipeline::{ core_3d::graph::{Core3d, Node3d}, prepass::PreviousViewUniformOffset, }, prelude::*, render::{ - Extract, ExtractSchedule, Render, RenderApp, RenderSet, + Extract, ExtractSchedule, Render, RenderApp, RenderSystems, extract_component::DynamicUniformIndex, render_asset::RenderAssets, - render_graph::{Node, NodeRunError, RenderGraphApp, RenderGraphContext, RenderLabel}, + render_graph::{Node, NodeRunError, RenderGraphContext, RenderLabel, RenderGraphExt}, render_resource::{ BindGroup, BindGroupLayout, CachedComputePipelineId, CachedPipelineState, ComputePassDescriptor, ComputePipelineDescriptor, PipelineCache, @@ -33,7 +33,7 @@ use crate::{ }; const INTERPOLATE_SHADER_HANDLE: Handle = - weak_handle!("b0b03f7e-9ec2-4e7d-bc96-3ddc1a8c5942"); + uuid_handle!("b0b03f7e-9ec2-4e7d-bc96-3ddc1a8c5942"); const WORKGROUP_SIZE: u32 = 256; #[derive(Debug, Hash, PartialEq, Eq, Clone, RenderLabel)] @@ -75,7 +75,7 @@ where .add_systems(ExtractSchedule, extract_gaussian_interpolate::) .add_systems( Render, - (queue_gaussian_interpolate_bind_groups::.in_set(RenderSet::Queue),), + (queue_gaussian_interpolate_bind_groups::.in_set(RenderSystems::Queue),), ); } @@ -192,7 +192,7 @@ where push_constant_ranges: vec![], shader: INTERPOLATE_SHADER_HANDLE, shader_defs, - entry_point: "interpolate_gaussians".into(), + entry_point: Some("interpolate_gaussians".into()), zero_initialize_workgroup_memory: true, }); diff --git a/src/morph/particle.rs b/src/morph/particle.rs index aa693730..860acec8 100644 --- a/src/morph/particle.rs +++ b/src/morph/particle.rs @@ -3,12 +3,12 @@ use std::marker::Copy; #[allow(unused_imports)] use bevy::{ - asset::{LoadState, load_internal_asset, weak_handle}, + asset::{LoadState, load_internal_asset, uuid_handle}, core_pipeline::core_3d::graph::{Core3d, Node3d}, ecs::system::{SystemParamItem, lifetimeless::SRes}, prelude::*, render::{ - Extract, Render, RenderApp, RenderSet, + Extract, Render, RenderApp, RenderSystems, render_asset::{ PrepareAssetError, RenderAsset, RenderAssetPlugin, RenderAssetUsages, RenderAssets, }, @@ -36,7 +36,7 @@ use crate::{ }, }; -const PARTICLE_SHADER_HANDLE: Handle = weak_handle!("00000000-0000-0000-0000-00369c79ab8f"); +const PARTICLE_SHADER_HANDLE: Handle = uuid_handle!("00000000-0000-0000-0000-00369c79ab8f"); #[derive(Debug, Hash, PartialEq, Eq, Clone, RenderLabel)] pub struct MorphLabel; @@ -60,7 +60,7 @@ impl Plugin for ParticleBehaviorPlugin { // TODO: avoid duplicating the extract system render_app.add_systems( Render, - (queue_particle_behavior_bind_group::.in_set(RenderSet::Queue),), + (queue_particle_behavior_bind_group::.in_set(RenderSystems::Queue),), ); } @@ -190,7 +190,7 @@ impl FromWorld for ParticleBehaviorPipeline { push_constant_ranges: vec![], shader: PARTICLE_SHADER_HANDLE, shader_defs: shader_defs.clone(), - entry_point: "apply_particle_behaviors".into(), + entry_point: Some("apply_particle_behaviors".into()), zero_initialize_workgroup_memory: true, }); diff --git a/src/query/select.rs b/src/query/select.rs index b52c848b..8e95f165 100644 --- a/src/query/select.rs +++ b/src/query/select.rs @@ -45,8 +45,8 @@ impl Plugin for SelectPlugin { fn build(&self, app: &mut App) { app.register_type::