From c3b2a35c1ad7d60510d8c9989d55b9d0038c9bba Mon Sep 17 00:00:00 2001 From: mosure Date: Fri, 18 Jul 2025 00:30:01 -0500 Subject: [PATCH 1/7] feat: sdf visualization, (*kdtree) --- Cargo.lock | 743 +++++++++++++----- Cargo.toml | 12 +- .../bevy_zeroverse_dataloader/__init__.py | 1 + ffi/src/lib.rs | 2 + src/camera.rs | 7 + src/render/mod.rs | 10 + src/render/sdf.rs | 682 ++++++++++++++++ src/render/sdf.wgsl | 153 ++++ src/scene/mod.rs | 45 +- src/scene/object.rs | 4 + src/scene/semantic_room.rs | 40 +- 11 files changed, 1465 insertions(+), 234 deletions(-) create mode 100644 src/render/sdf.rs create mode 100644 src/render/sdf.wgsl diff --git a/Cargo.lock b/Cargo.lock index 6414f08..66b2e13 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,6 +23,10 @@ name = "accesskit" version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "becf0eb5215b6ecb0a739c31c21bd83c4f326524c9b46b7e882d77559b60a529" +dependencies = [ + "enumn", + "serde", +] [[package]] name = "accesskit_consumer" @@ -128,7 +132,7 @@ dependencies = [ "ndk", "ndk-context", "ndk-sys 0.6.0+11769913", - "num_enum", + "num_enum 0.7.3", "thiserror 1.0.69", ] @@ -264,7 +268,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -302,7 +306,7 @@ checksum = "f548ad2c4031f2902e3edc1f29c29e835829437de49562d8eb5dc5584d3a1043" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -435,9 +439,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bevy" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a5cd3b24a5adb7c7378da7b3eea47639877643d11b6b087fc8a8094f2528615" +checksum = "4b8369c16b7c017437021341521f8b4a0d98e1c70113fb358c3258ae7d661d79" dependencies = [ "bevy_dylib", "bevy_internal", @@ -485,27 +489,28 @@ checksum = "2656316165dbe2af6b3acaa763332f5dbdd12f809d59f5bf4304e0642a8005c9" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] name = "bevy_a11y" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ed969a58fbe449ef35ebec58ab19578302537f34ee8a35d04e5a038b3c40f5" +checksum = "ed3561712cf49074d89e9989bfc2e6c6add5d33288f689db9a0c333300d2d004" dependencies = [ "accesskit", "bevy_app", "bevy_derive", "bevy_ecs", "bevy_reflect", + "serde", ] [[package]] name = "bevy_app" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2b6267ac23a9947d5b2725ff047a1e1add70076d85fa9fb73d044ab9bea1f3c" +checksum = "4491cc4c718ae76b4c6883df58b94cc88b32dcd894ea8d5b603c7c7da72ca967" dependencies = [ "bevy_derive", "bevy_ecs", @@ -541,9 +546,9 @@ dependencies = [ [[package]] name = "bevy_asset" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0698040d63199391ea77fd02e039630748e3e335c3070c6d932fd96cbf80f5d6" +checksum = "f56111d9b88d8649f331a667d9d72163fb26bd09518ca16476d238653823db1e" dependencies = [ "async-broadcast", "async-fs", @@ -581,21 +586,21 @@ dependencies = [ [[package]] name = "bevy_asset_macros" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf8c00b5d532f8e5ac7b49af10602f9f7774a2d522cf0638323b5dfeee7b31c" +checksum = "a4cca3e67c0ec760d8889d42293d987ce5da92eaf9c592bf5d503728a63b276d" dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] name = "bevy_color" -version = "0.16.1" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddf6a5ad35496bbc41713efbcf06ab72b9a310fabcab0f9db1debb56e8488c6e" +checksum = "5c101cbe1e26b8d701eb77263b14346e2e0cbbd2a6e254b9b1aead814e5ca8d3" dependencies = [ "bevy_math", "bevy_reflect", @@ -609,9 +614,9 @@ dependencies = [ [[package]] name = "bevy_core_pipeline" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55c2310717b9794e4a45513ee5946a7be0838852a4c1e185884195e1a8688ff3" +checksum = "59ed46363cad80dc00f08254c3015232bd6f640738403961c6d63e7ecfc61625" dependencies = [ "bevy_app", "bevy_asset", @@ -639,20 +644,20 @@ dependencies = [ [[package]] name = "bevy_derive" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f626531b9c05c25a758ede228727bd11c2c2c8498ecbed9925044386d525a2a3" +checksum = "1b837bf6c51806b10ebfa9edf1844ad80a3a0760d6c5fac4e90761df91a8901a" dependencies = [ "bevy_macro_utils", "quote", - "syn", + "syn 2.0.101", ] [[package]] name = "bevy_diagnostic" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "048a1ff3944a534b8472516866284181eef0a75b6dd4d39b6e5925715e350766" +checksum = "48797366f312a8f31e237d08ce3ee70162591282d2bfe7c5ad8be196fb263e55" dependencies = [ "bevy_app", "bevy_ecs", @@ -667,18 +672,18 @@ dependencies = [ [[package]] name = "bevy_dylib" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843c7ce266dfc46e49d01fbf9aa1829d33b70a1859b9ed6a526ac03070c52e97" +checksum = "1dc3602098b2604941b2829a04ac316de1e36aad949cbffce8861896b9b32532" dependencies = [ "bevy_internal", ] [[package]] name = "bevy_ecs" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9e807b5d9aab3bb8dfe47e7a44c9ff088bad2ceefe299b80ac77609a87fe9d4" +checksum = "3c2bf6521aae57a0ec3487c4bfb59e36c4a378e834b626a4bea6a885af2fdfe7" dependencies = [ "arrayvec", "bevy_ecs_macros", @@ -704,14 +709,14 @@ dependencies = [ [[package]] name = "bevy_ecs_macros" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "467d7bb98aeb8dd30f36e6a773000c12a891d4f1bee2adc3841ec89cc8eaf54e" +checksum = "38748d6f3339175c582d751f410fb60a93baf2286c3deb7efebb0878dce7f413" dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -753,19 +758,45 @@ dependencies = [ [[package]] name = "bevy_encase_derive" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8bb31dc1090c6f8fabbf6b21994d19a12766e786885ee48ffc547f0f1fa7863" +checksum = "8148f4edee470a2ea5cad010184c492a4c94c36d7a7158ea28e134ea87f274ab" dependencies = [ "bevy_macro_utils", "encase_derive_impl", ] +[[package]] +name = "bevy_gaussian_splatting" +version = "5.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e362c56b856723cca44f62a3cc01b3e6e6d4c6399f5f04ccffbaf4823ba09c23" +dependencies = [ + "bevy", + "bevy_args", + "bevy_interleave", + "bytemuck", + "clap", + "console_error_panic_hook", + "flexbuffers", + "half", + "ply-rs", + "rand", + "rayon", + "serde", + "serde_json", + "static_assertions", + "typenum", + "wasm-bindgen", + "web-sys", + "wgpu", +] + [[package]] name = "bevy_gizmos" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54af8145b35ab2a830a6dd1058e23c1e1ddc4b893db79d295259ef82f51c7520" +checksum = "7823154a9682128c261d8bddb3a4d7192a188490075c527af04520c2f0f8aad6" dependencies = [ "bevy_app", "bevy_asset", @@ -788,21 +819,21 @@ dependencies = [ [[package]] name = "bevy_gizmos_macros" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40137ace61f092b7a09eba41d7d1e6aef941f53a7818b06ef86dcce7b6a1fd3f" +checksum = "f378f3b513218ddc78254bbe76536d9de59c1429ebd0c14f5d8f2a25812131ad" dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] name = "bevy_gltf" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa25b809ee024ef2682bafc1ca22ca8275552edb549dc6f69a030fdffd976c63" +checksum = "10a080237c0b8842ccc15a06d3379302c68580eeea4497b1c7387e470eda1f07" dependencies = [ "base64 0.22.1", "bevy_app", @@ -834,9 +865,9 @@ dependencies = [ [[package]] name = "bevy_image" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "840b25f7f58894c641739f756959028a04f519c448db7e2cd3e2e29fc5fd188d" +checksum = "65e6e900cfecadbc3149953169e36b9e26f922ed8b002d62339d8a9dc6129328" dependencies = [ "bevy_app", "bevy_asset", @@ -862,9 +893,9 @@ dependencies = [ [[package]] name = "bevy_input" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763410715714f3d4d2dcdf077af276e2e4ea93fd8081b183d446d060ea95baaa" +checksum = "18d6b6516433f6f7d680f648d04eb1866bb3927a1782d52f74831b62042f3cd1" dependencies = [ "bevy_app", "bevy_ecs", @@ -874,15 +905,16 @@ dependencies = [ "bevy_utils", "derive_more", "log", + "serde", "smol_str", "thiserror 2.0.12", ] [[package]] name = "bevy_input_focus" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7e7b4ed65e10927a39a987cf85ef98727dd319aafb6e6835f2cb05b883c6d66" +checksum = "2e2d079fda74d1416e0a57dac29ea2b79ff77f420cd6b87f833d3aa29a46bc4d" dependencies = [ "bevy_app", "bevy_ecs", @@ -894,11 +926,54 @@ dependencies = [ "thiserror 2.0.12", ] +[[package]] +name = "bevy_interleave" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bfe1f7e02a4113fd2ee3be2cbc7647234a9e84d5f176d562e74c0b9fc77dcba" +dependencies = [ + "bevy", + "bevy_interleave_interface", + "bevy_interleave_macros", + "bytemuck", + "console_error_panic_hook", + "serde", + "wasm-bindgen", + "web-sys", + "wgpu", +] + +[[package]] +name = "bevy_interleave_interface" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85dfed00d02ff904f9140e2f7e65a2a3a1dd57323d9be95799ea7712bb784522" +dependencies = [ + "bevy", +] + +[[package]] +name = "bevy_interleave_macros" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2f1c9a83705a01dc2968dd3e8860073ba106c6f9198b9c6e8bee6d19f90e65" +dependencies = [ + "bevy", + "bevy_interleave_interface", + "bytemuck", + "convert_case", + "proc-macro2", + "quote", + "sha1", + "syn 2.0.101", + "wgpu", +] + [[package]] name = "bevy_internal" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "526ffd64c58004cb97308826e896c07d0e23dc056c243b97492e31cdf72e2830" +checksum = "857da8785678fde537d02944cd20dec9cafb7d4c447efe15f898dc60e733cacd" dependencies = [ "bevy_a11y", "bevy_app", @@ -935,9 +1010,9 @@ dependencies = [ [[package]] name = "bevy_log" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7156df8d2f11135cf71c03eb4c11132b65201fd4f51648571e59e39c9c9ee2f6" +checksum = "d7a61ee8aef17a974f5ca481dcedf0c2bd52670e231d4c4bc9ddef58328865f9" dependencies = [ "android_log-sys", "bevy_app", @@ -952,22 +1027,22 @@ dependencies = [ [[package]] name = "bevy_macro_utils" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2473db70d8785b5c75d6dd951a2e51e9be2c2311122db9692c79c9d887517b" +checksum = "052eeebcb8e7e072beea5031b227d9a290f8a7fbbb947573ab6ec81df0fb94be" dependencies = [ "parking_lot", "proc-macro2", "quote", - "syn", - "toml_edit", + "syn 2.0.101", + "toml_edit 0.22.25", ] [[package]] name = "bevy_math" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a3a926d02dc501c6156a047510bdb538dcb1fa744eeba13c824b73ba88de55" +checksum = "68553e0090fe9c3ba066c65629f636bd58e4ebd9444fdba097b91af6cd3e243f" dependencies = [ "approx", "bevy_reflect", @@ -985,9 +1060,9 @@ dependencies = [ [[package]] name = "bevy_mesh" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12af58280c7453e32e2f083d86eaa4c9b9d03ea8683977108ded8f1930c539f2" +checksum = "b10399c7027001edbc0406d7d0198596b1f07206c1aae715274106ba5bdcac40" dependencies = [ "bevy_asset", "bevy_derive", @@ -1010,9 +1085,9 @@ dependencies = [ [[package]] name = "bevy_mikktspace" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75e0258423c689f764556e36b5d9eebdbf624b29a1fd5b33cd9f6c42dcc4d5f3" +checksum = "8bb60c753b968a2de0fd279b76a3d19517695e771edb4c23575c7f92156315de" dependencies = [ "glam", ] @@ -1029,9 +1104,9 @@ dependencies = [ [[package]] name = "bevy_pbr" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9fe0de43b68bf9e5090a33efc963f125e9d3f9d97be9ebece7bcfdde1b6da80" +checksum = "d5e0b4eb871f364a0d217f70f6c41d7fdc6f9f931fa1abbf222180c03d0ae410" dependencies = [ "bevy_app", "bevy_asset", @@ -1086,9 +1161,9 @@ dependencies = [ [[package]] name = "bevy_platform" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704db2c11b7bc31093df4fbbdd3769f9606a6a5287149f4b51f2680f25834ebc" +checksum = "f7573dc824a1b08b4c93fdbe421c53e1e8188e9ca1dd74a414455fe571facb47" dependencies = [ "cfg-if", "critical-section", @@ -1104,15 +1179,15 @@ dependencies = [ [[package]] name = "bevy_ptr" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f1275dfb4cfef4ffc90c3fa75408964864facf833acc932413d52aa5364ba4" +checksum = "df7370d0e46b60e071917711d0860721f5347bc958bf325975ae6913a5dfcf01" [[package]] name = "bevy_reflect" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "607ebacc31029cf2f39ac330eabf1d4bc411b159528ec08dbe6b0593eaccfd41" +checksum = "daeb91a63a1a4df00aa58da8cc4ddbd4b9f16ab8bb647c5553eb156ce36fa8c2" dependencies = [ "assert_type_match", "bevy_platform", @@ -1136,22 +1211,22 @@ dependencies = [ [[package]] name = "bevy_reflect_derive" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf35e45e4eb239018369f63f2adc2107a54c329f9276d020e01eee1625b0238b" +checksum = "40ddadc55fe16b45faaa54ab2f9cb00548013c74812e8b018aa172387103cce6" dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn", + "syn 2.0.101", "uuid", ] [[package]] name = "bevy_render" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a7306235b3343b032801504f3e884b93abfb7ba58179fc555c479df509f349" +checksum = "ef91fed1f09405769214b99ebe4390d69c1af5cdd27967deae9135c550eb1667" dependencies = [ "async-channel", "bevy_app", @@ -1201,21 +1276,21 @@ dependencies = [ [[package]] name = "bevy_render_macros" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b85c4fb26b66d3a257b655485d11b9b6df9d3c85026493ba8092767a5edfc1b2" +checksum = "abd42cf6c875bcf38da859f8e731e119a6aff190d41dd0a1b6000ad57cf2ed3d" dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] name = "bevy_scene" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7b628f560f2d2fe9f35ecd4526627ba3992f082de03fd745536e4053a0266fe" +checksum = "5c52ca165200995fe8afd2a1a6c03e4ffee49198a1d4653d32240ea7f217d4ab" dependencies = [ "bevy_app", "bevy_asset", @@ -1234,9 +1309,9 @@ dependencies = [ [[package]] name = "bevy_sprite" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01f97bf54fb1c37a1077139b59bb32bc77f7ca53149cfcaa512adbb69a2d492c" +checksum = "6ccae7bab2cb956fb0434004c359e432a3a1a074a6ef4eb471f1fb099f0b620b" dependencies = [ "bevy_app", "bevy_asset", @@ -1262,9 +1337,9 @@ dependencies = [ [[package]] name = "bevy_state" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "682c343c354b191fe6669823bce3b0695ee1ae4ac36f582e29c436a72b67cdd5" +checksum = "155d3cd97b900539008cdcaa702f88b724d94b08977b8e591a32536ce66faa8c" dependencies = [ "bevy_app", "bevy_ecs", @@ -1278,21 +1353,21 @@ dependencies = [ [[package]] name = "bevy_state_macros" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55b4bf3970c4f0e60572901df4641656722172c222d71a80c430d36b0e31426c" +checksum = "2481c1304fd2a1851a0d4cb63a1ce6421ae40f3f0117cbc9882963ee4c9bb609" dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] name = "bevy_tasks" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444c450b65e108855f42ecb6db0c041a56ea7d7f10cc6222f0ca95e9536a7d19" +checksum = "5b674242641cab680688fc3b850243b351c1af49d4f3417a576debd6cca8dcf5" dependencies = [ "async-channel", "async-executor", @@ -1312,9 +1387,9 @@ dependencies = [ [[package]] name = "bevy_text" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ef071262c5a9afbc39caba4c0b282c7d045fbb5cf33bdab1924bd2343403833" +checksum = "1d76c85366159f5f54110f33321c76d8429cfd8f39638f26793a305dae568b60" dependencies = [ "bevy_app", "bevy_asset", @@ -1342,9 +1417,9 @@ dependencies = [ [[package]] name = "bevy_time" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456369ca10f8e039aaf273332744674844827854833ee29e28f9e161702f2f55" +checksum = "bc98eb356c75be04fbbc77bb3d8ffa24c8bacd99f76111cee23d444be6ac8c9c" dependencies = [ "bevy_app", "bevy_ecs", @@ -1357,9 +1432,9 @@ dependencies = [ [[package]] name = "bevy_transform" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8479cdd5461246943956a7c8347e4e5d6ff857e57add889fb50eee0b5c26ab48" +checksum = "df218e440bb9a19058e1b80a68a031c887bcf7bd3a145b55f361359a2fa3100d" dependencies = [ "bevy_app", "bevy_ecs", @@ -1375,9 +1450,9 @@ dependencies = [ [[package]] name = "bevy_ui" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "110dc5d0059f112263512be8cd7bfe0466dfb7c26b9bf4c74529355249fd23f9" +checksum = "ea4a4d2ba51865bc3039af29a26b4f52c48b54cc758369f52004caf4b6f03770" dependencies = [ "accesskit", "bevy_a11y", @@ -1401,6 +1476,7 @@ dependencies = [ "bytemuck", "derive_more", "nonmax", + "serde", "smallvec", "taffy", "thiserror 2.0.12", @@ -1409,9 +1485,9 @@ dependencies = [ [[package]] name = "bevy_utils" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac2da3b3c1f94dadefcbe837aaa4aa119fcea37f7bdc5307eb05b4ede1921e24" +checksum = "94f7a8905a125d2017e8561beefb7f2f5e67e93ff6324f072ad87c5fd6ec3b99" dependencies = [ "bevy_platform", "thread_local", @@ -1419,9 +1495,9 @@ dependencies = [ [[package]] name = "bevy_window" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d83327cc5584da463d12b7a88ddb97f9e006828832287e1564531171fffdeb4" +checksum = "df7e8ad0c17c3cc23ff5566ae2905c255e6986037fb041f74c446216f5c38431" dependencies = [ "android-activity", "bevy_app", @@ -1439,9 +1515,9 @@ dependencies = [ [[package]] name = "bevy_winit" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b14928923ae4274f4b867dce3d0e7b2c8a31bebcb0f6e65a4261c3e0765064" +checksum = "6a5e7f00c6b3b6823df5ec2a5e9067273607208919bc8c211773ebb9643c87f0" dependencies = [ "accesskit", "accesskit_winit", @@ -1462,6 +1538,7 @@ dependencies = [ "cfg-if", "crossbeam-channel", "raw-window-handle", + "serde", "tracing", "wasm-bindgen", "web-sys", @@ -1495,13 +1572,15 @@ dependencies = [ [[package]] name = "bevy_zeroverse" -version = "0.13.3" +version = "0.14.0" dependencies = [ "bevy", "bevy-inspector-egui", "bevy_args", "bevy_egui", + "bevy_gaussian_splatting", "bevy_panorbit_camera", + "bytemuck", "clap", "console_error_panic_hook", "criterion", @@ -1556,7 +1635,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn", + "syn 2.0.101", ] [[package]] @@ -1635,6 +1714,15 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + [[package]] name = "block2" version = "0.5.1" @@ -1669,11 +1757,17 @@ version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +[[package]] +name = "bytecount" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" + [[package]] name = "bytemuck" -version = "1.22.0" +version = "1.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" +checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" dependencies = [ "bytemuck_derive", ] @@ -1686,7 +1780,7 @@ checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -1716,7 +1810,7 @@ dependencies = [ "bitflags 2.9.0", "log", "polling", - "rustix", + "rustix 0.38.44", "slab", "thiserror 1.0.69", ] @@ -1728,11 +1822,42 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" dependencies = [ "calloop", - "rustix", + "rustix 0.38.44", "wayland-backend", "wayland-client", ] +[[package]] +name = "camino" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", +] + [[package]] name = "cast" version = "0.3.0" @@ -1865,7 +1990,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -1968,6 +2093,15 @@ dependencies = [ "const_soft_float", ] +[[package]] +name = "convert_case" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baaaa0ecca5b51987b9423ccdc971514dd8b0bb7b4060b983d3664dad3f1f89f" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -2041,6 +2175,15 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + [[package]] name = "crc32fast" version = "1.4.2" @@ -2052,25 +2195,22 @@ dependencies = [ [[package]] name = "criterion" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" +checksum = "3bf7af66b0989381bd0be551bd7cc91912a655a58c6918420c9527b1fd8b4679" dependencies = [ "anes", "cast", "ciborium", "clap", "criterion-plot", - "is-terminal", - "itertools 0.10.5", + "itertools 0.13.0", "num-traits", - "once_cell", "oorandom", "plotters", "rayon", "regex", "serde", - "serde_derive", "serde_json", "tinytemplate", "walkdir", @@ -2141,6 +2281,16 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + [[package]] name = "ctrlc" version = "3.4.6" @@ -2180,10 +2330,20 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", "unicode-xid", ] +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + [[package]] name = "dispatch" version = "0.2.0" @@ -2208,7 +2368,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -2321,7 +2481,18 @@ checksum = "f97b51c5cc57ef7c5f7a0c57c250251c49ee4c28f819f87ac32f4aceabc36792" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", +] + +[[package]] +name = "enumn" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", ] [[package]] @@ -2373,6 +2544,15 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "error-chain" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" +dependencies = [ + "version_check", +] + [[package]] name = "error-code" version = "3.3.1" @@ -2455,6 +2635,19 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "flexbuffers" +version = "25.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "935627e7bc8f083035d9faad09ffaed9128f73fb1f74a8798f115749c43378e8" +dependencies = [ + "bitflags 1.3.2", + "byteorder", + "num_enum 0.5.11", + "serde", + "serde_derive", +] + [[package]] name = "foldhash" version = "0.1.5" @@ -2511,7 +2704,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -2583,6 +2776,16 @@ dependencies = [ "thread_local", ] +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + [[package]] name = "gethostname" version = "0.4.3" @@ -2690,7 +2893,7 @@ dependencies = [ "inflections", "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -2789,6 +2992,7 @@ checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" dependencies = [ "cfg-if", "crunchy", + "serde", ] [[package]] @@ -2834,12 +3038,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" -[[package]] -name = "hermit-abi" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbd780fe5cc30f81464441920d82ac8740e2e46b29a6fad543ddd075229ce37e" - [[package]] name = "hexasphere" version = "15.1.0" @@ -2981,7 +3179,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -3084,18 +3282,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn", -] - -[[package]] -name = "is-terminal" -version = "0.4.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" -dependencies = [ - "hermit-abi 0.5.0", - "libc", - "windows-sys 0.59.0", + "syn 2.0.101", ] [[package]] @@ -3275,12 +3462,24 @@ dependencies = [ "redox_syscall 0.5.11", ] +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + [[package]] name = "linux-raw-sys" version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + [[package]] name = "litemap" version = "0.7.5" @@ -3481,7 +3680,7 @@ dependencies = [ "jni-sys", "log", "ndk-sys 0.6.0+11769913", - "num_enum", + "num_enum 0.7.3", "raw-window-handle", "thiserror 1.0.69", ] @@ -3604,7 +3803,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -3637,13 +3836,34 @@ dependencies = [ "libm", ] +[[package]] +name = "num_enum" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive 0.5.11", +] + [[package]] name = "num_enum" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" dependencies = [ - "num_enum_derive", + "num_enum_derive 0.7.3", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] @@ -3652,10 +3872,10 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -4027,6 +4247,33 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "peg" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f76678828272f177ac33b7e2ac2e3e73cc6c1cd1e3e387928aa69562fa51367" +dependencies = [ + "peg-macros", + "peg-runtime", +] + +[[package]] +name = "peg-macros" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "636d60acf97633e48d266d7415a9355d4389cea327a193f87df395d88cd2b14d" +dependencies = [ + "peg-runtime", + "proc-macro2", + "quote", +] + +[[package]] +name = "peg-runtime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555b1514d2d99d78150d3c799d4c357a3e2c2a8062cd108e93a06d9057629c5" + [[package]] name = "percent-encoding" version = "2.3.1" @@ -4050,7 +4297,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -4104,6 +4351,18 @@ dependencies = [ "plotters-backend", ] +[[package]] +name = "ply-rs" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbadf9cb4a79d516de4c64806fe64ffbd8161d1ac685d000be789fb628b88963" +dependencies = [ + "byteorder", + "linked-hash-map", + "peg", + "skeptic", +] + [[package]] name = "png" version = "0.17.16" @@ -4125,9 +4384,9 @@ checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi 0.4.0", + "hermit-abi", "pin-project-lite", - "rustix", + "rustix 0.38.44", "tracing", "windows-sys 0.59.0", ] @@ -4184,7 +4443,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6" dependencies = [ "proc-macro2", - "syn", + "syn 2.0.101", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", ] [[package]] @@ -4193,7 +4462,7 @@ version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "toml_edit", + "toml_edit 0.22.25", ] [[package]] @@ -4221,7 +4490,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30" dependencies = [ "quote", - "syn", + "syn 2.0.101", +] + +[[package]] +name = "pulldown-cmark" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" +dependencies = [ + "bitflags 2.9.0", + "memchr", + "unicase", ] [[package]] @@ -4282,7 +4562,7 @@ dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -4295,7 +4575,7 @@ dependencies = [ "proc-macro2", "pyo3-build-config", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -4609,7 +4889,20 @@ dependencies = [ "bitflags 2.9.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +dependencies = [ + "bitflags 2.9.0", + "errno", + "libc", + "linux-raw-sys 0.9.4", "windows-sys 0.59.0", ] @@ -4701,6 +4994,15 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f7d95a54511e0c7be3f51e8867aa8cf35148d7b9445d44de2f943e2b206e749" +[[package]] +name = "semver" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +dependencies = [ + "serde", +] + [[package]] name = "send_wrapper" version = "0.6.0" @@ -4724,7 +5026,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -4748,6 +5050,17 @@ dependencies = [ "serde", ] +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "sharded-slab" version = "0.1.7" @@ -4778,6 +5091,21 @@ dependencies = [ "quote", ] +[[package]] +name = "skeptic" +version = "0.13.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d23b015676c90a0f01c197bfdc786c20342c73a0afdda9025adb0bc42940a8" +dependencies = [ + "bytecount", + "cargo_metadata", + "error-chain", + "glob", + "pulldown-cmark", + "tempfile", + "walkdir", +] + [[package]] name = "skrifa" version = "0.26.6" @@ -4811,6 +5139,9 @@ name = "smallvec" version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +dependencies = [ + "serde", +] [[package]] name = "smithay-client-toolkit" @@ -4825,7 +5156,7 @@ dependencies = [ "libc", "log", "memmap2", - "rustix", + "rustix 0.38.44", "thiserror 1.0.69", "wayland-backend", "wayland-client", @@ -4919,7 +5250,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn", + "syn 2.0.101", ] [[package]] @@ -4932,7 +5263,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn", + "syn 2.0.101", ] [[package]] @@ -4952,6 +5283,17 @@ dependencies = [ "zeno", ] +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "syn" version = "2.0.101" @@ -4971,7 +5313,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -5014,6 +5356,19 @@ version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand", + "getrandom 0.3.2", + "once_cell", + "rustix 1.0.8", + "windows-sys 0.59.0", +] + [[package]] name = "termcolor" version = "1.4.1" @@ -5049,7 +5404,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -5060,7 +5415,7 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -5153,7 +5508,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit", + "toml_edit 0.22.25", ] [[package]] @@ -5165,6 +5520,17 @@ dependencies = [ "serde", ] +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow 0.5.40", +] + [[package]] name = "toml_edit" version = "0.22.25" @@ -5175,7 +5541,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.7.7", ] [[package]] @@ -5197,7 +5563,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -5295,6 +5661,18 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "unicase" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + [[package]] name = "unicode-bidi" version = "0.3.18" @@ -5427,7 +5805,7 @@ checksum = "41b6d82be61465f97d42bd1d15bf20f3b0a3a0905018f38f9d6f6962055b0b5c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -5489,7 +5867,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn", + "syn 2.0.101", "wasm-bindgen-shared", ] @@ -5524,7 +5902,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5546,7 +5924,7 @@ checksum = "b7208998eaa3870dad37ec8836979581506e0c5c64c20c9e79e9d2a10d6f47bf" dependencies = [ "cc", "downcast-rs 1.2.1", - "rustix", + "rustix 0.38.44", "scoped-tls", "smallvec", "wayland-sys", @@ -5559,7 +5937,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2120de3d33638aaef5b9f4472bff75f07c56379cf76ea320bd3a3d65ecaf73f" dependencies = [ "bitflags 2.9.0", - "rustix", + "rustix 0.38.44", "wayland-backend", "wayland-scanner", ] @@ -5581,7 +5959,7 @@ version = "0.31.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a93029cbb6650748881a00e4922b076092a6a08c11e7fbdb923f064b23968c5d" dependencies = [ - "rustix", + "rustix 0.38.44", "wayland-client", "xcursor", ] @@ -5862,7 +6240,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -5873,7 +6251,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -6132,7 +6510,7 @@ dependencies = [ "pin-project", "raw-window-handle", "redox_syscall 0.4.1", - "rustix", + "rustix 0.38.44", "sctk-adwaita", "smithay-client-toolkit", "smol_str", @@ -6152,6 +6530,15 @@ dependencies = [ "xkbcommon-dl", ] +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + [[package]] name = "winnow" version = "0.7.7" @@ -6204,7 +6591,7 @@ dependencies = [ "libc", "libloading", "once_cell", - "rustix", + "rustix 0.38.44", "x11rb-protocol", ] @@ -6271,7 +6658,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", "synstructure", ] @@ -6307,7 +6694,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -6318,7 +6705,7 @@ checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] @@ -6338,7 +6725,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", "synstructure", ] @@ -6361,7 +6748,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.101", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 5aeef2e..d992553 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "bevy_zeroverse" description = "bevy zeroverse synthetic dataset generator" -version = "0.13.3" +version = "0.14.0" edition = "2021" authors = ["mosure "] license = "MIT" @@ -48,6 +48,7 @@ default = [ multi_threaded = [ "bevy/multi_threaded", + "rayon", ] development = ["bevy/dynamic_linking"] @@ -60,12 +61,14 @@ python = ["extension-module", "pyo3", "webgpu"] viewer = [ "bevy_egui", + "bevy_gaussian_splatting", "bevy-inspector-egui", "bevy_panorbit_camera", "bevy/bevy_ui", ] web = [ + "rayon", "viewer", "webgpu", ] @@ -79,8 +82,10 @@ webgpu = [ [dependencies] bevy_args = "1.8" bevy_egui = { version = "0.34", optional = true } +bevy_gaussian_splatting = { version = "5.0", default-features = false, features = ["buffer_storage", "sh3", "io_flexbuffers", "io_ply", "planar", "sort_rayon"], optional = true } bevy-inspector-egui = { version = "0.31", optional = true } bevy_panorbit_camera = { version = "0.26", optional = true, features = ["bevy_egui"] } +bytemuck = { version = "1.23", features = ["derive"] } clap = { version = "4.5", features = ["derive"] } futures-intrusive = "0.5" glob = "0.3" @@ -88,7 +93,7 @@ itertools = "0.14" noise = { version = "0.9" } pollster = "0.4" pyo3 = { version = "0.23", features = ["macros"], optional = true } -rand = "0.8" +rand = { version = "0.8", features = ["small_rng"] } rayon = { version = "1.10", optional = true } serde = "1.0" strum = "0.27" @@ -133,8 +138,7 @@ features = [ [dev-dependencies] -criterion = { version = "0.5", features = ["html_reports"] } -futures-intrusive = { version = "0.5.0" } +criterion = { version = "0.6", features = ["html_reports"] } pollster = { version = "0.4" } [profile.dev.package."*"] diff --git a/ffi/python/bevy_zeroverse_dataloader/__init__.py b/ffi/python/bevy_zeroverse_dataloader/__init__.py index 5a03f8f..7591136 100644 --- a/ffi/python/bevy_zeroverse_dataloader/__init__.py +++ b/ffi/python/bevy_zeroverse_dataloader/__init__.py @@ -214,6 +214,7 @@ class BevyZeroverseDataset(Dataset): 'normal': bevy_zeroverse_ffi.RenderMode.Normal, 'optical_flow': bevy_zeroverse_ffi.RenderMode.OpticalFlow, 'position': bevy_zeroverse_ffi.RenderMode.Position, + 'sdf': bevy_zeroverse_ffi.RenderMode.Sdf, 'semantic': bevy_zeroverse_ffi.RenderMode.Semantic, } diff --git a/ffi/src/lib.rs b/ffi/src/lib.rs index 7b43434..1fe35f6 100644 --- a/ffi/src/lib.rs +++ b/ffi/src/lib.rs @@ -167,6 +167,7 @@ impl Default for SamplerState { // RenderMode::Normal, // RenderMode::OpticalFlow, // RenderMode::Position, + // RenderMode::Sdf, ], step: 0, timesteps: vec![0.125], @@ -406,6 +407,7 @@ fn sample_stream( RenderMode::Normal => view.normal = image_data, RenderMode::OpticalFlow => view.optical_flow = image_data, RenderMode::Position => view.position = image_data, + RenderMode::Sdf => panic!("sdf rendering not supported"), RenderMode::Semantic => panic!("semantic rendering not supported"), } } diff --git a/src/camera.rs b/src/camera.rs index ff0cdef..01ab4f1 100644 --- a/src/camera.rs +++ b/src/camera.rs @@ -39,6 +39,7 @@ use bevy_args::{ Serialize, ValueEnum, }; +use bevy_gaussian_splatting::GaussianCamera; use rand::Rng; #[cfg(feature = "python")] @@ -814,6 +815,9 @@ fn insert_cameras( ..default() }, Exposure::INDOOR, + GaussianCamera { + warmup: true, + }, Projection::Perspective(zeroverse_camera.perspective_sampler.sample()), zeroverse_camera.override_transform.unwrap_or(zeroverse_camera.trajectory.sample(0.0)), MotionVectorPrepass, @@ -986,6 +990,9 @@ fn setup_editor_camera( hdr: true, ..default() }, + GaussianCamera { + warmup: true, + }, Projection::Perspective(PerspectiveProjection { far: 25.0, ..default() diff --git a/src/render/mod.rs b/src/render/mod.rs index 641f576..89720fd 100644 --- a/src/render/mod.rs +++ b/src/render/mod.rs @@ -24,9 +24,11 @@ pub mod depth; pub mod normal; pub mod optical_flow; pub mod position; +pub mod sdf; pub mod semantic; +// TODO: render mode should be a per-camera setting #[derive( Debug, Default, @@ -48,6 +50,7 @@ pub enum RenderMode { Normal, OpticalFlow, Position, + Sdf, Semantic, } @@ -94,6 +97,7 @@ impl Plugin for RenderPlugin { app.add_plugins(normal::NormalPlugin); app.add_plugins(optical_flow::OpticalFlowPlugin); app.add_plugins(position::PositionPlugin); + app.add_plugins(sdf::SdfPlugin); app.add_plugins(semantic::SemanticPlugin); // TODO: add wireframe depth, pbr disable, normals @@ -108,6 +112,7 @@ impl Plugin for RenderPlugin { auto_disable_pbr_material::, auto_disable_pbr_material::, auto_disable_pbr_material::, + auto_disable_pbr_material::, auto_disable_pbr_material::, enable_pbr_material, ) @@ -206,6 +211,10 @@ fn apply_render_modes( commands.entity(entity) .insert(position::Position); } + RenderMode::Sdf => { + commands.entity(entity) + .insert(sdf::Sdf); + } RenderMode::Semantic => { commands.entity(entity) .insert(semantic::Semantic); @@ -221,6 +230,7 @@ fn apply_render_modes( .remove::() .remove::() .remove::() + .remove::() .remove::(); insert_render_mode_flag(&mut commands, entity); diff --git a/src/render/sdf.rs b/src/render/sdf.rs new file mode 100644 index 0000000..53d31d1 --- /dev/null +++ b/src/render/sdf.rs @@ -0,0 +1,682 @@ +use std::collections::HashSet; + +use bevy::{ + prelude::*, + // asset::{load_internal_asset, weak_handle}, + pbr::{ExtendedMaterial, MaterialExtension}, + render::{ + mesh::{ + Indices, + Mesh, + VertexAttributeValues, + }, + // render_asset::RenderAssetUsages, + render_resource::*, + // storage::ShaderStorageBuffer, + }, +}; +use bevy_gaussian_splatting::{ + CloudSettings, + Gaussian3d, + GaussianSplattingPlugin, + gaussian::f32::{ + PositionVisibility, + ScaleOpacity, + }, + material::spherical_harmonics::SH_COEFF_COUNT, + PlanarGaussian3d, + PlanarGaussian3dHandle, + SphericalHarmonicCoefficients, +}; +use bytemuck::{ + Pod, + Zeroable, +}; +use rand::{ + prelude::{Rng, SliceRandom, thread_rng}, + rngs::SmallRng, + SeedableRng, +}; + +use rayon::prelude::*; + + + +#[derive(Component, Clone, Debug, Default, Reflect)] +#[reflect(Component, Default)] +pub struct SdfRoot; + + +#[derive(Resource, Reflect, Debug, Clone)] +#[reflect(Resource, Default)] +pub struct SdfConfig { + pub per_m2: f32, + pub band: f32, + pub jitter: f32, + pub min_pts: u32, + pub max_pts: u32, + pub near_z: f32, + pub far_z: f32, +} + +impl Default for SdfConfig { + fn default() -> Self { + Self { + per_m2: 10.0, + band: 0.01, + jitter: 0.05, + min_pts: 256, + max_pts: 1024, + near_z: 0.1, + far_z: 25.0, + } + } +} + + +#[derive(Clone, Copy, Debug, Default, Reflect, ShaderType, Pod, Zeroable)] +#[repr(C)] +struct GpuPt { + pos_dist: Vec4, +} + +#[derive(Clone, Copy, Debug, Default, Reflect, ShaderType, Pod, Zeroable)] +#[repr(C)] +struct LodParams { + counts: UVec4, + range: Vec4, +} + +// #[derive(Clone, Copy, Debug, Default, Reflect, ShaderType, Pod, Zeroable)] +// #[repr(C)] +// pub struct KdNodeGpu { +// min_split: Vec4, +// max_pad: Vec4, +// axis: u32, +// left: u32, +// right: u32, +// _pad: u32, +// } + +// #[derive(Resource, Default, Clone)] +// pub struct SdfBuffers { +// pub pts: Handle, +// pub kd: Handle, +// } + + +// pub const SDF_SHADER_HANDLE: Handle = weak_handle!("01b0a4af-31b4-4a71-a6bc-045e8778e6d4"); + +pub type SdfMaterial = ExtendedMaterial; + + +#[derive(Asset, AsBindGroup, TypePath, Debug, Clone)] +pub struct SdfExtension { +// #[storage(14, read_only)] pts: Handle, +// #[storage(15, read_only)] kd: Handle, + #[uniform(16)] lod: LodParams, +} + +impl Default for SdfExtension { + fn default() -> Self { + Self { + // pts: Handle::default(), + // kd: Handle::default(), + lod: LodParams::default(), + } + } +} + +impl MaterialExtension for SdfExtension { + // fn fragment_shader() -> ShaderRef { SDF_SHADER_HANDLE.into() } +} + + +#[derive(Component, Debug, Clone, Default, Reflect, Eq, PartialEq)] +#[reflect(Component, Default)] +pub struct Sdf; + + +#[derive(Component, Debug, Clone, Default, Reflect, Eq, PartialEq)] +#[reflect(Component, Default)] +pub struct ComputeSdf; + + +// TODO: cache across mesh instances? +#[derive(Component, Debug, Default, Reflect)] +#[reflect(Component)] +struct MeshSdfCache { + pts: Vec, + dirty: bool, +} + + +#[derive(Resource, Default)] +struct AggregateSdf { + pts: Vec, + // kd: Vec, + dirty: bool, +} + + +pub struct SdfPlugin; +impl Plugin for SdfPlugin { + fn build(&self, app: &mut App) { + // load_internal_asset!( + // app, + // SDF_SHADER_HANDLE, + // "sdf.wgsl", + // Shader::from_wgsl, + // ); + + app + .register_type::() + .register_type::() + .register_type::() + .register_type::() + .register_type::() + .init_resource::() + // .init_resource::() + .init_resource::() + .add_plugins(( + MaterialPlugin::::default(), + )) + .add_plugins(GaussianSplattingPlugin) + .add_systems(PreUpdate, propagate_sdf_tags) + .add_systems(Update, cache_mesh_sdf) + .add_systems(PostUpdate, aggregate_sdf_system) + .add_systems(PreUpdate, upload_sdf) + .add_systems(Update, apply_sdf_material); + } +} + + + +pub fn propagate_sdf_tags( + mut commands: Commands, + roots: Query>, + has_sdf: Query>, + parents: Query<&ChildOf>, +) { + let root_set: HashSet = roots.iter().collect(); + + for entity in has_sdf.iter() { + let is_descendant = parents + .iter_ancestors(entity) + .any(|ancestor| root_set.contains(&ancestor)); + + if is_descendant { + if let Ok(mut valid_mesh) = commands.get_entity(entity) { + valid_mesh.try_insert(ComputeSdf); + } + } + } +} + + +fn cache_mesh_sdf( + mut commands: Commands, + cfg: Res, + meshes: Res>, + mut q: Query< + ( + Entity, + &Mesh3d, + &GlobalTransform, + Option<&mut MeshSdfCache>, + ), + ( + With, + // Changed, + // Changed, + Without, + ), + >, + // time: Res