diff --git a/Cargo.lock b/Cargo.lock index b01c5cc4..e8275f25 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -24,13 +24,30 @@ version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6cf780eb737f2d4a49ffbd512324d53ad089070f813f7be7f99dbd5123a7f448" +[[package]] +name = "accesskit" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3d3b8f9bae46a948369bc4a03e815d4ed6d616bd00de4051133a5019dc31c5a" + [[package]] name = "accesskit_consumer" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3bdfa1638ddd6eb9c752def95568df8b3ad832df252e9156d2eb783b201ca8a9" dependencies = [ - "accesskit", + "accesskit 0.14.0", + "immutable-chunkmap", +] + +[[package]] +name = "accesskit_consumer" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f47983a1084940ba9a39c077a8c63e55c619388be5476ac04c804cfbd1e63459" +dependencies = [ + "accesskit 0.17.1", + "hashbrown 0.15.2", "immutable-chunkmap", ] @@ -40,36 +57,78 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c236a84ff1111defc280cee755eaa953d0b24398786851b9d28322c6d3bb1ebd" dependencies = [ - "accesskit", - "accesskit_consumer", + "accesskit 0.14.0", + "accesskit_consumer 0.22.0", "objc2", "objc2-app-kit", "objc2-foundation", "once_cell", ] +[[package]] +name = "accesskit_macos" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7329821f3bd1101e03a7d2e03bd339e3ac0dc64c70b4c9f9ae1949e3ba8dece1" +dependencies = [ + "accesskit 0.17.1", + "accesskit_consumer 0.26.0", + "hashbrown 0.15.2", + "objc2", + "objc2-app-kit", + "objc2-foundation", +] + [[package]] name = "accesskit_windows" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d7f43d24b16b3e76bef248124fbfd2493c3a9860edb5aae1010c890e826de5e" dependencies = [ - "accesskit", - "accesskit_consumer", + "accesskit 0.14.0", + "accesskit_consumer 0.22.0", "paste", "static_assertions", "windows 0.54.0", ] +[[package]] +name = "accesskit_windows" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24fcd5d23d70670992b823e735e859374d694a3d12bfd8dd32bd3bd8bedb5d81" +dependencies = [ + "accesskit 0.17.1", + "accesskit_consumer 0.26.0", + "hashbrown 0.15.2", + "paste", + "static_assertions", + "windows 0.58.0", + "windows-core 0.58.0", +] + [[package]] name = "accesskit_winit" version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "755535e6bf711a42dac28b888b884b10fc00ff4010d9d3bd871c5f5beae5aa78" dependencies = [ - "accesskit", - "accesskit_macos", - "accesskit_windows", + "accesskit 0.14.0", + "accesskit_macos 0.15.0", + "accesskit_windows 0.20.0", + "raw-window-handle", + "winit", +] + +[[package]] +name = "accesskit_winit" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6a48dad5530b6deb9fc7a52cc6c3bf72cdd9eb8157ac9d32d69f2427a5e879" +dependencies = [ + "accesskit 0.17.1", + "accesskit_macos 0.18.1", + "accesskit_windows 0.24.1", "raw-window-handle", "winit", ] @@ -98,6 +157,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", + "const-random", "getrandom", "once_cell", "version_check", @@ -270,6 +330,26 @@ dependencies = [ "libloading 0.7.4", ] +[[package]] +name = "ash" +version = "0.38.0+1.3.281" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" +dependencies = [ + "libloading 0.8.6", +] + +[[package]] +name = "assert_type_match" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f548ad2c4031f2902e3edc1f29c29e835829437de49562d8eb5dc5584d3a1043" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "async-broadcast" version = "0.5.1" @@ -339,6 +419,12 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +[[package]] +name = "atomicow" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "467163b50876d3a4a44da5f4dbd417537e522fc059ede8d518d57941cfb3d745" + [[package]] name = "autocfg" version = "1.4.0" @@ -357,47 +443,57 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "043c9ad4b6fc4ca52d779873a8ca792a4e37842d07fce95363c9e17e36a1d8a0" dependencies = [ - "bevy_internal", + "bevy_internal 0.14.2", +] + +[[package]] +name = "bevy" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6a01cd51a5cd310e4e7aa6e1560b1aabf29efc6a095a01e6daa8bf0a19f1fea" +dependencies = [ + "bevy_internal 0.15.0", ] [[package]] name = "bevy-inspector-egui" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cac12a22e5de801323bc5bc344949de086b9b8db02c34e109f128ffd41514e5d" +checksum = "dd64580f4496ed987c6231c6a7d833068914331a9084bf5a3dd9dcbc66fd8a73" dependencies = [ "bevy-inspector-egui-derive", - "bevy_app", - "bevy_asset", - "bevy_color", - "bevy_core", - "bevy_core_pipeline", - "bevy_ecs", + "bevy_app 0.15.0", + "bevy_asset 0.15.0", + "bevy_color 0.15.1", + "bevy_core 0.15.0", + "bevy_core_pipeline 0.15.0", + "bevy_ecs 0.15.0", "bevy_egui", - "bevy_hierarchy", - "bevy_log", - "bevy_math", - "bevy_pbr", - "bevy_reflect", - "bevy_render", + "bevy_hierarchy 0.15.0", + "bevy_image", + "bevy_log 0.15.0", + "bevy_math 0.15.0", + "bevy_pbr 0.15.0", + "bevy_reflect 0.15.0", + "bevy_render 0.15.0", "bevy_state", - "bevy_time", - "bevy_utils", - "bevy_window", + "bevy_time 0.15.0", + "bevy_utils 0.15.0", + "bevy_window 0.15.0", "bytemuck", + "disqualified", "egui", "fuzzy-matcher", "image", - "pretty-type-name", "smallvec", "winit", ] [[package]] name = "bevy-inspector-egui-derive" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89f3be3ba88a25445c0c10684709b1ccd07e37f5f6b5d1b8dcf11d34548f1d61" +checksum = "3afc67826e0a4347414545e022e748f42550a577a502b26af44e6d03742c9266" dependencies = [ "proc-macro2", "quote", @@ -410,10 +506,23 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae1a976cb539d6a5a3ff579cdb78187a6bcfbffa7e8224ea28f23d8b983d9389" dependencies = [ - "accesskit", - "bevy_app", - "bevy_derive", - "bevy_ecs", + "accesskit 0.14.0", + "bevy_app 0.14.2", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", +] + +[[package]] +name = "bevy_a11y" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82c66b5bc82a2660a5663d85b3354ddb72c8ab2c443989333cbea146f39a4e9a" +dependencies = [ + "accesskit 0.17.1", + "bevy_app 0.15.0", + "bevy_derive 0.15.0", + "bevy_ecs 0.15.0", + "bevy_reflect 0.15.0", ] [[package]] @@ -422,11 +531,11 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5361d0f8a8677a5d0102cfe7321a7ecd2a8b9a4f887ce0dde1059311cf9cd42" dependencies = [ - "bevy_derive", - "bevy_ecs", - "bevy_reflect", - "bevy_tasks", - "bevy_utils", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", + "bevy_reflect 0.14.2", + "bevy_tasks 0.14.2", + "bevy_utils 0.14.2", "console_error_panic_hook", "downcast-rs", "thiserror", @@ -434,13 +543,32 @@ dependencies = [ "web-sys", ] +[[package]] +name = "bevy_app" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "652574e4c10efcfa70f98036709dd5b67e5cb8d46c58087ef48c2ac6b62df9da" +dependencies = [ + "bevy_derive 0.15.0", + "bevy_ecs 0.15.0", + "bevy_reflect 0.15.0", + "bevy_tasks 0.15.0", + "bevy_utils 0.15.0", + "console_error_panic_hook", + "ctrlc", + "derive_more", + "downcast-rs", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "bevy_args" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aff51d619100427982d8c84db56f1d7b3faa863178b287c6938db1308ed1b02" +checksum = "757c6028597b67a7af5a8b55cb62f167d10bd44926faf499e155e550567ab385" dependencies = [ - "bevy", + "bevy 0.15.0", "clap", "console_error_panic_hook", "serde", @@ -458,13 +586,13 @@ dependencies = [ "async-broadcast", "async-fs", "async-lock", - "bevy_app", - "bevy_asset_macros", - "bevy_ecs", - "bevy_reflect", - "bevy_tasks", - "bevy_utils", - "bevy_winit", + "bevy_app 0.14.2", + "bevy_asset_macros 0.14.2", + "bevy_ecs 0.14.2", + "bevy_reflect 0.14.2", + "bevy_tasks 0.14.2", + "bevy_utils 0.14.2", + "bevy_winit 0.14.2", "blake3", "crossbeam-channel", "downcast-rs", @@ -481,13 +609,62 @@ dependencies = [ "web-sys", ] +[[package]] +name = "bevy_asset" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d7d501eda01be6d500d843a06d9b9800c3f0fffaae3c29d17d9e4e172c28d37" +dependencies = [ + "async-broadcast", + "async-fs", + "async-lock", + "atomicow", + "bevy_app 0.15.0", + "bevy_asset_macros 0.15.0", + "bevy_ecs 0.15.0", + "bevy_reflect 0.15.0", + "bevy_tasks 0.15.0", + "bevy_utils 0.15.0", + "bevy_window 0.15.0", + "bitflags 2.6.0", + "blake3", + "crossbeam-channel", + "derive_more", + "disqualified", + "downcast-rs", + "either", + "futures-io", + "futures-lite", + "js-sys", + "parking_lot", + "ron", + "serde", + "stackfuture", + "uuid", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "bevy_asset_macros" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9eb05ce838d282f09d83380b4d6432aec7519d421dee8c75cc20e6148237e6e" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.14.2", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "bevy_asset_macros" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7474b77fc27db11ec03d49ca04f1a7471f369dc373fd5e091a12ad7ab533d8c8" +dependencies = [ + "bevy_macro_utils 0.15.0", "proc-macro2", "quote", "syn 2.0.90", @@ -499,13 +676,28 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04842e9d38a93f0c75ab46f7f404ea24ef57ad83dbd159e5b4b35318b02257bb" dependencies = [ - "bevy_math", - "bevy_reflect", + "bevy_math 0.14.2", + "bevy_reflect 0.14.2", "bytemuck", - "encase", + "encase 0.8.0", "serde", "thiserror", - "wgpu-types", + "wgpu-types 0.20.0", +] + +[[package]] +name = "bevy_color" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87bccacba27db37375eb97ffc86e91a7d95db3f5faa6a834fa7306db02cde327" +dependencies = [ + "bevy_math 0.15.0", + "bevy_reflect 0.15.0", + "bytemuck", + "derive_more", + "encase 0.10.0", + "serde", + "wgpu-types 23.0.0", ] [[package]] @@ -514,11 +706,25 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de706862871a1fe99ea619bff2f99d73e43ad82f19ef866a9e19a14c957c8537" dependencies = [ - "bevy_app", - "bevy_ecs", - "bevy_reflect", - "bevy_tasks", - "bevy_utils", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", + "bevy_reflect 0.14.2", + "bevy_tasks 0.14.2", + "bevy_utils 0.14.2", + "uuid", +] + +[[package]] +name = "bevy_core" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecccf7be33330f58d4c7033b212a25c414d388e3a8d55b61331346da5dbabf22" +dependencies = [ + "bevy_app 0.15.0", + "bevy_ecs 0.15.0", + "bevy_reflect 0.15.0", + "bevy_tasks 0.15.0", + "bevy_utils 0.15.0", "uuid", ] @@ -528,17 +734,17 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f6e1e122ada4cd811442e083fb5ad3e325c59a87271d5ef57193f1c2cad7f8c" dependencies = [ - "bevy_app", - "bevy_asset", - "bevy_color", - "bevy_core", - "bevy_derive", - "bevy_ecs", - "bevy_math", - "bevy_reflect", - "bevy_render", - "bevy_transform", - "bevy_utils", + "bevy_app 0.14.2", + "bevy_asset 0.14.2", + "bevy_color 0.14.3", + "bevy_core 0.14.2", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", + "bevy_math 0.14.2", + "bevy_reflect 0.14.2", + "bevy_render 0.14.2", + "bevy_transform 0.14.2", + "bevy_utils 0.14.2", "bitflags 2.6.0", "nonmax", "radsort", @@ -547,13 +753,51 @@ dependencies = [ "thiserror", ] +[[package]] +name = "bevy_core_pipeline" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a3fb9f84fa60c2006d4a15e039c3d08d4d10599441b9175907341a77a69d627" +dependencies = [ + "bevy_app 0.15.0", + "bevy_asset 0.15.0", + "bevy_color 0.15.1", + "bevy_core 0.15.0", + "bevy_derive 0.15.0", + "bevy_ecs 0.15.0", + "bevy_image", + "bevy_math 0.15.0", + "bevy_reflect 0.15.0", + "bevy_render 0.15.0", + "bevy_transform 0.15.0", + "bevy_utils 0.15.0", + "bevy_window 0.15.0", + "bitflags 2.6.0", + "derive_more", + "nonmax", + "radsort", + "serde", + "smallvec", +] + [[package]] name = "bevy_derive" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fbfc33a4c6b80760bb8bf850a2cc65a1e031da62fd3ca8b552189104dc98514" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.14.2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "bevy_derive" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e141b7eda52a23bb88740b37a291e26394524cb9ee3b034c7014669671fc2bb5" +dependencies = [ + "bevy_macro_utils 0.15.0", "quote", "syn 2.0.90", ] @@ -564,12 +808,27 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bebb154e0cc78e3bbfbfdb42fb502b14c1cd47e72f16e6d4228dfe6233ba6cbd" dependencies = [ - "bevy_app", - "bevy_core", - "bevy_ecs", - "bevy_tasks", - "bevy_time", - "bevy_utils", + "bevy_app 0.14.2", + "bevy_core 0.14.2", + "bevy_ecs 0.14.2", + "bevy_tasks 0.14.2", + "bevy_time 0.14.2", + "bevy_utils 0.14.2", + "const-fnv1a-hash", +] + +[[package]] +name = "bevy_diagnostic" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa97748337405089edfb2857f7608f21bcc648a7ad272c9209808aad252ed542" +dependencies = [ + "bevy_app 0.15.0", + "bevy_core 0.15.0", + "bevy_ecs 0.15.0", + "bevy_tasks 0.15.0", + "bevy_time 0.15.0", + "bevy_utils 0.15.0", "const-fnv1a-hash", ] @@ -579,12 +838,11 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ee4222406637f3c8e3991a99788cfcde76097bf997c311f1b6297364057483f" dependencies = [ - "arrayvec", - "bevy_ecs_macros", - "bevy_ptr", - "bevy_reflect", - "bevy_tasks", - "bevy_utils", + "bevy_ecs_macros 0.14.2", + "bevy_ptr 0.14.2", + "bevy_reflect 0.14.2", + "bevy_tasks 0.14.2", + "bevy_utils 0.14.2", "bitflags 2.6.0", "concurrent-queue", "fixedbitset 0.5.7", @@ -594,13 +852,48 @@ dependencies = [ "thiserror", ] +[[package]] +name = "bevy_ecs" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4c4b60d2a712c6d5cbe610bac7ecf0838fc56a095fd5b15f30230873e84f15" +dependencies = [ + "arrayvec", + "bevy_ecs_macros 0.15.0", + "bevy_ptr 0.15.0", + "bevy_reflect 0.15.0", + "bevy_tasks 0.15.0", + "bevy_utils 0.15.0", + "bitflags 2.6.0", + "concurrent-queue", + "derive_more", + "disqualified", + "fixedbitset 0.5.7", + "nonmax", + "petgraph", + "serde", + "smallvec", +] + [[package]] name = "bevy_ecs_macros" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36b573430b67aff7bde8292257494f39343401379bfbda64035ba4918bba7b20" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.14.2", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "bevy_ecs_macros" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4296b3254b8bd29769f6a4512731b2e6c4b163343ca18b72316927315b6096" +dependencies = [ + "bevy_macro_utils 0.15.0", "proc-macro2", "quote", "syn 2.0.90", @@ -608,28 +901,29 @@ dependencies = [ [[package]] name = "bevy_egui" -version = "0.30.1" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c451b97a7e934b2d31b39e1f68923c0a30894d23e39a2d2d90dbd50aa24d472e" +checksum = "954fbe8551af4b40767ea9390ec7d32fe1070a6ab55d524cf0868c17f8469a55" dependencies = [ "arboard", - "bevy_app", - "bevy_asset", - "bevy_derive", - "bevy_ecs", - "bevy_input", - "bevy_log", - "bevy_math", - "bevy_reflect", - "bevy_render", - "bevy_time", - "bevy_utils", - "bevy_window", - "bevy_winit", + "bevy_app 0.15.0", + "bevy_asset 0.15.0", + "bevy_derive 0.15.0", + "bevy_ecs 0.15.0", + "bevy_image", + "bevy_input 0.15.0", + "bevy_log 0.15.0", + "bevy_math 0.15.0", + "bevy_reflect 0.15.0", + "bevy_render 0.15.0", + "bevy_time 0.15.0", + "bevy_utils 0.15.0", + "bevy_window 0.15.0", + "bevy_winit 0.15.0", "bytemuck", "crossbeam-channel", "egui", - "encase", + "encase 0.10.0", "js-sys", "log", "thread_local", @@ -637,7 +931,7 @@ dependencies = [ "wasm-bindgen-futures", "web-sys", "webbrowser", - "wgpu-types", + "wgpu-types 23.0.0", "winit", ] @@ -647,8 +941,18 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d06c9693847a2a6ea61d6b86288dd4d8b6a79f05d4bf6e27b96d4f5c8d552fe4" dependencies = [ - "bevy_macro_utils", - "encase_derive_impl", + "bevy_macro_utils 0.14.2", + "encase_derive_impl 0.8.0", +] + +[[package]] +name = "bevy_encase_derive" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe562b883fb652acde84cb6bb01cbc9f23c377e411f1484467ecfdd3a3d234e" +dependencies = [ + "bevy_macro_utils 0.15.0", + "encase_derive_impl 0.10.0", ] [[package]] @@ -657,11 +961,11 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63aff74ac1477b88b57ff2f82fc711a7931414be7ee7d0e96aeea45b6d4a7cb6" dependencies = [ - "bevy_app", - "bevy_ecs", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", "bevy_eventlistener_derive", - "bevy_hierarchy", - "bevy_utils", + "bevy_hierarchy 0.14.2", + "bevy_utils 0.14.2", ] [[package]] @@ -677,9 +981,9 @@ dependencies = [ [[package]] name = "bevy_gaussian_splatting" -version = "2.7.6" +version = "3.0.0" dependencies = [ - "bevy", + "bevy 0.15.0", "bevy-inspector-egui", "bevy_args", "bevy_mod_picking", @@ -707,7 +1011,7 @@ dependencies = [ "typenum", "wasm-bindgen", "web-sys", - "wgpu", + "wgpu 23.0.1", ] [[package]] @@ -716,20 +1020,42 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfe32af0666d8d8a7fd6eb6b5e41eceefdc6f2e5441c74b812e8f0902a9d7f52" dependencies = [ - "bevy_app", - "bevy_asset", - "bevy_color", - "bevy_core_pipeline", - "bevy_ecs", - "bevy_gizmos_macros", - "bevy_math", - "bevy_pbr", - "bevy_reflect", - "bevy_render", - "bevy_sprite", - "bevy_time", - "bevy_transform", - "bevy_utils", + "bevy_app 0.14.2", + "bevy_asset 0.14.2", + "bevy_color 0.14.3", + "bevy_core_pipeline 0.14.2", + "bevy_ecs 0.14.2", + "bevy_gizmos_macros 0.14.2", + "bevy_math 0.14.2", + "bevy_pbr 0.14.2", + "bevy_reflect 0.14.2", + "bevy_render 0.14.2", + "bevy_time 0.14.2", + "bevy_transform 0.14.2", + "bevy_utils 0.14.2", + "bytemuck", +] + +[[package]] +name = "bevy_gizmos" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1c82341f6a3517efeeeef2fe68135ac3a91b11b6e369fc1a07f6e9a4b462b57" +dependencies = [ + "bevy_app 0.15.0", + "bevy_asset 0.15.0", + "bevy_color 0.15.1", + "bevy_core_pipeline 0.15.0", + "bevy_ecs 0.15.0", + "bevy_gizmos_macros 0.15.0", + "bevy_image", + "bevy_math 0.15.0", + "bevy_reflect 0.15.0", + "bevy_render 0.15.0", + "bevy_sprite 0.15.0", + "bevy_time 0.15.0", + "bevy_transform 0.15.0", + "bevy_utils 0.15.0", "bytemuck", ] @@ -739,7 +1065,19 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "906b052f8cf3f3983f0f6df625fb10cbd9b27d44e362a327dc1ed51300d362bc" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.14.2", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "bevy_gizmos_macros" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9454ac9f0a2141900ef9f3482af9333e490d5546bbea3cab63a777447d35beed" +dependencies = [ + "bevy_macro_utils 0.15.0", "proc-macro2", "quote", "syn 2.0.90", @@ -751,63 +1089,148 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a88b912b37e1bc4dbb2aa40723199f74c8b06c4fbb6da0bb4585131df28ef66e" dependencies = [ - "bevy_app", - "bevy_core", - "bevy_ecs", - "bevy_reflect", - "bevy_utils", + "bevy_app 0.14.2", + "bevy_core 0.14.2", + "bevy_ecs 0.14.2", + "bevy_reflect 0.14.2", + "bevy_utils 0.14.2", + "smallvec", +] + +[[package]] +name = "bevy_hierarchy" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe0b538beea7edbf30a6062242b99e67ff3bfa716566aacf91d5b5e027f02a2" +dependencies = [ + "bevy_app 0.15.0", + "bevy_core 0.15.0", + "bevy_ecs 0.15.0", + "bevy_reflect 0.15.0", + "bevy_utils 0.15.0", + "disqualified", "smallvec", ] +[[package]] +name = "bevy_image" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db46fa6a2f9e20435f3231710abbb136d2cc0a376f3f8e6ecfe071e286f5a246" +dependencies = [ + "bevy_asset 0.15.0", + "bevy_color 0.15.1", + "bevy_math 0.15.0", + "bevy_reflect 0.15.0", + "bevy_utils 0.15.0", + "bitflags 2.6.0", + "bytemuck", + "derive_more", + "futures-lite", + "image", + "serde", + "wgpu 23.0.1", +] + [[package]] name = "bevy_input" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8dd3a54e67cc3ba17971de7b1a7e64eda84493c1e7bb6bfa11c6cf8ac124377b" dependencies = [ - "bevy_app", - "bevy_ecs", - "bevy_math", - "bevy_reflect", - "bevy_utils", + "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", ] +[[package]] +name = "bevy_input" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46b4ea60095d1a1851e40cb12481ad3d5d234e14376d6b73142a85586c266b74" +dependencies = [ + "bevy_app 0.15.0", + "bevy_core 0.15.0", + "bevy_ecs 0.15.0", + "bevy_math 0.15.0", + "bevy_reflect 0.15.0", + "bevy_utils 0.15.0", + "derive_more", + "smol_str", +] + [[package]] name = "bevy_internal" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45d435cac77c568f3aef65f786a5fee0e53c81950c5258182dd2c1d6cd6c4fec" dependencies = [ - "bevy_a11y", - "bevy_app", - "bevy_asset", - "bevy_color", - "bevy_core", - "bevy_core_pipeline", - "bevy_derive", - "bevy_diagnostic", - "bevy_ecs", - "bevy_gizmos", - "bevy_hierarchy", - "bevy_input", - "bevy_log", - "bevy_math", - "bevy_pbr", - "bevy_ptr", - "bevy_reflect", - "bevy_render", - "bevy_scene", - "bevy_sprite", - "bevy_tasks", - "bevy_text", - "bevy_time", - "bevy_transform", - "bevy_ui", - "bevy_utils", - "bevy_window", - "bevy_winit", + "bevy_a11y 0.14.2", + "bevy_app 0.14.2", + "bevy_asset 0.14.2", + "bevy_color 0.14.3", + "bevy_core 0.14.2", + "bevy_core_pipeline 0.14.2", + "bevy_derive 0.14.2", + "bevy_diagnostic 0.14.2", + "bevy_ecs 0.14.2", + "bevy_gizmos 0.14.2", + "bevy_hierarchy 0.14.2", + "bevy_input 0.14.2", + "bevy_log 0.14.2", + "bevy_math 0.14.2", + "bevy_pbr 0.14.2", + "bevy_ptr 0.14.2", + "bevy_reflect 0.14.2", + "bevy_render 0.14.2", + "bevy_scene 0.14.2", + "bevy_tasks 0.14.2", + "bevy_time 0.14.2", + "bevy_transform 0.14.2", + "bevy_utils 0.14.2", + "bevy_window 0.14.2", +] + +[[package]] +name = "bevy_internal" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4237e6e9b03902321032f00f931f18a4a211093bd9a7cf81276a0228a2a4417" +dependencies = [ + "bevy_a11y 0.15.0", + "bevy_app 0.15.0", + "bevy_asset 0.15.0", + "bevy_color 0.15.1", + "bevy_core 0.15.0", + "bevy_core_pipeline 0.15.0", + "bevy_derive 0.15.0", + "bevy_diagnostic 0.15.0", + "bevy_ecs 0.15.0", + "bevy_gizmos 0.15.0", + "bevy_hierarchy 0.15.0", + "bevy_image", + "bevy_input 0.15.0", + "bevy_log 0.15.0", + "bevy_math 0.15.0", + "bevy_pbr 0.15.0", + "bevy_picking", + "bevy_ptr 0.15.0", + "bevy_reflect 0.15.0", + "bevy_render 0.15.0", + "bevy_scene 0.15.0", + "bevy_sprite 0.15.0", + "bevy_tasks 0.15.0", + "bevy_text 0.15.0", + "bevy_time 0.15.0", + "bevy_transform 0.15.0", + "bevy_ui 0.15.0", + "bevy_utils 0.15.0", + "bevy_window 0.15.0", + "bevy_winit 0.15.0", ] [[package]] @@ -817,21 +1240,49 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67240c7596c8f0653e50fce35a60196516817449235193246599facba9002e02" dependencies = [ "android_log-sys", - "bevy_app", - "bevy_ecs", - "bevy_utils", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", + "bevy_utils 0.14.2", "tracing-log", "tracing-subscriber", "tracing-wasm", ] [[package]] -name = "bevy_macro_utils" -version = "0.14.2" +name = "bevy_log" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfc65e570012e64a21f3546df68591aaede8349e6174fb500071677f54f06630" +checksum = "1a0bdb42b00ac3752f0d6f531fbda8abf313603157a7b3163da8529412119a0a" dependencies = [ - "proc-macro2", + "android_log-sys", + "bevy_app 0.15.0", + "bevy_ecs 0.15.0", + "bevy_utils 0.15.0", + "tracing-log", + "tracing-oslog", + "tracing-subscriber", + "tracing-wasm", +] + +[[package]] +name = "bevy_macro_utils" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfc65e570012e64a21f3546df68591aaede8349e6174fb500071677f54f06630" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "toml_edit 0.22.22", +] + +[[package]] +name = "bevy_macro_utils" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3954dbb56a66a6c09c783e767f6ceca0dc0492c22e536e2aeaefb5545eac33c6" +dependencies = [ + "proc-macro2", "quote", "syn 2.0.90", "toml_edit 0.22.22", @@ -843,21 +1294,69 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5421792749dda753ab3718e77d27bfce38443daf1850b836b97530b6245a4581" dependencies = [ - "bevy_reflect", - "glam", + "bevy_reflect 0.14.2", + "glam 0.27.0", "rand", "serde", "smallvec", "thiserror", ] +[[package]] +name = "bevy_math" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae26f952598e293acac783d947b21af1809673cbeba25d76b969a56f287160b" +dependencies = [ + "bevy_reflect 0.15.0", + "derive_more", + "glam 0.29.2", + "itertools 0.13.0", + "rand", + "rand_distr", + "serde", + "smallvec", +] + +[[package]] +name = "bevy_mesh" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c324d45ca0043a4696d7324b569de65be17066ed3a97dd42205bc28693d20b5" +dependencies = [ + "bevy_asset 0.15.0", + "bevy_derive 0.15.0", + "bevy_ecs 0.15.0", + "bevy_image", + "bevy_math 0.15.0", + "bevy_mikktspace 0.15.0", + "bevy_reflect 0.15.0", + "bevy_transform 0.15.0", + "bevy_utils 0.15.0", + "bitflags 2.6.0", + "bytemuck", + "derive_more", + "hexasphere 15.0.0", + "serde", + "wgpu 23.0.1", +] + [[package]] name = "bevy_mikktspace" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66cf695a264b043f2c4edb92dd5c742e6892180d2b30dac870012d153f8557ea" dependencies = [ - "glam", + "glam 0.27.0", +] + +[[package]] +name = "bevy_mikktspace" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da5ea3ad25d74ea36ea45418ad799f135d046db35c322b9704c4a8934eb65ce9" +dependencies = [ + "glam 0.29.2", ] [[package]] @@ -866,13 +1365,13 @@ version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e290b8ad3e72dc621da7a9c21129da10540d78290ef8857353190e0213cac692" dependencies = [ - "bevy_app", - "bevy_color", - "bevy_core", - "bevy_core_pipeline", - "bevy_ecs", + "bevy_app 0.14.2", + "bevy_color 0.14.3", + "bevy_core 0.14.2", + "bevy_core_pipeline 0.14.2", + "bevy_ecs 0.14.2", "bevy_eventlistener", - "bevy_math", + "bevy_math 0.14.2", "bevy_picking_core", "bevy_picking_highlight", "bevy_picking_input", @@ -880,12 +1379,12 @@ dependencies = [ "bevy_picking_selection", "bevy_picking_sprite", "bevy_picking_ui", - "bevy_reflect", - "bevy_render", - "bevy_text", - "bevy_ui", - "bevy_utils", - "bevy_window", + "bevy_reflect 0.14.2", + "bevy_render 0.14.2", + "bevy_text 0.14.2", + "bevy_ui 0.14.2", + "bevy_utils 0.14.2", + "bevy_window 0.14.2", ] [[package]] @@ -894,27 +1393,27 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9e4ff45885c4716771a9f55977d8ce69596502a5241da55bf608d7cd71a9cb3" dependencies = [ - "bevy_app", - "bevy_asset", - "bevy_color", - "bevy_derive", - "bevy_ecs", - "bevy_math", - "bevy_reflect", - "bevy_render", - "bevy_transform", - "bevy_utils", - "bevy_window", + "bevy_app 0.14.2", + "bevy_asset 0.14.2", + "bevy_color 0.14.3", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", + "bevy_math 0.14.2", + "bevy_reflect 0.14.2", + "bevy_render 0.14.2", + "bevy_transform 0.14.2", + "bevy_utils 0.14.2", + "bevy_window 0.14.2", "crossbeam-channel", ] [[package]] name = "bevy_panorbit_camera" -version = "0.19.5" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dacb1375f393411c20584a5ede4eac42b1ea1185ec9d2d93e969c2c6b971daa6" +checksum = "e025ec14a381fa89ec0ffcb99ae44ebbdd3b2ee4369e13165a70187b96c8c52e" dependencies = [ - "bevy", + "bevy 0.15.0", "bevy_egui", ] @@ -924,18 +1423,18 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dccaa3c945f19834dcf7cd8eb358236dbf0fc4000dacbc7710564e7856714db" dependencies = [ - "bevy_app", - "bevy_asset", - "bevy_color", - "bevy_core_pipeline", - "bevy_derive", - "bevy_ecs", - "bevy_math", - "bevy_reflect", - "bevy_render", - "bevy_transform", - "bevy_utils", - "bevy_window", + "bevy_app 0.14.2", + "bevy_asset 0.14.2", + "bevy_color 0.14.3", + "bevy_core_pipeline 0.14.2", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", + "bevy_math 0.14.2", + "bevy_reflect 0.14.2", + "bevy_render 0.14.2", + "bevy_transform 0.14.2", + "bevy_utils 0.14.2", + "bevy_window 0.14.2", "bitflags 2.6.0", "bytemuck", "fixedbitset 0.5.7", @@ -945,22 +1444,73 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "bevy_pbr" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01b3bd8e646ddd3f27743b712957d2990d7361eb21044accc47c4f66711bf2cb" +dependencies = [ + "bevy_app 0.15.0", + "bevy_asset 0.15.0", + "bevy_color 0.15.1", + "bevy_core_pipeline 0.15.0", + "bevy_derive 0.15.0", + "bevy_ecs 0.15.0", + "bevy_image", + "bevy_math 0.15.0", + "bevy_reflect 0.15.0", + "bevy_render 0.15.0", + "bevy_transform 0.15.0", + "bevy_utils 0.15.0", + "bevy_window 0.15.0", + "bitflags 2.6.0", + "bytemuck", + "derive_more", + "fixedbitset 0.5.7", + "nonmax", + "radsort", + "smallvec", + "static_assertions", +] + +[[package]] +name = "bevy_picking" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a137ed706574dc4a01cac527eb2c44a0b0e477d5bce3afc892a9ee95ee0078" +dependencies = [ + "bevy_app 0.15.0", + "bevy_asset 0.15.0", + "bevy_derive 0.15.0", + "bevy_ecs 0.15.0", + "bevy_hierarchy 0.15.0", + "bevy_input 0.15.0", + "bevy_math 0.15.0", + "bevy_reflect 0.15.0", + "bevy_render 0.15.0", + "bevy_time 0.15.0", + "bevy_transform 0.15.0", + "bevy_utils 0.15.0", + "bevy_window 0.15.0", + "uuid", +] + [[package]] name = "bevy_picking_core" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "020b6cf6079927a1e6a3dd883986546632d8d09ab77840997f4936a74eade722" dependencies = [ - "bevy_app", - "bevy_derive", - "bevy_ecs", + "bevy_app 0.14.2", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", "bevy_eventlistener", - "bevy_math", - "bevy_reflect", - "bevy_render", - "bevy_transform", - "bevy_utils", - "bevy_window", + "bevy_math 0.14.2", + "bevy_reflect 0.14.2", + "bevy_render 0.14.2", + "bevy_transform 0.14.2", + "bevy_utils 0.14.2", + "bevy_window 0.14.2", "uuid", ] @@ -970,16 +1520,16 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ba45161608da1bb58cbc55fd83cf5e529e616a180778c394733c85056cd2b76" dependencies = [ - "bevy_app", - "bevy_asset", - "bevy_color", - "bevy_ecs", - "bevy_pbr", + "bevy_app 0.14.2", + "bevy_asset 0.14.2", + "bevy_color 0.14.3", + "bevy_ecs 0.14.2", + "bevy_pbr 0.14.2", "bevy_picking_core", "bevy_picking_selection", - "bevy_reflect", - "bevy_render", - "bevy_sprite", + "bevy_reflect 0.14.2", + "bevy_render 0.14.2", + "bevy_sprite 0.14.2", ] [[package]] @@ -988,17 +1538,17 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ba8cf67c68a5e150c066366744f9a44006ead9ad280de1c9ca69a6a13c5e283" dependencies = [ - "bevy_app", - "bevy_ecs", - "bevy_hierarchy", - "bevy_input", - "bevy_math", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", + "bevy_hierarchy 0.14.2", + "bevy_input 0.14.2", + "bevy_math 0.14.2", "bevy_picking_core", "bevy_picking_selection", - "bevy_reflect", - "bevy_render", - "bevy_utils", - "bevy_window", + "bevy_reflect 0.14.2", + "bevy_render 0.14.2", + "bevy_utils 0.14.2", + "bevy_window 0.14.2", ] [[package]] @@ -1007,14 +1557,14 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b024e7b0a6062aafd5daa746e5298a1b726c6409de11e35e0b574b712ebda3d" dependencies = [ - "bevy_app", - "bevy_ecs", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", "bevy_mod_raycast", "bevy_picking_core", - "bevy_reflect", - "bevy_render", - "bevy_transform", - "bevy_window", + "bevy_reflect 0.14.2", + "bevy_render 0.14.2", + "bevy_transform 0.14.2", + "bevy_window 0.14.2", ] [[package]] @@ -1023,13 +1573,13 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf0769d84e944fbc09b0475f068e5232a8a4be15339796539aecd747413ededd" dependencies = [ - "bevy_app", - "bevy_ecs", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", "bevy_eventlistener", - "bevy_input", + "bevy_input 0.14.2", "bevy_picking_core", - "bevy_reflect", - "bevy_utils", + "bevy_reflect 0.14.2", + "bevy_utils 0.14.2", ] [[package]] @@ -1038,15 +1588,15 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fcbde61e315f78b027f4b03f42339307b1f5ffef4f514e39007e9fb2be8aea5" dependencies = [ - "bevy_app", - "bevy_asset", - "bevy_ecs", - "bevy_math", + "bevy_app 0.14.2", + "bevy_asset 0.14.2", + "bevy_ecs 0.14.2", + "bevy_math 0.14.2", "bevy_picking_core", - "bevy_render", - "bevy_sprite", - "bevy_transform", - "bevy_window", + "bevy_render 0.14.2", + "bevy_sprite 0.14.2", + "bevy_transform 0.14.2", + "bevy_window 0.14.2", ] [[package]] @@ -1055,16 +1605,16 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d611d001f531794d40e6bf233f5cf5f41bed8e2928f1876dbeafc1f61996a444" dependencies = [ - "bevy_app", - "bevy_ecs", - "bevy_hierarchy", - "bevy_math", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", + "bevy_hierarchy 0.14.2", + "bevy_math 0.14.2", "bevy_picking_core", - "bevy_render", - "bevy_transform", - "bevy_ui", - "bevy_utils", - "bevy_window", + "bevy_render 0.14.2", + "bevy_transform 0.14.2", + "bevy_ui 0.14.2", + "bevy_utils 0.14.2", + "bevy_window 0.14.2", ] [[package]] @@ -1073,18 +1623,24 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61baa1bdc1f4a7ac2c18217570a7cc04e1cd54d38456e91782f0371c79afe0a8" +[[package]] +name = "bevy_ptr" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2af9e30b40fb3f0a80a658419f670f2de1e743efcaca1952c43cdcc923287944" + [[package]] name = "bevy_reflect" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2508785a4a5809f25a237eec4fee2c91a4dbcf81324b2bbc2d6c52629e603781" dependencies = [ - "bevy_ptr", - "bevy_reflect_derive", - "bevy_utils", + "bevy_ptr 0.14.2", + "bevy_reflect_derive 0.14.2", + "bevy_utils 0.14.2", "downcast-rs", "erased-serde", - "glam", + "glam 0.27.0", "serde", "smallvec", "smol_str", @@ -1092,13 +1648,47 @@ dependencies = [ "uuid", ] +[[package]] +name = "bevy_reflect" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52a37e2ae5ed62df4a0e3f958076effe280b39bc81fe878587350897a89332a2" +dependencies = [ + "assert_type_match", + "bevy_ptr 0.15.0", + "bevy_reflect_derive 0.15.0", + "bevy_utils 0.15.0", + "derive_more", + "disqualified", + "downcast-rs", + "erased-serde", + "glam 0.29.2", + "serde", + "smallvec", + "smol_str", + "uuid", +] + [[package]] name = "bevy_reflect_derive" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "967d5da1882ec3bb3675353915d3da909cafac033cbf31e58727824a1ad2a288" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.14.2", + "proc-macro2", + "quote", + "syn 2.0.90", + "uuid", +] + +[[package]] +name = "bevy_reflect_derive" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94c683fc68c75fc26f90bb1e529590095380d7cec66f6610dbe6b93d9fd26f94" +dependencies = [ + "bevy_macro_utils 0.15.0", "proc-macro2", "quote", "syn 2.0.90", @@ -1112,35 +1702,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "836cf8a513db013cbe7d55a331060088efd407e49fd5b05c8404700cd82e7619" dependencies = [ "async-channel", - "bevy_app", - "bevy_asset", - "bevy_color", - "bevy_core", - "bevy_derive", - "bevy_diagnostic", - "bevy_ecs", - "bevy_encase_derive", - "bevy_hierarchy", - "bevy_math", - "bevy_mikktspace", - "bevy_reflect", - "bevy_render_macros", - "bevy_tasks", - "bevy_time", - "bevy_transform", - "bevy_utils", - "bevy_window", + "bevy_app 0.14.2", + "bevy_asset 0.14.2", + "bevy_color 0.14.3", + "bevy_core 0.14.2", + "bevy_derive 0.14.2", + "bevy_diagnostic 0.14.2", + "bevy_ecs 0.14.2", + "bevy_encase_derive 0.14.2", + "bevy_hierarchy 0.14.2", + "bevy_math 0.14.2", + "bevy_mikktspace 0.14.2", + "bevy_reflect 0.14.2", + "bevy_render_macros 0.14.2", + "bevy_tasks 0.14.2", + "bevy_time 0.14.2", + "bevy_transform 0.14.2", + "bevy_utils 0.14.2", + "bevy_window 0.14.2", "bitflags 2.6.0", "bytemuck", "codespan-reporting", "downcast-rs", - "encase", + "encase 0.8.0", "futures-lite", - "hexasphere", + "hexasphere 12.0.0", "image", "js-sys", - "naga", - "naga_oil", + "naga 0.20.0", + "naga_oil 0.14.0", "nonmax", "send_wrapper", "serde", @@ -1148,7 +1738,53 @@ dependencies = [ "thiserror", "wasm-bindgen", "web-sys", - "wgpu", + "wgpu 0.20.1", +] + +[[package]] +name = "bevy_render" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d188f392edf4edcae53dfda07f3ec618a7a704183ec3f2e8504657a9fb940c8a" +dependencies = [ + "async-channel", + "bevy_app 0.15.0", + "bevy_asset 0.15.0", + "bevy_color 0.15.1", + "bevy_core 0.15.0", + "bevy_derive 0.15.0", + "bevy_diagnostic 0.15.0", + "bevy_ecs 0.15.0", + "bevy_encase_derive 0.15.0", + "bevy_hierarchy 0.15.0", + "bevy_image", + "bevy_math 0.15.0", + "bevy_mesh", + "bevy_reflect 0.15.0", + "bevy_render_macros 0.15.0", + "bevy_tasks 0.15.0", + "bevy_time 0.15.0", + "bevy_transform 0.15.0", + "bevy_utils 0.15.0", + "bevy_window 0.15.0", + "bytemuck", + "codespan-reporting", + "derive_more", + "downcast-rs", + "encase 0.10.0", + "futures-lite", + "image", + "js-sys", + "naga 23.1.0", + "naga_oil 0.16.0", + "nonmax", + "offset-allocator", + "send_wrapper", + "serde", + "smallvec", + "wasm-bindgen", + "web-sys", + "wgpu 23.0.1", ] [[package]] @@ -1157,7 +1793,19 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cbc24e0e95061a38a7744218b9c7e52e4c08b53f1499f33480e2b749f3864432" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.14.2", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "bevy_render_macros" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ab37ee2945f93e9ba8daf91cd968b4cba9c677ac51d349dd8512a107a9a5d92" +dependencies = [ + "bevy_macro_utils 0.15.0", "proc-macro2", "quote", "syn 2.0.90", @@ -1169,37 +1817,57 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ec57a72d75273bdbb6154390688fd07ba79ae9f6f99476d1937f799c736c2da" dependencies = [ - "bevy_app", - "bevy_asset", - "bevy_derive", - "bevy_ecs", - "bevy_hierarchy", - "bevy_reflect", - "bevy_render", - "bevy_transform", - "bevy_utils", + "bevy_app 0.14.2", + "bevy_asset 0.14.2", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", + "bevy_hierarchy 0.14.2", + "bevy_reflect 0.14.2", + "bevy_render 0.14.2", + "bevy_transform 0.14.2", + "bevy_utils 0.14.2", "serde", "thiserror", "uuid", ] +[[package]] +name = "bevy_scene" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e883fd3c6d6e7761f1fe662e79bc7bdc7e917e73e7bfc434b1d16d2a5852119" +dependencies = [ + "bevy_app 0.15.0", + "bevy_asset 0.15.0", + "bevy_derive 0.15.0", + "bevy_ecs 0.15.0", + "bevy_hierarchy 0.15.0", + "bevy_reflect 0.15.0", + "bevy_render 0.15.0", + "bevy_transform 0.15.0", + "bevy_utils 0.15.0", + "derive_more", + "serde", + "uuid", +] + [[package]] name = "bevy_sprite" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e045b4d8cc8e7422a4c29b1eadbe224f5cc42f170b88d43e7535892fcede3840" dependencies = [ - "bevy_app", - "bevy_asset", - "bevy_color", - "bevy_core_pipeline", - "bevy_derive", - "bevy_ecs", - "bevy_math", - "bevy_reflect", - "bevy_render", - "bevy_transform", - "bevy_utils", + "bevy_app 0.14.2", + "bevy_asset 0.14.2", + "bevy_color 0.14.3", + "bevy_core_pipeline 0.14.2", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", + "bevy_math 0.14.2", + "bevy_reflect 0.14.2", + "bevy_render 0.14.2", + "bevy_transform 0.14.2", + "bevy_utils 0.14.2", "bitflags 2.6.0", "bytemuck", "fixedbitset 0.5.7", @@ -1209,27 +1877,57 @@ dependencies = [ "thiserror", ] +[[package]] +name = "bevy_sprite" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e975abc3f3f3432d6ad86ae32de804e96d7faf59d27f32b065b5ddc1e73ed7e1" +dependencies = [ + "bevy_app 0.15.0", + "bevy_asset 0.15.0", + "bevy_color 0.15.1", + "bevy_core_pipeline 0.15.0", + "bevy_derive 0.15.0", + "bevy_ecs 0.15.0", + "bevy_image", + "bevy_math 0.15.0", + "bevy_picking", + "bevy_reflect 0.15.0", + "bevy_render 0.15.0", + "bevy_transform 0.15.0", + "bevy_utils 0.15.0", + "bevy_window 0.15.0", + "bitflags 2.6.0", + "bytemuck", + "derive_more", + "fixedbitset 0.5.7", + "guillotiere", + "nonmax", + "radsort", + "rectangle-pack", +] + [[package]] name = "bevy_state" -version = "0.14.2" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25335bfa58cc22371182335c3b133017293bc9b6d3308402fd4d1f978b83f937" +checksum = "036ec832197eae51b8a842220d2df03591dff75b4566dcf0f81153bbcb2b593b" dependencies = [ - "bevy_app", - "bevy_ecs", - "bevy_hierarchy", - "bevy_reflect", + "bevy_app 0.15.0", + "bevy_ecs 0.15.0", + "bevy_hierarchy 0.15.0", + "bevy_reflect 0.15.0", "bevy_state_macros", - "bevy_utils", + "bevy_utils 0.15.0", ] [[package]] name = "bevy_state_macros" -version = "0.14.2" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee600b659c739f1911f997a81611fec0a1832cf731727956e5fa4e7532b4dd5" +checksum = "2828eb6762af9eccfebb5e4a0e56dbc4bd07bf3192083fa3e8525cfdb3e95add" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.15.0", "proc-macro2", "quote", "syn 2.0.90", @@ -1240,11 +1938,24 @@ name = "bevy_tasks" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77865f310b1fc48fb05b7c4adbe76607ec01d0c14f8ab4caba4d714c86439946" +dependencies = [ + "async-executor", + "futures-lite", + "wasm-bindgen-futures", +] + +[[package]] +name = "bevy_tasks" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5171c605b462b4e3249e01986505e62e3933aa27642a9f793c841814fcbbfb4f" dependencies = [ "async-channel", "async-executor", "concurrent-queue", + "futures-channel", "futures-lite", + "pin-project", "wasm-bindgen-futures", ] @@ -1255,57 +1966,112 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b661db828fd423fc41a4ccf43aa4d1b8e50e75057ec40453317d0d761e8ad62d" dependencies = [ "ab_glyph", - "bevy_app", - "bevy_asset", - "bevy_color", - "bevy_ecs", - "bevy_math", - "bevy_reflect", - "bevy_render", - "bevy_sprite", - "bevy_transform", - "bevy_utils", - "bevy_window", + "bevy_app 0.14.2", + "bevy_asset 0.14.2", + "bevy_color 0.14.3", + "bevy_ecs 0.14.2", + "bevy_math 0.14.2", + "bevy_reflect 0.14.2", + "bevy_render 0.14.2", + "bevy_sprite 0.14.2", + "bevy_transform 0.14.2", + "bevy_utils 0.14.2", + "bevy_window 0.14.2", "glyph_brush_layout", "serde", "thiserror", ] +[[package]] +name = "bevy_text" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb000b2abad9f82f7a137fac7e0e3d2c6488cbf8dd9ddbb68f9a6b7e7af8d84" +dependencies = [ + "bevy_app 0.15.0", + "bevy_asset 0.15.0", + "bevy_color 0.15.1", + "bevy_derive 0.15.0", + "bevy_ecs 0.15.0", + "bevy_hierarchy 0.15.0", + "bevy_image", + "bevy_math 0.15.0", + "bevy_reflect 0.15.0", + "bevy_render 0.15.0", + "bevy_sprite 0.15.0", + "bevy_transform 0.15.0", + "bevy_utils 0.15.0", + "bevy_window 0.15.0", + "cosmic-text", + "derive_more", + "serde", + "smallvec", + "sys-locale", + "unicode-bidi", +] + [[package]] name = "bevy_time" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4e4d53ec32a1b16492396951d04de0d2d90e924bf9adcb8d1adacab5ab6c17c" dependencies = [ - "bevy_app", - "bevy_ecs", - "bevy_reflect", - "bevy_utils", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", + "bevy_reflect 0.14.2", + "bevy_utils 0.14.2", "crossbeam-channel", "thiserror", ] +[[package]] +name = "bevy_time" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291b6993b899c04554fc034ebb9e0d7fde9cb9b2fb58dcd912bfa6247abdedbb" +dependencies = [ + "bevy_app 0.15.0", + "bevy_ecs 0.15.0", + "bevy_reflect 0.15.0", + "bevy_utils 0.15.0", + "crossbeam-channel", +] + [[package]] name = "bevy_transform" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5493dce84427d00a9266e8e4386d738a72ee8640423b62dfcecb6dfccbfe0d2" dependencies = [ - "bevy_app", - "bevy_ecs", - "bevy_hierarchy", - "bevy_math", - "bevy_reflect", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", + "bevy_hierarchy 0.14.2", + "bevy_math 0.14.2", + "bevy_reflect 0.14.2", "thiserror", ] +[[package]] +name = "bevy_transform" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35665624d0c728107ab0920d5ad2d352362b906a8c376eaf375ec9c751faf4" +dependencies = [ + "bevy_app 0.15.0", + "bevy_ecs 0.15.0", + "bevy_hierarchy 0.15.0", + "bevy_math 0.15.0", + "bevy_reflect 0.15.0", + "derive_more", +] + [[package]] name = "bevy_transform_gizmo" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5c0c2ace37d5c118d1ab65e6185cf5529e97716b3f5d6aaf59b46753debdc7f" dependencies = [ - "bevy", + "bevy 0.14.2", "bevy_mod_picking", "bevy_mod_raycast", ] @@ -1316,23 +2082,23 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56d2cba6603b39a3765f043212ae530e25550af168a7eec6b23b9b93c19bc5f7" dependencies = [ - "bevy_a11y", - "bevy_app", - "bevy_asset", - "bevy_color", - "bevy_core_pipeline", - "bevy_derive", - "bevy_ecs", - "bevy_hierarchy", - "bevy_input", - "bevy_math", - "bevy_reflect", - "bevy_render", - "bevy_sprite", - "bevy_text", - "bevy_transform", - "bevy_utils", - "bevy_window", + "bevy_a11y 0.14.2", + "bevy_app 0.14.2", + "bevy_asset 0.14.2", + "bevy_color 0.14.3", + "bevy_core_pipeline 0.14.2", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", + "bevy_hierarchy 0.14.2", + "bevy_input 0.14.2", + "bevy_math 0.14.2", + "bevy_reflect 0.14.2", + "bevy_render 0.14.2", + "bevy_sprite 0.14.2", + "bevy_text 0.14.2", + "bevy_transform 0.14.2", + "bevy_utils 0.14.2", + "bevy_window 0.14.2", "bytemuck", "nonmax", "smallvec", @@ -1340,6 +2106,39 @@ dependencies = [ "thiserror", ] +[[package]] +name = "bevy_ui" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43da3326aa592d6f6326e31893901bf17cd6957ded4e0ea02bc54652e5624b7f" +dependencies = [ + "accesskit 0.17.1", + "bevy_a11y 0.15.0", + "bevy_app 0.15.0", + "bevy_asset 0.15.0", + "bevy_color 0.15.1", + "bevy_core_pipeline 0.15.0", + "bevy_derive 0.15.0", + "bevy_ecs 0.15.0", + "bevy_hierarchy 0.15.0", + "bevy_image", + "bevy_input 0.15.0", + "bevy_math 0.15.0", + "bevy_picking", + "bevy_reflect 0.15.0", + "bevy_render 0.15.0", + "bevy_sprite 0.15.0", + "bevy_text 0.15.0", + "bevy_transform 0.15.0", + "bevy_utils 0.15.0", + "bevy_window 0.15.0", + "bytemuck", + "derive_more", + "nonmax", + "smallvec", + "taffy", +] + [[package]] name = "bevy_utils" version = "0.14.2" @@ -1347,7 +2146,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffb0ec333b5965771153bd746f92ffd8aeeb9d008a8620ffd9ed474859381a5e" dependencies = [ "ahash 0.8.11", - "bevy_utils_proc_macros", + "bevy_utils_proc_macros 0.14.2", + "getrandom", + "hashbrown 0.14.5", + "thread_local", + "tracing", + "web-time", +] + +[[package]] +name = "bevy_utils" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0a48bad33c385a7818b7683a16c8b5c6930eded05cd3f176264fc1f5acea473" +dependencies = [ + "ahash 0.8.11", + "bevy_utils_proc_macros 0.15.0", "getrandom", "hashbrown 0.14.5", "thread_local", @@ -1366,18 +2180,47 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "bevy_utils_proc_macros" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dfd8d4a525b8f04f85863e45ccad3e922d4c11ed4a8d54f7f62a40bf83fb90f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "bevy_window" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c89e88a20db64ea8204540afb4699295947c454738fd50293f7b32ab8be857a6" dependencies = [ - "bevy_a11y", - "bevy_app", - "bevy_ecs", - "bevy_math", - "bevy_reflect", - "bevy_utils", + "bevy_a11y 0.14.2", + "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", + "raw-window-handle", + "smol_str", +] + +[[package]] +name = "bevy_window" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f3520279aae65935d6a84443202c154ead3abebf8dae906d095665162de358" +dependencies = [ + "android-activity", + "bevy_a11y 0.15.0", + "bevy_app 0.15.0", + "bevy_ecs 0.15.0", + "bevy_input 0.15.0", + "bevy_math 0.15.0", + "bevy_reflect 0.15.0", + "bevy_utils 0.15.0", "raw-window-handle", "smol_str", ] @@ -1388,25 +2231,58 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0bef8ec3e4b45db943ad4d1c0bf59b09e382ce0651a706e2f33a70fa955303c" dependencies = [ - "accesskit_winit", + "accesskit_winit 0.20.4", + "approx", + "bevy_a11y 0.14.2", + "bevy_app 0.14.2", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", + "bevy_hierarchy 0.14.2", + "bevy_input 0.14.2", + "bevy_log 0.14.2", + "bevy_math 0.14.2", + "bevy_reflect 0.14.2", + "bevy_tasks 0.14.2", + "bevy_utils 0.14.2", + "bevy_window 0.14.2", + "cfg-if", + "crossbeam-channel", + "raw-window-handle", + "wasm-bindgen", + "web-sys", + "winit", +] + +[[package]] +name = "bevy_winit" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581bb2249a82285707e0977a9a1c79a2248ede587fcb289708faa03a82ebfa7f" +dependencies = [ + "accesskit 0.17.1", + "accesskit_winit 0.23.1", "approx", - "bevy_a11y", - "bevy_app", - "bevy_derive", - "bevy_ecs", - "bevy_hierarchy", - "bevy_input", - "bevy_log", - "bevy_math", - "bevy_reflect", - "bevy_tasks", - "bevy_utils", - "bevy_window", + "bevy_a11y 0.15.0", + "bevy_app 0.15.0", + "bevy_asset 0.15.0", + "bevy_derive 0.15.0", + "bevy_ecs 0.15.0", + "bevy_hierarchy 0.15.0", + "bevy_image", + "bevy_input 0.15.0", + "bevy_log 0.15.0", + "bevy_math 0.15.0", + "bevy_reflect 0.15.0", + "bevy_tasks 0.15.0", + "bevy_utils 0.15.0", + "bevy_window 0.15.0", + "bytemuck", "cfg-if", "crossbeam-channel", "raw-window-handle", "wasm-bindgen", "web-sys", + "wgpu-types 23.0.0", "winit", ] @@ -1420,13 +2296,42 @@ dependencies = [ "serde", ] +[[package]] +name = "bindgen" +version = "0.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" +dependencies = [ + "bitflags 2.6.0", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.90", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec 0.6.3", +] + [[package]] name = "bit-set" -version = "0.5.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ - "bit-vec", + "bit-vec 0.8.0", ] [[package]] @@ -1435,6 +2340,12 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + [[package]] name = "bitflags" version = "1.3.2" @@ -1689,6 +2600,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -1734,6 +2654,17 @@ dependencies = [ "half", ] +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading 0.8.6", +] + [[package]] name = "clap" version = "4.5.23" @@ -1865,11 +2796,31 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom", + "once_cell", + "tiny-keccak", +] + [[package]] name = "const_panic" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "013b6c2c3a14d678f38cd23994b02da3a1a1b6a5d1eedddfe63a5a5f11b13a81" +checksum = "53857514f72ee4a2b583de67401e3ff63a5472ca4acf289d09a9ea7636dfec17" [[package]] name = "const_soft_float" @@ -1942,6 +2893,29 @@ dependencies = [ "libc", ] +[[package]] +name = "cosmic-text" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59fd57d82eb4bfe7ffa9b1cec0c05e2fd378155b47f255a67983cb4afe0e80c2" +dependencies = [ + "bitflags 2.6.0", + "fontdb", + "log", + "rangemap", + "rayon", + "rustc-hash", + "rustybuzz", + "self_cell", + "swash", + "sys-locale", + "ttf-parser 0.21.1", + "unicode-bidi", + "unicode-linebreak", + "unicode-script", + "unicode-segmentation", +] + [[package]] name = "crc32fast" version = "1.4.2" @@ -1963,7 +2937,7 @@ dependencies = [ "clap", "criterion-plot", "is-terminal", - "itertools", + "itertools 0.10.5", "num-traits", "once_cell", "oorandom", @@ -1984,7 +2958,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" dependencies = [ "cast", - "itertools", + "itertools 0.10.5", ] [[package]] @@ -2027,6 +3001,16 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +[[package]] +name = "ctrlc" +version = "3.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90eeab0aa92f3f9b4e87f258c72b139c207d251f9cbc1080a0086b86a8870dd3" +dependencies = [ + "nix", + "windows-sys 0.59.0", +] + [[package]] name = "cursor-icon" version = "1.1.0" @@ -2050,6 +3034,27 @@ version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "unicode-xid", +] + [[package]] name = "dispatch" version = "0.2.0" @@ -2067,6 +3072,12 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "disqualified" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9c272297e804878a2a4b707cfcfc6d2328b5bb936944613b4fdf2b9269afdfd" + [[package]] name = "dlib" version = "0.5.2" @@ -2141,8 +3152,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a9299a95fa5671ddf29ecc22b00e121843a65cb9ff24911e394b4ae556baf36" dependencies = [ "const_panic", - "encase_derive", - "glam", + "encase_derive 0.8.0", + "glam 0.27.0", + "thiserror", +] + +[[package]] +name = "encase" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0a05902cf601ed11d564128448097b98ebe3c6574bd7b6a653a3d56d54aa020" +dependencies = [ + "const_panic", + "encase_derive 0.10.0", + "glam 0.29.2", "thiserror", ] @@ -2152,7 +3175,16 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e09decb3beb1fe2db6940f598957b2e1f7df6206a804d438ff6cb2a9cddc10" dependencies = [ - "encase_derive_impl", + "encase_derive_impl 0.8.0", +] + +[[package]] +name = "encase_derive" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "181d475b694e2dd56ae919ce7699d344d1fd259292d590c723a50d1189a2ea85" +dependencies = [ + "encase_derive_impl 0.10.0", ] [[package]] @@ -2166,6 +3198,17 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "encase_derive_impl" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f97b51c5cc57ef7c5f7a0c57c250251c49ee4c28f819f87ac32f4aceabc36792" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "epaint" version = "0.29.1" @@ -2315,6 +3358,44 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "foldhash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + +[[package]] +name = "font-types" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3971f9a5ca983419cdc386941ba3b9e1feba01a0ab888adf78739feb2798492" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "fontconfig-parser" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1fcfcd44ca6e90c921fee9fa665d530b21ef1327a4c1a6c5250ea44b776ada7" +dependencies = [ + "roxmltree", +] + +[[package]] +name = "fontdb" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0299020c3ef3f60f526a4f64ab4a3d4ce116b1acbf24cdd22da0068e5d81dc3" +dependencies = [ + "fontconfig-parser", + "log", + "memmap2", + "slotmap", + "tinyvec", + "ttf-parser 0.20.0", +] + [[package]] name = "foreign-types" version = "0.5.0" @@ -2357,6 +3438,15 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", +] + [[package]] name = "futures-core" version = "0.3.31" @@ -2447,6 +3537,17 @@ dependencies = [ "serde", ] +[[package]] +name = "glam" +version = "0.29.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc46dd3ec48fdd8e693a98d2b8bafae273a2d54c1de02a2a7e3d57d501f39677" +dependencies = [ + "bytemuck", + "rand", + "serde", +] + [[package]] name = "glob" version = "0.3.1" @@ -2465,6 +3566,18 @@ dependencies = [ "web-sys", ] +[[package]] +name = "glow" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d51fa363f025f5c111e03f13eda21162faeacb6911fe8caa0c0349f9cf0c4483" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "glutin_wgl_sys" version = "0.5.0" @@ -2474,6 +3587,15 @@ dependencies = [ "gl_generator", ] +[[package]] +name = "glutin_wgl_sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a4e1951bbd9434a81aa496fe59ccc2235af3820d27b85f9314e279609211e2c" +dependencies = [ + "gl_generator", +] + [[package]] name = "glyph_brush_layout" version = "0.2.4" @@ -2517,6 +3639,18 @@ dependencies = [ "windows 0.52.0", ] +[[package]] +name = "gpu-allocator" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd" +dependencies = [ + "log", + "presser", + "thiserror", + "windows 0.58.0", +] + [[package]] name = "gpu-descriptor" version = "0.3.0" @@ -2589,6 +3723,9 @@ name = "hashbrown" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "foldhash", +] [[package]] name = "hassle-rs" @@ -2624,7 +3761,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edd6b038160f086b0a7496edae34169ae22f328793cbe2b627a5a3d8373748ec" dependencies = [ "constgebra", - "glam", + "glam 0.27.0", +] + +[[package]] +name = "hexasphere" +version = "15.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "741ab88b8cc670443da777c3daab02cebf5a3caccfc04e3c052f55c94d1643fe" +dependencies = [ + "constgebra", + "glam 0.29.2", ] [[package]] @@ -2839,6 +3986,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.14" @@ -2953,6 +4109,12 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "libm" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" + [[package]] name = "libredox" version = "0.1.3" @@ -3052,11 +4214,32 @@ dependencies = [ "paste", ] +[[package]] +name = "metal" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" +dependencies = [ + "bitflags 2.6.0", + "block", + "core-graphics-types", + "foreign-types", + "log", + "objc", + "paste", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" dependencies = [ "adler2", "simd-adler32", @@ -3069,7 +4252,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e536ae46fcab0876853bd4a632ede5df4b1c2527a58f6c5a4150fe86be858231" dependencies = [ "arrayvec", - "bit-set", + "bit-set 0.5.3", "bitflags 2.6.0", "codespan-reporting", "hexf-parse", @@ -3084,17 +4267,59 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "naga" +version = "23.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "364f94bc34f61332abebe8cad6f6cd82a5b65cff22c828d05d0968911462ca4f" +dependencies = [ + "arrayvec", + "bit-set 0.8.0", + "bitflags 2.6.0", + "cfg_aliases 0.1.1", + "codespan-reporting", + "hexf-parse", + "indexmap", + "log", + "pp-rs", + "rustc-hash", + "spirv", + "termcolor", + "thiserror", + "unicode-xid", +] + [[package]] name = "naga_oil" version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "275d9720a7338eedac966141089232514c84d76a246a58ef501af88c5edf402f" dependencies = [ - "bit-set", + "bit-set 0.5.3", + "codespan-reporting", + "data-encoding", + "indexmap", + "naga 0.20.0", + "once_cell", + "regex", + "regex-syntax 0.8.5", + "rustc-hash", + "thiserror", + "tracing", + "unicode-ident", +] + +[[package]] +name = "naga_oil" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31ea1f080bb359927cd5404d0af1e5e6758f4f2d82ecfbebb0a0c434764e40f1" +dependencies = [ + "bit-set 0.5.3", "codespan-reporting", "data-encoding", "indexmap", - "naga", + "naga 23.1.0", "once_cell", "regex", "regex-syntax 0.8.5", @@ -3143,6 +4368,18 @@ dependencies = [ "jni-sys", ] +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "cfg_aliases 0.2.1", + "libc", +] + [[package]] name = "nohash-hasher" version = "0.2.0" @@ -3160,6 +4397,16 @@ dependencies = [ "rand_xorshift", ] +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "nonmax" version = "0.5.5" @@ -3183,6 +4430,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -3439,6 +4687,16 @@ dependencies = [ "objc2-foundation", ] +[[package]] +name = "offset-allocator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e234d535da3521eb95106f40f0b73483d80bfb3aacf27c40d7e2b72f1a3e00a2" +dependencies = [ + "log", + "nonmax", +] + [[package]] name = "once_cell" version = "1.20.2" @@ -3481,7 +4739,7 @@ version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ec719bbf3b2a81c109a4e20b1f129b5566b7dce654bc3872f6a05abf82b2c4" dependencies = [ - "ttf-parser", + "ttf-parser 0.25.1", ] [[package]] @@ -3704,10 +4962,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" [[package]] -name = "pretty-type-name" -version = "1.0.1" +name = "prettyplease" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f73cdaf19b52e6143685c3606206e114a4dfa969d6b14ec3894c88eb38bd4b" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +dependencies = [ + "proc-macro2", + "syn 2.0.90", +] [[package]] name = "proc-macro-crate" @@ -3834,6 +5096,16 @@ dependencies = [ "getrandom", ] +[[package]] +name = "rand_distr" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" +dependencies = [ + "num-traits", + "rand", +] + [[package]] name = "rand_xorshift" version = "0.3.0" @@ -3849,6 +5121,12 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab" +[[package]] +name = "rangemap" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60fcc7d6849342eff22c4350c8b9a989ee8ceabc4b481253e8946b9fe83d684" + [[package]] name = "raw-window-handle" version = "0.6.2" @@ -3875,6 +5153,16 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "read-fonts" +version = "0.22.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69aacb76b5c29acfb7f90155d39759a29496aebb49395830e928a9703d2eec2f" +dependencies = [ + "bytemuck", + "font-types", +] + [[package]] name = "rectangle-pack" version = "0.4.2" @@ -3999,6 +5287,12 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "roxmltree" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" + [[package]] name = "rust_decimal" version = "1.36.0" @@ -4034,6 +5328,23 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "rustybuzz" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c" +dependencies = [ + "bitflags 2.6.0", + "bytemuck", + "libm", + "smallvec", + "ttf-parser 0.21.1", + "unicode-bidi-mirroring", + "unicode-ccc", + "unicode-properties", + "unicode-script", +] + [[package]] name = "ryu" version = "1.0.18" @@ -4080,6 +5391,12 @@ version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" +[[package]] +name = "self_cell" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2fdfc24bc566f839a2da4c4295b82db7d25a24253867d5c64355abb5799bdbe" + [[package]] name = "semver" version = "1.0.24" @@ -4169,6 +5486,16 @@ dependencies = [ "walkdir", ] +[[package]] +name = "skrifa" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1c44ad1f6c5bdd4eefed8326711b7dbda9ea45dfd36068c427d332aa382cbe" +dependencies = [ + "bytemuck", + "read-fonts", +] + [[package]] name = "slab" version = "0.4.9" @@ -4242,6 +5569,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "stackfuture" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eae92052b72ef70dafa16eddbabffc77e5ca3574be2f7bc1127b36f0a7ad7f2" + [[package]] name = "static_assertions" version = "1.1.0" @@ -4266,6 +5599,17 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce5d813d71d82c4cbc1742135004e4a79fd870214c155443451c139c9470a0aa" +[[package]] +name = "swash" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbd59f3f359ddd2c95af4758c18270eddd9c730dde98598023cdabff472c2ca2" +dependencies = [ + "skrifa", + "yazi", + "zeno", +] + [[package]] name = "syn" version = "1.0.109" @@ -4299,6 +5643,15 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "sys-locale" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" +dependencies = [ + "libc", +] + [[package]] name = "taffy" version = "0.5.2" @@ -4381,6 +5734,15 @@ dependencies = [ "weezl", ] +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + [[package]] name = "tiny-skia" version = "0.11.4" @@ -4512,6 +5874,21 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-oslog" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "528bdd1f0e27b5dd9a4ededf154e824b0532731e4af73bb531de46276e0aab1e" +dependencies = [ + "bindgen", + "cc", + "cfg-if", + "once_cell", + "parking_lot", + "tracing-core", + "tracing-subscriber", +] + [[package]] name = "tracing-subscriber" version = "0.3.19" @@ -4541,6 +5918,18 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "ttf-parser" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" + +[[package]] +name = "ttf-parser" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" + [[package]] name = "ttf-parser" version = "0.25.1" @@ -4565,12 +5954,48 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" +[[package]] +name = "unicode-bidi" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" + +[[package]] +name = "unicode-bidi-mirroring" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23cb788ffebc92c5948d0e997106233eeb1d8b9512f93f41651f52b6c5f5af86" + +[[package]] +name = "unicode-ccc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656" + [[package]] name = "unicode-ident" version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +[[package]] +name = "unicode-linebreak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" + +[[package]] +name = "unicode-properties" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" + +[[package]] +name = "unicode-script" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f" + [[package]] name = "unicode-segmentation" version = "1.12.0" @@ -4894,7 +6319,32 @@ dependencies = [ "document-features", "js-sys", "log", - "naga", + "naga 0.20.0", + "parking_lot", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core 0.21.1", + "wgpu-hal 0.21.1", + "wgpu-types 0.20.0", +] + +[[package]] +name = "wgpu" +version = "23.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80f70000db37c469ea9d67defdc13024ddf9a5f1b89cb2941b812ad7cde1735a" +dependencies = [ + "arrayvec", + "cfg_aliases 0.1.1", + "document-features", + "js-sys", + "log", + "naga 23.1.0", "parking_lot", "profiling", "raw-window-handle", @@ -4903,9 +6353,9 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "wgpu-core", - "wgpu-hal", - "wgpu-types", + "wgpu-core 23.0.1", + "wgpu-hal 23.0.1", + "wgpu-types 23.0.0", ] [[package]] @@ -4915,14 +6365,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d50819ab545b867d8a454d1d756b90cd5f15da1f2943334ca314af10583c9d39" dependencies = [ "arrayvec", - "bit-vec", + "bit-vec 0.6.3", "bitflags 2.6.0", "cfg_aliases 0.1.1", "codespan-reporting", "document-features", "indexmap", "log", - "naga", + "naga 0.20.0", "once_cell", "parking_lot", "profiling", @@ -4931,8 +6381,33 @@ dependencies = [ "smallvec", "thiserror", "web-sys", - "wgpu-hal", - "wgpu-types", + "wgpu-hal 0.21.1", + "wgpu-types 0.20.0", +] + +[[package]] +name = "wgpu-core" +version = "23.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d63c3c478de8e7e01786479919c8769f62a22eec16788d8c2ac77ce2c132778a" +dependencies = [ + "arrayvec", + "bit-vec 0.8.0", + "bitflags 2.6.0", + "cfg_aliases 0.1.1", + "document-features", + "indexmap", + "log", + "naga 23.1.0", + "once_cell", + "parking_lot", + "profiling", + "raw-window-handle", + "rustc-hash", + "smallvec", + "thiserror", + "wgpu-hal 23.0.1", + "wgpu-types 23.0.0", ] [[package]] @@ -4943,17 +6418,17 @@ checksum = "172e490a87295564f3fcc0f165798d87386f6231b04d4548bca458cbbfd63222" dependencies = [ "android_system_properties", "arrayvec", - "ash", - "bit-set", + "ash 0.37.3+1.3.251", + "bit-set 0.5.3", "bitflags 2.6.0", "block", "cfg_aliases 0.1.1", "core-graphics-types", "d3d12", - "glow", - "glutin_wgl_sys", + "glow 0.13.1", + "glutin_wgl_sys 0.5.0", "gpu-alloc", - "gpu-allocator", + "gpu-allocator 0.25.0", "gpu-descriptor", "hassle-rs", "js-sys", @@ -4961,8 +6436,8 @@ dependencies = [ "libc", "libloading 0.8.6", "log", - "metal", - "naga", + "metal 0.28.0", + "naga 0.20.0", "ndk-sys 0.5.0+25.2.9519653", "objc", "once_cell", @@ -4976,10 +6451,55 @@ dependencies = [ "thiserror", "wasm-bindgen", "web-sys", - "wgpu-types", + "wgpu-types 0.20.0", "winapi", ] +[[package]] +name = "wgpu-hal" +version = "23.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89364b8a0b211adc7b16aeaf1bd5ad4a919c1154b44c9ce27838213ba05fd821" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash 0.38.0+1.3.281", + "bit-set 0.8.0", + "bitflags 2.6.0", + "block", + "bytemuck", + "cfg_aliases 0.1.1", + "core-graphics-types", + "glow 0.14.2", + "glutin_wgl_sys 0.6.0", + "gpu-alloc", + "gpu-allocator 0.27.0", + "gpu-descriptor", + "js-sys", + "khronos-egl", + "libc", + "libloading 0.8.6", + "log", + "metal 0.29.0", + "naga 23.1.0", + "ndk-sys 0.5.0+25.2.9519653", + "objc", + "once_cell", + "parking_lot", + "profiling", + "range-alloc", + "raw-window-handle", + "renderdoc-sys", + "rustc-hash", + "smallvec", + "thiserror", + "wasm-bindgen", + "web-sys", + "wgpu-types 23.0.0", + "windows 0.58.0", + "windows-core 0.58.0", +] + [[package]] name = "wgpu-types" version = "0.20.0" @@ -4991,6 +6511,17 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wgpu-types" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "610f6ff27778148c31093f3b03abc4840f9636d58d597ca2f5977433acfe0068" +dependencies = [ + "bitflags 2.6.0", + "js-sys", + "web-sys", +] + [[package]] name = "widestring" version = "1.1.0" @@ -5045,8 +6576,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" dependencies = [ "windows-core 0.54.0", - "windows-implement", - "windows-interface", + "windows-implement 0.53.0", + "windows-interface 0.53.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", "windows-targets 0.52.6", ] @@ -5065,7 +6606,20 @@ version = "0.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" dependencies = [ - "windows-result", + "windows-result 0.1.2", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings", "windows-targets 0.52.6", ] @@ -5080,6 +6634,17 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "windows-interface" version = "0.53.0" @@ -5091,6 +6656,17 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "windows-result" version = "0.1.2" @@ -5100,6 +6676,25 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.45.0" @@ -5474,6 +7069,12 @@ version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea8b391c9a790b496184c29f7f93b9ed5b16abb306c05415b68bcc16e4d06432" +[[package]] +name = "yazi" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c94451ac9513335b5e23d7a8a2b61a7102398b8cca5160829d313e84c9d98be1" + [[package]] name = "yoke" version = "0.7.5" @@ -5498,6 +7099,12 @@ dependencies = [ "synstructure", ] +[[package]] +name = "zeno" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd15f8e0dbb966fd9245e7498c7e9e5055d9e5c8b676b95bd67091cd11a1e697" + [[package]] name = "zerocopy" version = "0.7.35" diff --git a/Cargo.toml b/Cargo.toml index 97b6e7c5..f8f7f633 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "bevy_gaussian_splatting" description = "bevy gaussian splatting render pipeline plugin" -version = "2.7.6" +version = "3.0.0" edition = "2021" authors = ["mosure "] license = "MIT OR Apache-2.0" @@ -106,6 +106,7 @@ tooling = ["byte-unit"] perftest = [] headless = [ + "bevy/png", "io_flexbuffers", "io_ply", "planar", @@ -116,6 +117,7 @@ headless = [ ] viewer = [ + "bevy/png", "bevy-inspector-egui", "bevy_panorbit_camera", # "bevy_transform_gizmo", @@ -141,20 +143,20 @@ webgpu = ["bevy/webgpu"] [dependencies] -bevy_args = "1.6" -bevy-inspector-egui = { version = "0.27", optional = true } +bevy_args = "1.7" +bevy-inspector-egui = { version = "0.28", optional = true } bevy_mod_picking = { version = "0.20", optional = true } # bevy_panorbit_camera = { git = "https://github.com/mosure/bevy_panorbit_camera.git", optional = true, features = ["bevy_egui"] } -bevy_panorbit_camera = { version = "0.19.5", optional = true, features = ["bevy_egui"] } +bevy_panorbit_camera = { version = "0.21", optional = true, features = ["bevy_egui"] } bevy_transform_gizmo = { version = "0.12", optional = true } bincode2 = { version = "2.0", optional = true } byte-unit = { version = "5.1", optional = true } -bytemuck = "1.19" +bytemuck = "1.20" clap = { version = "4.5", features = ["derive"] } flate2 = { version = "1.0", optional = true } flexbuffers = { version = "2.0", optional = true } half = { version = "2.3", optional = true, features = ["serde"] } -image = { version = "0.25.0", default-features = false, features = ["png"] } +image = { version = "0.25.2", default-features = false, features = ["png"] } kd-tree = { version = "0.6", optional = true } noise = { version = "0.9.0", optional = true } ply-rs = { version = "0.1", optional = true } @@ -163,7 +165,7 @@ rayon = { version = "1.8", optional = true } serde = "1.0" static_assertions = "1.1" typenum = "1.17" -wgpu = "0.20" +wgpu = "23.0.1" [target.'cfg(target_arch = "wasm32")'.dependencies] @@ -172,7 +174,7 @@ wasm-bindgen = "0.2" [dependencies.bevy] -version = "0.14" +version = "0.15" default-features = false features = [ "bevy_asset", diff --git a/README.md b/README.md index 2c1d7594..3b8fd8c3 100644 --- a/README.md +++ b/README.md @@ -59,10 +59,10 @@ fn setup_gaussian_cloud( mut commands: Commands, asset_server: Res, ) { - commands.spawn(GaussianSplattingBundle { - cloud: asset_server.load("scenes/icecream.gcloud"), - ..Default::default() - }); + // GaussianCloudSettings and Visibility are automatically added + commands.spawn( + GaussianCloudHandle(asset_server.load("scenes/icecream.gcloud")), + ); commands.spawn(Camera3dBundle::default()); } @@ -79,6 +79,7 @@ fn setup_gaussian_cloud( | `bevy_gaussian_splatting` | `bevy` | | :-- | :-- | +| `3.0` | `0.15` | | `2.3` | `0.14` | | `2.1` | `0.13` | | `0.4 - 2.0` | `0.12` | diff --git a/examples/headless.rs b/examples/headless.rs index 1e793950..9782d5e5 100644 --- a/examples/headless.rs +++ b/examples/headless.rs @@ -14,7 +14,7 @@ use bevy_args::BevyArgsPlugin; use bevy_gaussian_splatting::{ GaussianCamera, GaussianCloud, - GaussianSplattingBundle, + GaussianCloudHandle, GaussianSplattingPlugin, random_gaussians, utils::GaussianSplattingViewer, @@ -394,18 +394,16 @@ fn setup_gaussian_cloud( commands.spawn(( - GaussianSplattingBundle { cloud, ..default() }, + GaussianCloudHandle(cloud), Name::new("gaussian_cloud"), )); commands.spawn(( - Camera3dBundle { - transform: Transform::from_translation(Vec3::new(0.0, 1.5, 5.0)), - tonemapping: Tonemapping::None, - camera: Camera { - target: render_target, - ..default() - }, + Camera3d::default(), + Transform::from_translation(Vec3::new(0.0, 1.5, 5.0)), + Tonemapping::None, + Camera { + target: render_target, ..default() }, GaussianCamera::default(), diff --git a/examples/multi_camera.rs b/examples/multi_camera.rs index db8d4400..e8f84d74 100644 --- a/examples/multi_camera.rs +++ b/examples/multi_camera.rs @@ -19,9 +19,9 @@ use bevy_gaussian_splatting::{ Gaussian, GaussianCamera, GaussianCloud, - GaussianMode, + GaussianCloudHandle, GaussianCloudSettings, - GaussianSplattingBundle, + GaussianMode, GaussianSplattingPlugin, gaussian::f32::Rotation, utils::{ @@ -161,14 +161,13 @@ pub fn setup_surfel_compare( } commands.spawn(( - GaussianSplattingBundle { - cloud: gaussian_assets.add(GaussianCloud::from_gaussians(red_gaussians)), - settings: GaussianCloudSettings { - aabb: true, - transform: Transform::from_translation(Vec3::new(spacing, spacing, 0.0)), - gaussian_mode: GaussianMode::GaussianSurfel, - ..default() - }, + Transform::from_translation(Vec3::new(spacing, spacing, 0.0)), + GaussianCloudHandle( + gaussian_assets.add(GaussianCloud::from_gaussians(red_gaussians)) + ), + GaussianCloudSettings { + aabb: true, + gaussian_mode: GaussianMode::GaussianSurfel, ..default() }, Name::new("gaussian_cloud_2dgs"), @@ -178,15 +177,13 @@ pub fn setup_surfel_compare( GaussianCamera { warmup: true, }, - Camera3dBundle { - camera: Camera{ - order: 0, - ..default() - }, - transform: Transform::from_translation(Vec3::new(0.0, 1.5, 20.0)), - tonemapping: Tonemapping::None, + Camera3d::default(), + Camera{ + order: 0, ..default() }, + Transform::from_translation(Vec3::new(0.0, 1.5, 20.0)), + Tonemapping::None, CameraPosition { pos: UVec2::new(0, 0), }, @@ -232,20 +229,18 @@ fn press_s_to_spawn_camera( GaussianCamera { warmup: true, }, - Camera3dBundle { - camera: Camera{ - order: 1, - viewport: Viewport { - physical_position: pos * size, - physical_size: size, - ..default() - }.into(), + Camera3d::default(), + Camera{ + order: 1, + viewport: Viewport { + physical_position: pos * size, + physical_size: size, ..default() - }, - transform: Transform::from_translation(Vec3::new(0.0, 0.0, 40.0)), - tonemapping: Tonemapping::None, + }.into(), ..default() }, + Transform::from_translation(Vec3::new(0.0, 0.0, 40.0)), + Tonemapping::None, CameraPosition { pos, }, diff --git a/src/gaussian/cloud.rs b/src/gaussian/cloud.rs index 6a516165..aa35b28a 100644 --- a/src/gaussian/cloud.rs +++ b/src/gaussian/cloud.rs @@ -3,7 +3,18 @@ use rand::{ Rng, }; -use bevy::prelude::*; +use bevy::{ + prelude::*, + render::{ + primitives::Aabb, + sync_world::SyncToRenderWorld, + view::visibility::{ + check_visibility, + NoFrustumCulling, + VisibilitySystems, + }, + }, +}; use serde::{ Deserialize, Serialize, @@ -23,6 +34,7 @@ use crate::{ ScaleOpacity, }, packed::Gaussian, + settings::GaussianCloudSettings, }, material::spherical_harmonics::{ HALF_SH_COEFF_COUNT, @@ -40,6 +52,84 @@ use crate::gaussian::f16::{ }; +#[derive(Default)] +pub struct GaussianCloudPlugin; + +impl Plugin for GaussianCloudPlugin { + fn build(&self, app: &mut App) { + app.add_systems( + PostUpdate, + ( + calculate_bounds.in_set(VisibilitySystems::CalculateBounds), + check_visibility::>.in_set(VisibilitySystems::CheckVisibility), + ) + ); + } +} + + +// TODO: handle aabb updates (e.g. gaussian particle movements) +#[allow(clippy::type_complexity)] +pub fn calculate_bounds( + mut commands: Commands, + gaussian_clouds: Res>, + without_aabb: Query< + ( + Entity, + &GaussianCloudHandle, + ), + ( + Without, + Without, + ), + >, +) { + for (entity, cloud_handle) in &without_aabb { + if let Some(cloud) = gaussian_clouds.get(cloud_handle) { + if let Some(aabb) = cloud.compute_aabb() { + commands.entity(entity).try_insert(aabb); + } + } + } +} + + +#[derive( + Component, + Clone, + Debug, + Default, + PartialEq, + Reflect, +)] +#[reflect(Component, Default)] +#[require( + GaussianCloudSettings, + SyncToRenderWorld, + Transform, + Visibility, +)] +pub struct GaussianCloudHandle(pub Handle); + +impl From> for GaussianCloudHandle { + fn from(handle: Handle) -> Self { + Self(handle) + } +} + +impl From for AssetId { + fn from(handle: GaussianCloudHandle) -> Self { + handle.0.id() + } +} + +impl From<&GaussianCloudHandle> for AssetId { + fn from(handle: &GaussianCloudHandle) -> Self { + handle.0.id() + } +} + + #[cfg(feature = "f16")] #[derive( Asset, @@ -133,6 +223,25 @@ impl GaussianCloud { &mut self.position_visibility[index].visibility } + pub fn compute_aabb(&self) -> Option { + if self.is_empty() { + return None; + } + + let mut min = Vec3::splat(f32::INFINITY); + let mut max = Vec3::splat(f32::NEG_INFINITY); + + // TODO: find a more correct aabb bound derived from scalar max gaussian scale + let max_scale = 0.1; + + for position in self.position_iter() { + min = min.min(Vec3::from(*position) - Vec3::splat(max_scale)); + max = max.max(Vec3::from(*position) + Vec3::splat(max_scale)); + } + + Aabb::from_min_max(min, max).into() + } + // pub fn rotation(&self, index: usize) -> &[f32; 4] { // #[cfg(feature = "f16")] diff --git a/src/gaussian/settings.rs b/src/gaussian/settings.rs index 70386b99..853fc916 100644 --- a/src/gaussian/settings.rs +++ b/src/gaussian/settings.rs @@ -64,13 +64,13 @@ pub enum GaussianCloudRasterize { } +// TODO: breakdown into components #[derive(Component, Reflect, Clone)] #[reflect(Component)] pub struct GaussianCloudSettings { pub aabb: bool, pub global_opacity: f32, pub global_scale: f32, - pub transform: Transform, pub opacity_adaptive_radius: bool, pub visualize_bounding_box: bool, pub sort_mode: SortMode, @@ -85,7 +85,6 @@ impl Default for GaussianCloudSettings { aabb: false, global_opacity: 1.0, global_scale: 1.0, - transform: Transform::IDENTITY, opacity_adaptive_radius: true, visualize_bounding_box: false, sort_mode: SortMode::default(), diff --git a/src/io/loader.rs b/src/io/loader.rs index ae42b189..19d639d7 100644 --- a/src/io/loader.rs +++ b/src/io/loader.rs @@ -7,7 +7,6 @@ use std::io::{ use bevy::asset::{ AssetLoader, - AsyncReadExt, LoadContext, io::Reader, }; @@ -26,11 +25,11 @@ impl AssetLoader for GaussianCloudLoader { type Settings = (); type Error = std::io::Error; - async fn load<'a>( - &'a self, - reader: &'a mut Reader<'_>, - _settings: &'a Self::Settings, - load_context: &'a mut LoadContext<'_>, + async fn load( + &self, + reader: &mut dyn Reader, + _: &Self::Settings, + load_context: &mut LoadContext<'_>, ) -> Result { let mut bytes = Vec::new(); reader.read_to_end(&mut bytes).await?; diff --git a/src/lib.rs b/src/lib.rs index 1bd6bb98..16a76709 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,7 +4,10 @@ pub use camera::GaussianCamera; pub use gaussian::{ packed::Gaussian, - cloud::GaussianCloud, + cloud::{ + GaussianCloud, + GaussianCloudHandle, + }, rand::random_gaussians, settings::{ GaussianCloudRasterize, @@ -31,18 +34,6 @@ pub mod utils; pub mod noise; -#[derive(Bundle, Default, Reflect)] -pub struct GaussianSplattingBundle { - pub settings: GaussianCloudSettings, - pub cloud: Handle, - pub visibility: Visibility, -} - - -// #[derive(Component, Default)] -// struct GaussianSplattingCamera; -// TODO: filter camera 3D entities - pub struct GaussianSplattingPlugin; impl Plugin for GaussianSplattingPlugin { @@ -50,16 +41,17 @@ impl Plugin for GaussianSplattingPlugin { // TODO: allow hot reloading of GaussianCloud handle through inspector UI app.register_type::(); app.register_type::(); + app.register_type::(); app.init_asset::(); app.register_asset_reflect::(); app.init_asset_loader::(); app.register_type::(); - app.register_type::(); app.add_plugins(( camera::GaussianCameraPlugin, + gaussian::cloud::GaussianCloudPlugin, render::RenderPipelinePlugin, material::MaterialPlugin, query::QueryPlugin, diff --git a/src/material/noise.rs b/src/material/noise.rs index 720a8b94..5f38e2e9 100644 --- a/src/material/noise.rs +++ b/src/material/noise.rs @@ -8,6 +8,7 @@ use noise::{ use crate::{ Gaussian, GaussianCloud, + GaussianCloudHandle, }; @@ -41,7 +42,7 @@ fn apply_noise_cpu( mut gaussian_clouds_res: ResMut>, mut selections: Query<( Entity, - &Handle, + &GaussianCloudHandle, &NoiseMaterial, Changed, )>, diff --git a/src/morph/particle.rs b/src/morph/particle.rs index 69a0a389..77c6b414 100644 --- a/src/morph/particle.rs +++ b/src/morph/particle.rs @@ -110,6 +110,8 @@ impl Plugin for ParticleBehaviorPlugin { ); app.register_type::(); + app.register_type::(); + app.init_asset::(); app.init_asset::(); app.register_asset_reflect::(); app.add_plugins(RenderAssetPlugin::::default()); @@ -152,7 +154,7 @@ pub fn extract_particle_behaviors( gaussians_query: Extract< Query<( Entity, - &Handle, + &ParticleBehaviorsHandle, )>, >, ) { @@ -247,6 +249,7 @@ impl FromWorld for ParticleBehaviorPipeline { shader: PARTICLE_SHADER_HANDLE, shader_defs: shader_defs.clone(), entry_point: "apply_particle_behaviors".into(), + zero_initialize_workgroup_memory: true, }); ParticleBehaviorPipeline { @@ -271,19 +274,21 @@ pub fn queue_particle_behavior_bind_group( particle_behaviors_res: Res>, particle_behaviors: Query<( Entity, - &Handle, + &ParticleBehaviorsHandle, )>, ) { for (entity, behaviors_handle) in particle_behaviors.iter() { - if Some(LoadState::Loading) == asset_server.get_load_state(behaviors_handle) { - continue; + if let Some(load_state) = asset_server.get_load_state(&behaviors_handle.0) { + if load_state.is_loading() { + continue; + } } - if particle_behaviors_res.get(behaviors_handle.id()).is_none() { + if particle_behaviors_res.get(&behaviors_handle.0).is_none() { continue; } - let behaviors = particle_behaviors_res.get(behaviors_handle.id()).unwrap(); + let behaviors = particle_behaviors_res.get(&behaviors_handle.0).unwrap(); let particle_behavior_bindgroup = render_device.create_bind_group( "particle_behavior_bind_group", @@ -311,7 +316,7 @@ pub fn queue_particle_behavior_bind_group( pub struct ParticleBehaviorNode { gaussian_clouds: QueryState<( &'static GaussianCloudBindGroup, - &'static Handle, + &'static ParticleBehaviorsHandle, &'static ParticleBehaviorBindGroup, )>, initialized: bool, @@ -380,7 +385,7 @@ impl Node for ParticleBehaviorNode { behaviors_handle, particle_behavior_bind_group, ) in self.gaussian_clouds.iter_manual(world) { - let behaviors = world.get_resource::>().unwrap().get(behaviors_handle.id()).unwrap(); + let behaviors = world.get_resource::>().unwrap().get(behaviors_handle.0.id()).unwrap(); let gaussian_uniforms = world.resource::(); { @@ -419,6 +424,34 @@ impl Node for ParticleBehaviorNode { } +#[derive( + Component, + Clone, + Debug, + Default, + PartialEq, + Reflect, +)] +#[reflect(Component, Default)] +pub struct ParticleBehaviorsHandle(pub Handle); + +impl From> for ParticleBehaviorsHandle { + fn from(handle: Handle) -> Self { + Self(handle) + } +} + +impl From for AssetId { + fn from(handle: ParticleBehaviorsHandle) -> Self { + handle.0.id() + } +} + +impl From<&ParticleBehaviorsHandle> for AssetId { + fn from(handle: &ParticleBehaviorsHandle) -> Self { + handle.0.id() + } +} // TODO: add more particle system functionality (e.g. lifetime, color) diff --git a/src/query/raycast.rs b/src/query/raycast.rs index d3df696c..86f32547 100644 --- a/src/query/raycast.rs +++ b/src/query/raycast.rs @@ -9,6 +9,7 @@ struct Triangle { vertices: [Vec3; 3], } +// TODO: update Handle fn point_in_mesh_system( mesh_query: Query<(&Handle, &Transform)>, point_query: Query<(&Point, Entity)>, diff --git a/src/query/select.rs b/src/query/select.rs index 0eb66b25..5870f924 100644 --- a/src/query/select.rs +++ b/src/query/select.rs @@ -1,9 +1,10 @@ -use bevy::{ - prelude::*, - asset::LoadState, -}; +use bevy::prelude::*; -use crate::{GaussianCloud, io::writer::write_gaussian_cloud_to_file}; +use crate::{ + GaussianCloud, + GaussianCloudHandle, + io::writer::write_gaussian_cloud_to_file, +}; #[derive(Component, Debug, Default, Reflect)] @@ -57,7 +58,7 @@ fn apply_selection( mut gaussian_clouds_res: ResMut>, mut selections: Query<( Entity, - &Handle, + &GaussianCloudHandle, &mut Select, )>, ) { @@ -70,12 +71,10 @@ fn apply_selection( continue; } - if Some(LoadState::Loading) == asset_server.get_load_state(cloud_handle) { - continue; - } - - if Some(LoadState::Loading) == asset_server.get_load_state(cloud_handle) { - continue; + if let Some(load_state) = asset_server.get_load_state(&cloud_handle.0) { + if load_state.is_loading() { + continue; + } } let cloud = gaussian_clouds_res.get_mut(cloud_handle).unwrap(); @@ -104,7 +103,7 @@ fn invert_selection( mut gaussian_clouds_res: ResMut>, mut selections: Query<( Entity, - &Handle, + &GaussianCloudHandle, &mut Select, )>, ) { @@ -153,7 +152,7 @@ pub fn save_selection( mut gaussian_clouds_res: ResMut>, mut selections: Query<( Entity, - &Handle, + &GaussianCloudHandle, &Select, )>, ) { diff --git a/src/query/sparse.rs b/src/query/sparse.rs index c0cd215a..4aee5c9f 100644 --- a/src/query/sparse.rs +++ b/src/query/sparse.rs @@ -12,6 +12,7 @@ use typenum::consts::U3; use crate::{ Gaussian, GaussianCloud, + GaussianCloudHandle, query::select::Select, }; @@ -89,7 +90,7 @@ fn select_sparse_handler( gaussian_clouds_res: Res>, mut selections: Query<( Entity, - &Handle, + &GaussianCloudHandle, &mut SparseSelect, )>, ) { diff --git a/src/render/mod.rs b/src/render/mod.rs index 05a7571e..c27f5c28 100644 --- a/src/render/mod.rs +++ b/src/render/mod.rs @@ -2,10 +2,7 @@ use std::hash::Hash; use bevy::{ prelude::*, - asset::{ - load_internal_asset, - LoadState, - }, + asset::load_internal_asset, core_pipeline::core_3d::Transparent3d, ecs::{ query::ROQueryItem, @@ -47,6 +44,7 @@ use bevy::{ renderer::RenderDevice, view::{ ExtractedView, + RenderVisibleEntities, ViewUniform, ViewUniformOffset, ViewUniforms, @@ -54,13 +52,17 @@ use bevy::{ Render, RenderApp, RenderSet, - } + sync_world::RenderEntity, + }, }; use crate::{ camera::GaussianCamera, gaussian::{ - cloud::GaussianCloud, + cloud::{ + GaussianCloud, + GaussianCloudHandle, + }, settings::{ GaussianCloudDrawMode, GaussianCloudRasterize, @@ -78,7 +80,7 @@ use crate::{ GpuSortedEntry, SortPlugin, SortEntry, - SortedEntries, + SortedEntriesHandle, SortTrigger, }, }; @@ -183,8 +185,8 @@ impl Plugin for RenderPipelinePlugin { .add_systems( Render, ( - queue_gaussian_bind_group.in_set(RenderSet::Queue), - queue_gaussian_view_bind_groups.in_set(RenderSet::Queue), + queue_gaussian_bind_group.in_set(RenderSet::PrepareBindGroups), + queue_gaussian_view_bind_groups.in_set(RenderSet::PrepareBindGroups), queue_gaussians.in_set(RenderSet::Queue), ), ); @@ -205,8 +207,8 @@ impl Plugin for RenderPipelinePlugin { pub struct GpuGaussianSplattingBundle { pub settings: GaussianCloudSettings, pub settings_uniform: GaussianCloudUniform, - pub sorted_entries: Handle, - pub cloud_handle: Handle, + pub sorted_entries: SortedEntriesHandle, + pub cloud_handle: GaussianCloudHandle, } #[derive(Debug, Clone)] @@ -268,8 +270,8 @@ impl RenderAsset for GpuGaussianCloud { #[cfg(feature = "buffer_storage")] type GpuGaussianBundleQuery = ( Entity, - &'static Handle, - &'static Handle, + &'static GaussianCloudHandle, + &'static SortedEntriesHandle, &'static GaussianCloudSettings, (), ); @@ -277,8 +279,8 @@ type GpuGaussianBundleQuery = ( #[cfg(feature = "buffer_texture")] type GpuGaussianBundleQuery = ( Entity, - &'static Handle, - &'static Handle, + &'static GaussianCloudHandle, + &'static SortedEntriesHandle, &'static GaussianCloudSettings, &'static texture::GpuTextureBuffers, ); @@ -298,12 +300,13 @@ fn queue_gaussians( Entity, &ExtractedView, &GaussianCamera, + &RenderVisibleEntities, + Option<&Msaa>, ), >, - msaa: Res, gaussian_splatting_bundles: Query, ) { - let warmup = views.iter().any(|(_, _, camera)| camera.warmup); + let warmup = views.iter().any(|(_, _, camera, _, _)| camera.warmup); if warmup { return; } @@ -315,13 +318,19 @@ fn queue_gaussians( let draw_custom = transparent_3d_draw_functions.read().id::(); - for (view_entity, view, _) in &mut views { + for ( + view_entity, + view, + _, + visible_entities, + msaa, + ) in &mut views { let Some(transparent_phase) = transparent_render_phases.get_mut(&view_entity) else { continue; }; for ( - entity, + _entity, cloud_handle, sorted_entries_handle, settings, @@ -335,6 +344,8 @@ fn queue_gaussians( return; } + let msaa = msaa.cloned().unwrap_or_default(); + let key = GaussianCloudPipelineKey { aabb: settings.aabb, opacity_adaptive_radius: settings.opacity_adaptive_radius, @@ -351,16 +362,18 @@ fn queue_gaussians( // // TODO: distance to gaussian cloud centroid // let rangefinder = view.rangefinder3d(); - transparent_phase.add(Transparent3d { - entity, - draw_function: draw_custom, - distance: 0.0, - // distance: rangefinder - // .distance_translation(&mesh_instance.transforms.transform.translation), - pipeline, - batch_range: 0..1, - extra_index: PhaseItemExtraIndex::NONE, - }); + for (render_entity, visible_entity) in visible_entities.iter::>() { + transparent_phase.add(Transparent3d { + entity: (*render_entity, *visible_entity), + draw_function: draw_custom, + distance: 0.0, + // distance: rangefinder + // .distance_translation(&mesh_instance.transforms.transform.translation), + pipeline, + batch_range: 0..1, + extra_index: PhaseItemExtraIndex::NONE, + }); + } } } } @@ -696,6 +709,7 @@ impl SpecializedRenderPipeline for GaussianCloudPipeline { alpha_to_coverage_enabled: false, }, push_constant_ranges: Vec::new(), + zero_initialize_workgroup_memory: true, } } } @@ -708,7 +722,7 @@ type DrawGaussians = ( ); -#[derive(Component, ShaderType, Clone)] +#[derive(Component, ShaderType, Clone, Copy)] pub struct GaussianCloudUniform { pub transform: Mat4, pub global_opacity: f32, @@ -725,12 +739,12 @@ pub fn extract_gaussians( gaussian_cloud_res: Res>, gaussians_query: Extract< Query<( - Entity, - // &ComputedVisibility, - &Visibility, - &Handle, - &Handle, + RenderEntity, + &ViewVisibility, + &GaussianCloudHandle, + &SortedEntriesHandle, &GaussianCloudSettings, + &GlobalTransform, )>, >, ) { @@ -743,13 +757,16 @@ pub fn extract_gaussians( cloud_handle, sorted_entries, settings, + transform, ) in gaussians_query.iter() { - if visibility == Visibility::Hidden { + if !visibility.get() { continue; } - if Some(LoadState::Loading) == asset_server.get_load_state(cloud_handle){ - continue; + if let Some(load_state) = asset_server.get_load_state(&cloud_handle.0) { + if load_state.is_loading() { + continue; + } } if gaussian_cloud_res.get(cloud_handle).is_none() { @@ -759,12 +776,13 @@ pub fn extract_gaussians( let cloud = gaussian_cloud_res.get(cloud_handle).unwrap(); let settings_uniform = GaussianCloudUniform { - transform: settings.transform.compute_matrix(), + transform: transform.compute_matrix(), global_opacity: settings.global_opacity, global_scale: settings.global_scale, count: cloud.count as u32, count_root_ceil: (cloud.count as f32).sqrt().ceil() as u32, }; + commands_list.push(( entity, GpuGaussianSplattingBundle { @@ -834,26 +852,30 @@ fn queue_gaussian_bind_group( let texture_buffers = query.4; // TODO: add asset loading indicator (and maybe streamed loading) - if Some(LoadState::Loading) == asset_server.get_load_state(cloud_handle){ - continue; + if let Some(load_state) = asset_server.get_load_state(&cloud_handle.0) { + if load_state.is_loading() { + continue; + } } if gaussian_cloud_res.get(cloud_handle).is_none() { continue; } - if Some(LoadState::Loading) == asset_server.get_load_state(sorted_entries_handle) { - continue; + if let Some(load_state) = asset_server.get_load_state(&sorted_entries_handle.0) { + if load_state.is_loading() { + continue; + } } - if sorted_entries_res.get(sorted_entries_handle).is_none() { + if sorted_entries_res.get(&sorted_entries_handle.0).is_none() { continue; } #[cfg(not(feature = "buffer_texture"))] let cloud: &GpuGaussianCloud = gaussian_cloud_res.get(cloud_handle).unwrap(); - let sorted_entries = sorted_entries_res.get(sorted_entries_handle).unwrap(); + let sorted_entries = sorted_entries_res.get(&sorted_entries_handle.0).unwrap(); #[cfg(feature = "packed")] let cloud_bind_group = packed::get_bind_group(&render_device, &gaussian_cloud_pipeline, cloud); @@ -998,7 +1020,7 @@ impl RenderCommand

for SetGaussianUniformBindGr fn render<'w>( _item: &P, _view: (), - gaussian_cloud_index: Option>, + gaussian_cloud_index: Option>, bind_groups: SystemParamItem<'w, '_, Self::Param>, pass: &mut TrackedRenderPass<'w>, ) -> RenderCommandResult { @@ -1006,6 +1028,12 @@ impl RenderCommand

for SetGaussianUniformBindGr let bind_group = bind_groups.base_bind_group.as_ref().expect("bind group not initialized"); let mut set_bind_group = |indices: &[u32]| pass.set_bind_group(I, bind_group, indices); + + if gaussian_cloud_index.is_none() { + info!("skipping gaussian uniform bind group\n"); + return RenderCommandResult::Skip; + } + let gaussian_cloud_index = gaussian_cloud_index.unwrap().index(); set_bind_group(&[gaussian_cloud_index]); @@ -1018,7 +1046,7 @@ impl RenderCommand

for DrawGaussianInstanced { type Param = SRes>; type ViewQuery = Read; type ItemQuery = ( - Read>, + Read, Read, ); @@ -1027,7 +1055,7 @@ impl RenderCommand

for DrawGaussianInstanced { _item: &P, view: &'w SortTrigger, entity: Option<( - &'w Handle, + &'w GaussianCloudHandle, &'w GaussianCloudBindGroup, )>, gaussian_clouds: SystemParamItem<'w, '_, Self::Param>, @@ -1037,7 +1065,7 @@ impl RenderCommand

for DrawGaussianInstanced { let gpu_gaussian_cloud = match gaussian_clouds.into_inner().get(handle) { Some(gpu_gaussian_cloud) => gpu_gaussian_cloud, - None => return RenderCommandResult::Failure, + None => return RenderCommandResult::Skip, }; pass.set_bind_group( diff --git a/src/render/texture.rs b/src/render/texture.rs index b174fa38..75326a61 100644 --- a/src/render/texture.rs +++ b/src/render/texture.rs @@ -15,7 +15,10 @@ use static_assertions::assert_cfg; #[allow(unused_imports)] use crate::{ gaussian::{ - cloud::GaussianCloud, + cloud::{ + GaussianCloud, + GaussianCloudHandle, + }, f32::{ PositionVisibility, Rotation, @@ -204,7 +207,7 @@ fn queue_textures( clouds: Query< ( Entity, - &Handle, + &GaussianCloudHandle, ), Without, >, diff --git a/src/sort/mod.rs b/src/sort/mod.rs index 787f5206..4bd62342 100644 --- a/src/sort/mod.rs +++ b/src/sort/mod.rs @@ -1,6 +1,5 @@ use bevy::{ prelude::*, - asset::LoadState, ecs::system::{ lifetimeless::SRes, SystemParamItem, @@ -34,6 +33,7 @@ use static_assertions::assert_cfg; use crate::{ camera::GaussianCamera, GaussianCloud, + GaussianCloudHandle, GaussianCloudSettings, }; @@ -134,6 +134,7 @@ impl Plugin for SortPlugin { app.init_resource::(); app.register_type::(); + app.register_type::(); app.init_asset::(); app.register_asset_reflect::(); @@ -256,10 +257,10 @@ fn auto_insert_sorted_entries( gaussian_clouds: Query< ( Entity, - &Handle, + &GaussianCloudHandle, &GaussianCloudSettings, ), - Without> + Without >, gaussian_cameras: Query< Entity, @@ -287,8 +288,10 @@ fn auto_insert_sorted_entries( // continue; // } - if Some(LoadState::Loading) == asset_server.get_load_state(gaussian_cloud_handle) { - continue; + if let Some(load_state) = asset_server.get_load_state(&gaussian_cloud_handle.0) { + if load_state.is_loading() { + continue; + } } let cloud = gaussian_clouds_res.get(gaussian_cloud_handle); @@ -305,7 +308,7 @@ fn auto_insert_sorted_entries( )); commands.entity(entity) - .insert(sorted_entries); + .insert(SortedEntriesHandle(sorted_entries)); } } @@ -313,7 +316,7 @@ fn auto_insert_sorted_entries( fn update_sorted_entries_sizes( mut sorted_entries_res: ResMut>, sorted_entries: Query< - &Handle, + &SortedEntriesHandle, >, gaussian_cameras: Query< Entity, @@ -347,6 +350,36 @@ fn update_sorted_entries_sizes( } +#[derive( + Component, + Clone, + Debug, + Default, + PartialEq, + Reflect, +)] +#[reflect(Component, Default)] +pub struct SortedEntriesHandle(pub Handle); + +impl From> for SortedEntriesHandle { + fn from(handle: Handle) -> Self { + Self(handle) + } +} + +impl From for AssetId { + fn from(handle: SortedEntriesHandle) -> Self { + handle.0.id() + } +} + +impl From<&SortedEntriesHandle> for AssetId { + fn from(handle: &SortedEntriesHandle) -> Self { + handle.0.id() + } +} + + #[derive( Clone, Copy, diff --git a/src/sort/radix.rs b/src/sort/radix.rs index 9a43172e..31cbaf6d 100644 --- a/src/sort/radix.rs +++ b/src/sort/radix.rs @@ -53,7 +53,10 @@ use bevy::{ use static_assertions::assert_cfg; use crate::{ - gaussian::cloud::GaussianCloud, + gaussian::cloud::{ + GaussianCloud, + GaussianCloudHandle, + }, GaussianCloudSettings, render::{ GaussianCloudBindGroup, @@ -369,8 +372,8 @@ pub fn queue_radix_bind_group( sorted_entries_res: Res>, gaussian_clouds: Query<( Entity, - &Handle, - &Handle, + &GaussianCloudHandle, + &SortedEntriesHandle, &GaussianCloudSettings, )>, sort_buffers: Res, @@ -494,7 +497,7 @@ pub fn queue_radix_bind_group( pub struct RadixSortNode { gaussian_clouds: QueryState<( - &'static Handle, + &'static GaussianCloudHandle, &'static GaussianCloudBindGroup, &'static RadixBindGroup, )>, diff --git a/src/sort/rayon.rs b/src/sort/rayon.rs index 3741ba75..2bd983ec 100644 --- a/src/sort/rayon.rs +++ b/src/sort/rayon.rs @@ -1,6 +1,5 @@ use bevy::{ prelude::*, - asset::LoadState, math::Vec3A, utils::Instant, }; @@ -9,12 +8,14 @@ use rayon::prelude::*; use crate::{ camera::GaussianCamera, GaussianCloud, + GaussianCloudHandle, GaussianCloudSettings, sort::{ SortConfig, SortMode, SortTrigger, SortedEntries, + SortedEntriesHandle, }, }; @@ -33,9 +34,10 @@ pub fn rayon_sort( asset_server: Res, gaussian_clouds_res: Res>, gaussian_clouds: Query<( - &Handle, - &Handle, + &GaussianCloudHandle, + &SortedEntriesHandle, &GaussianCloudSettings, + &GlobalTransform, )>, mut sorted_entries_res: ResMut>, mut cameras: Query< @@ -58,6 +60,7 @@ pub fn rayon_sort( gaussian_cloud_handle, sorted_entries_handle, settings, + transform, ) in gaussian_clouds.iter() { if settings.sort_mode != SortMode::Rayon { continue; @@ -66,12 +69,16 @@ pub fn rayon_sort( trigger.needs_sort = false; performed_sort = true; - if Some(LoadState::Loading) == asset_server.get_load_state(gaussian_cloud_handle) { - continue; + if let Some(load_state) = asset_server.get_load_state(&gaussian_cloud_handle.0) { + if load_state.is_loading() { + continue; + } } - if Some(LoadState::Loading) == asset_server.get_load_state(sorted_entries_handle) { - continue; + if let Some(load_state) = asset_server.get_load_state(&sorted_entries_handle.0) { + if load_state.is_loading() { + continue; + } } if let Some(gaussian_cloud) = gaussian_clouds_res.get(gaussian_cloud_handle) { @@ -85,7 +92,7 @@ pub fn rayon_sort( .enumerate() .for_each(|(idx, (position, sort_entry))| { let position = Vec3A::from_slice(position.as_ref()); - let position = settings.transform.compute_affine().transform_point3a(position); + let position = transform.affine().transform_point3a(position); let delta = trigger.last_camera_position - position; diff --git a/src/sort/std.rs b/src/sort/std.rs index 70d23522..8c5c41e9 100644 --- a/src/sort/std.rs +++ b/src/sort/std.rs @@ -1,6 +1,5 @@ use bevy::{ prelude::*, - asset::LoadState, math::Vec3A, utils::Instant, }; @@ -8,12 +7,14 @@ use bevy::{ use crate::{ camera::GaussianCamera, GaussianCloud, + GaussianCloudHandle, GaussianCloudSettings, sort::{ SortConfig, SortMode, SortTrigger, SortedEntries, + SortedEntriesHandle, }, }; @@ -33,9 +34,10 @@ pub fn std_sort( asset_server: Res, gaussian_clouds_res: Res>, gaussian_clouds: Query<( - &Handle, - &Handle, + &GaussianCloudHandle, + &SortedEntriesHandle, &GaussianCloudSettings, + &GlobalTransform, )>, mut sorted_entries_res: ResMut>, mut cameras: Query< @@ -58,6 +60,7 @@ pub fn std_sort( gaussian_cloud_handle, sorted_entries_handle, settings, + transform, ) in gaussian_clouds.iter() { if settings.sort_mode != SortMode::Std { continue; @@ -66,12 +69,16 @@ pub fn std_sort( trigger.needs_sort = false; performed_sort = true; - if Some(LoadState::Loading) == asset_server.get_load_state(gaussian_cloud_handle) { - continue; + if let Some(load_state) = asset_server.get_load_state(&gaussian_cloud_handle.0) { + if load_state.is_loading() { + continue; + } } - if Some(LoadState::Loading) == asset_server.get_load_state(sorted_entries_handle) { - continue; + if let Some(load_state) = asset_server.get_load_state(&sorted_entries_handle.0) { + if load_state.is_loading() { + continue; + } } if let Some(gaussian_cloud) = gaussian_clouds_res.get(gaussian_cloud_handle) { @@ -85,7 +92,7 @@ pub fn std_sort( .enumerate() .for_each(|(idx, (position, sort_entry))| { let position = Vec3A::from_slice(position.as_ref()); - let position = settings.transform.compute_affine().transform_point3a(position); + let position = transform.affine().transform_point3a(position); let delta = trigger.last_camera_position - position; diff --git a/tests/gpu/gaussian.rs b/tests/gpu/gaussian.rs index 56b3a20a..b1a3824e 100644 --- a/tests/gpu/gaussian.rs +++ b/tests/gpu/gaussian.rs @@ -15,7 +15,7 @@ use bevy::{ use bevy_gaussian_splatting::{ GaussianCamera, GaussianCloud, - GaussianSplattingBundle, + GaussianCloudHandle, random_gaussians, }; @@ -47,10 +47,7 @@ fn setup( let cloud = gaussian_assets.add(random_gaussians(10000)); commands.spawn(( - GaussianSplattingBundle { - cloud, - ..default() - }, + GaussianCloudHandle(cloud), Name::new("gaussian_cloud"), )); @@ -112,7 +109,7 @@ fn capture_ready( // asset_server: Res, // gaussian_clouds: Query< // Entity, - // &Handle, + // &GaussianCloudHandle, // >, main_window: Query>, mut screenshot_manager: ResMut, diff --git a/tests/gpu/radix.rs b/tests/gpu/radix.rs index d2455e6a..45b2804a 100644 --- a/tests/gpu/radix.rs +++ b/tests/gpu/radix.rs @@ -38,7 +38,7 @@ use bevy::{ use bevy_gaussian_splatting::{ GaussianCamera, GaussianCloud, - GaussianSplattingBundle, + GaussianCloudHandle, random_gaussians, sort::SortedEntries, }; @@ -89,12 +89,9 @@ fn setup( let cloud = gaussian_assets.add(random_gaussians(10000)); commands.spawn(( - GaussianSplattingBundle { - cloud, - settings: GaussianCloudSettings { - sort_mode: SortMode::Radix, - ..default() - }, + GaussianCloudHandle(cloud), + GaussianCloudSettings { + sort_mode: SortMode::Radix, ..default() }, Name::new("gaussian_cloud"), @@ -113,8 +110,8 @@ fn setup( pub struct RadixTestNode { gaussian_clouds: QueryState<( - &'static Handle, - &'static Handle, + &'static GaussianCloudHandle, + &'static SortedEntriesHandle, )>, state: TestStateArc, views: QueryState<( diff --git a/tools/compare_aabb_obb.rs b/tools/compare_aabb_obb.rs index fc2111e1..b14e26d4 100644 --- a/tools/compare_aabb_obb.rs +++ b/tools/compare_aabb_obb.rs @@ -17,8 +17,8 @@ use bevy_gaussian_splatting::{ Gaussian, GaussianCamera, GaussianCloud, + GaussianCloudHandle, GaussianCloudSettings, - GaussianSplattingBundle, GaussianSplattingPlugin, utils::{ setup_hooks, @@ -43,18 +43,17 @@ pub fn setup_aabb_obb_compare( }; commands.spawn(( - GaussianSplattingBundle { - cloud: gaussian_assets.add( - GaussianCloud::from_gaussians(vec![ + GaussianCloudHandle( + gaussian_assets.add( + GaussianCloud::from_gaussians(vec![ blue_aabb_gaussian, blue_aabb_gaussian, ]) - ), - settings: GaussianCloudSettings { - aabb: true, - visualize_bounding_box: true, - ..default() - }, + ) + ), + GaussianCloudSettings { + aabb: true, + visualize_bounding_box: true, ..default() }, Name::new("gaussian_cloud_aabb"), @@ -71,29 +70,26 @@ pub fn setup_aabb_obb_compare( }; commands.spawn(( - GaussianSplattingBundle { - cloud: gaussian_assets.add( + GaussianCloudHandle( + gaussian_assets.add( GaussianCloud::from_gaussians(vec![ red_obb_gaussian, red_obb_gaussian, ]) - ), - settings: GaussianCloudSettings { - aabb: false, - visualize_bounding_box: true, - ..default() - }, + ) + ), + GaussianCloudSettings { + aabb: false, + visualize_bounding_box: true, ..default() }, Name::new("gaussian_cloud_obb"), )); commands.spawn(( - Camera3dBundle { - transform: Transform::from_translation(Vec3::new(0.0, 1.5, 5.0)), - tonemapping: Tonemapping::None, - ..default() - }, + Camera3d::default(), + Transform::from_translation(Vec3::new(0.0, 1.5, 5.0)), + Tonemapping::None, PanOrbitCamera{ allow_upside_down: true, ..default() diff --git a/tools/surfel_plane.rs b/tools/surfel_plane.rs index 42d0bcdd..2be93920 100644 --- a/tools/surfel_plane.rs +++ b/tools/surfel_plane.rs @@ -17,9 +17,9 @@ use bevy_gaussian_splatting::{ Gaussian, GaussianCamera, GaussianCloud, + GaussianCloudHandle, GaussianMode, GaussianCloudSettings, - GaussianSplattingBundle, GaussianSplattingPlugin, gaussian::f32::Rotation, utils::{ @@ -71,13 +71,11 @@ pub fn setup_surfel_compare( } } + let cloud = gaussian_assets.add(GaussianCloud::from_gaussians(blue_gaussians)); commands.spawn(( - GaussianSplattingBundle { - cloud: gaussian_assets.add(GaussianCloud::from_gaussians(blue_gaussians)), - settings: GaussianCloudSettings { - visualize_bounding_box, - ..default() - }, + GaussianCloudHandle(cloud), + GaussianCloudSettings { + visualize_bounding_box, ..default() }, Name::new("gaussian_cloud_3dgs"), @@ -115,16 +113,14 @@ pub fn setup_surfel_compare( } } + let cloud = gaussian_assets.add(GaussianCloud::from_gaussians(red_gaussians)); commands.spawn(( - GaussianSplattingBundle { - cloud: gaussian_assets.add(GaussianCloud::from_gaussians(red_gaussians)), - settings: GaussianCloudSettings { - visualize_bounding_box, - aabb: true, - transform: Transform::from_translation(Vec3::new(spacing, spacing, 0.0)), - gaussian_mode: GaussianMode::GaussianSurfel, - ..default() - }, + Transform::from_translation(Vec3::new(spacing, spacing, 0.0)), + GaussianCloudHandle(cloud), + GaussianCloudSettings { + visualize_bounding_box, + aabb: true, + gaussian_mode: GaussianMode::GaussianSurfel, ..default() }, Name::new("gaussian_cloud_2dgs"), @@ -134,11 +130,9 @@ pub fn setup_surfel_compare( info!("camera_transform: {:?}", camera_transform.compute_matrix().to_cols_array_2d()); commands.spawn(( - Camera3dBundle { - transform: camera_transform, - tonemapping: Tonemapping::None, - ..default() - }, + camera_transform, + Camera3d::default(), + Tonemapping::None, PanOrbitCamera { allow_upside_down: true, ..default() diff --git a/viewer/viewer.rs b/viewer/viewer.rs index 90a2f33a..cfd97ac5 100644 --- a/viewer/viewer.rs +++ b/viewer/viewer.rs @@ -11,8 +11,7 @@ use bevy::{ DiagnosticsStore, FrameTimeDiagnosticsPlugin, }, - render::view::screenshot::ScreenshotManager, - window::PrimaryWindow, + render::view::screenshot::{save_to_disk, Screenshot}, }; use bevy_args::{ BevyArgsPlugin, @@ -27,8 +26,8 @@ use bevy_panorbit_camera::{ use bevy_gaussian_splatting::{ GaussianCamera, GaussianCloud, + GaussianCloudHandle, GaussianCloudSettings, - GaussianSplattingBundle, GaussianSplattingPlugin, random_gaussians, utils::{ @@ -44,6 +43,7 @@ use bevy_gaussian_splatting::material::noise::NoiseMaterial; #[cfg(feature = "morph_particles")] use bevy_gaussian_splatting::morph::particle::{ ParticleBehaviors, + ParticleBehaviorsHandle, random_particle_behaviors, }; @@ -76,23 +76,18 @@ fn setup_gaussian_cloud( } commands.spawn(( - GaussianSplattingBundle { - cloud, - settings: GaussianCloudSettings { - gaussian_mode: args.gaussian_mode, - ..default() - }, + GaussianCloudHandle(cloud), + GaussianCloudSettings { + gaussian_mode: args.gaussian_mode, ..default() }, Name::new("gaussian_cloud"), )); commands.spawn(( - Camera3dBundle { - transform: Transform::from_translation(Vec3::new(0.0, 1.5, 5.0)), - tonemapping: Tonemapping::None, - ..default() - }, + Camera3d::default(), + Transform::from_translation(Vec3::new(0.0, 1.5, 5.0)), + Tonemapping::None, PanOrbitCamera { allow_upside_down: true, orbit_smoothness: 0.0, @@ -113,9 +108,9 @@ fn setup_particle_behavior( gaussian_cloud: Query< ( Entity, - &Handle, + &GaussianCloudHandle, ), - Without>, + Without, >, ) { if gaussian_cloud.is_empty() { @@ -130,7 +125,7 @@ fn setup_particle_behavior( if let Some(particle_behaviors) = particle_behaviors { commands.entity(gaussian_cloud.single().0) - .insert(particle_behaviors); + .insert(ParticleBehaviorsHandle(particle_behaviors)); } } @@ -140,7 +135,7 @@ fn setup_noise_material( asset_server: Res, gaussian_clouds: Query<( Entity, - &Handle, + &GaussianCloudHandle, Without, )>, ) { @@ -167,7 +162,7 @@ fn setup_sparse_select( mut commands: Commands, gaussian_cloud: Query<( Entity, - &Handle, + &GaussianCloudHandle, Without, )>, ) { @@ -233,14 +228,6 @@ fn example_app() { app.add_plugins(BevyArgsPlugin::::default()); app.add_plugins(PanOrbitCameraPlugin); - app.insert_resource(match config.msaa_samples { - 1 => Msaa::Off, - 2 => Msaa::Sample2, - 4 => Msaa::Sample4, - 8 => Msaa::Sample8, - _ => Msaa::default(), - }); - if config.editor { app.add_plugins(WorldInspectorPlugin::new()); } @@ -284,25 +271,18 @@ fn example_app() { pub fn press_s_screenshot( + mut commands: Commands, keys: Res>, - main_window: Query>, - mut screenshot_manager: ResMut, current_frame: Res, ) { if keys.just_pressed(KeyCode::KeyS) { - if let Ok(window_entity) = main_window.get_single() { - let images_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("screenshots"); - std::fs::create_dir_all(&images_dir).unwrap(); - let output_path = images_dir.join(format!("output_{}.png", current_frame.0)); - - screenshot_manager.take_screenshot(window_entity, move |image: Image| { - let dyn_img = image.clone().try_into_dynamic().unwrap(); - let img = dyn_img.to_rgba8(); - img.save(&output_path).unwrap(); - - log(&format!("saved screenshot to {}", output_path.display())); - }).unwrap(); - } + let images_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("screenshots"); + std::fs::create_dir_all(&images_dir).unwrap(); + let output_path = images_dir.join(format!("output_{}.png", current_frame.0)); + + commands + .spawn(Screenshot::primary_window()) + .observe(save_to_disk(output_path)); } } @@ -342,27 +322,29 @@ fn fps_display_setup( asset_server: Res, ) { commands.spawn(( - TextBundle::from_sections([ - TextSection::new( - "fps: ", - TextStyle { - font: asset_server.load("fonts/Caveat-Bold.ttf"), - font_size: 60.0, - color: Color::WHITE, - }, - ), - TextSection::from_style(TextStyle { - font: asset_server.load("fonts/Caveat-Medium.ttf"), - font_size: 60.0, - color: Color::Srgba(GOLD), - }), - ]).with_style(Style { + Text("fps: ".to_string()), + TextFont { + font: asset_server.load("fonts/Caveat-Bold.ttf"), + font_size: 60.0, + ..Default::default() + }, + TextColor(Color::WHITE), + Node { position_type: PositionType::Absolute, bottom: Val::Px(5.0), left: Val::Px(15.0), ..default() - }), + }, + ZIndex(2), + )).with_child(( FpsText, + TextColor(Color::Srgba(GOLD)), + TextFont { + font: asset_server.load("fonts/Caveat-Bold.ttf"), + font_size: 60.0, + ..Default::default() + }, + TextSpan::default(), )); } @@ -371,12 +353,12 @@ struct FpsText; fn fps_update_system( diagnostics: Res, - mut query: Query<&mut Text, With>, + mut query: Query<&mut TextSpan, With>, ) { for mut text in &mut query { if let Some(fps) = diagnostics.get(&FrameTimeDiagnosticsPlugin::FPS) { if let Some(value) = fps.smoothed() { - text.sections[1].value = format!("{value:.2}"); + **text = format!("{value:.2}"); } } }