Mii rendering and parsing library

Big reorganisation & Cleanup

+4
.cargo/config.toml
··· 1 1 [target.wasm32-unknown-unknown] 2 2 runner = "wasm-server-runner" 3 + 4 + # https://stackoverflow.com/a/78606410 5 + [env] 6 + CARGO_WORKSPACE_DIR = { value = "", relative = true }
+81 -3515
Cargo.lock
··· 19 19 checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" 20 20 21 21 [[package]] 22 - name = "accesskit" 23 - version = "0.18.0" 24 - source = "registry+https://github.com/rust-lang/crates.io-index" 25 - checksum = "becf0eb5215b6ecb0a739c31c21bd83c4f326524c9b46b7e882d77559b60a529" 26 - 27 - [[package]] 28 - name = "accesskit_consumer" 29 - version = "0.27.0" 30 - source = "registry+https://github.com/rust-lang/crates.io-index" 31 - checksum = "d0bf66a7bf0b7ea4fd7742d50b64782a88f99217cf246b3f93b4162528dde520" 32 - dependencies = [ 33 - "accesskit", 34 - "hashbrown", 35 - "immutable-chunkmap", 36 - ] 37 - 38 - [[package]] 39 - name = "accesskit_macos" 40 - version = "0.19.0" 41 - source = "registry+https://github.com/rust-lang/crates.io-index" 42 - checksum = "09e230718177753b4e4ad9e1d9f6cfc2f4921212d4c1c480b253f526babb258d" 43 - dependencies = [ 44 - "accesskit", 45 - "accesskit_consumer", 46 - "hashbrown", 47 - "objc2 0.5.2", 48 - "objc2-app-kit 0.2.2", 49 - "objc2-foundation 0.2.2", 50 - ] 51 - 52 - [[package]] 53 - name = "accesskit_windows" 54 - version = "0.25.0" 55 - source = "registry+https://github.com/rust-lang/crates.io-index" 56 - checksum = "65178f3df98a51e4238e584fcb255cb1a4f9111820848eeddd37663be40a625f" 57 - dependencies = [ 58 - "accesskit", 59 - "accesskit_consumer", 60 - "hashbrown", 61 - "paste", 62 - "static_assertions", 63 - "windows 0.58.0", 64 - "windows-core 0.58.0", 65 - ] 66 - 67 - [[package]] 68 - name = "accesskit_winit" 69 - version = "0.25.0" 70 - source = "registry+https://github.com/rust-lang/crates.io-index" 71 - checksum = "34d941bb8c414caba6e206de669c7dc0dbeb305640ea890772ee422a40e6b89f" 72 - dependencies = [ 73 - "accesskit", 74 - "accesskit_macos", 75 - "accesskit_windows", 76 - "raw-window-handle", 77 - "winit", 78 - ] 79 - 80 - [[package]] 81 22 name = "adler2" 82 23 version = "2.0.0" 83 24 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 97 38 ] 98 39 99 40 [[package]] 100 - name = "aho-corasick" 101 - version = "1.1.3" 102 - source = "registry+https://github.com/rust-lang/crates.io-index" 103 - checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 104 - dependencies = [ 105 - "memchr", 106 - ] 107 - 108 - [[package]] 109 41 name = "aligned-vec" 110 42 version = "0.5.0" 111 43 source = "registry+https://github.com/rust-lang/crates.io-index" 112 44 checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1" 113 45 114 46 [[package]] 115 - name = "alsa" 116 - version = "0.9.1" 117 - source = "registry+https://github.com/rust-lang/crates.io-index" 118 - checksum = "ed7572b7ba83a31e20d1b48970ee402d2e3e0537dcfe0a3ff4d6eb7508617d43" 119 - dependencies = [ 120 - "alsa-sys", 121 - "bitflags 2.9.0", 122 - "cfg-if", 123 - "libc", 124 - ] 125 - 126 - [[package]] 127 - name = "alsa-sys" 128 - version = "0.3.1" 129 - source = "registry+https://github.com/rust-lang/crates.io-index" 130 - checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" 131 - dependencies = [ 132 - "libc", 133 - "pkg-config", 134 - ] 135 - 136 - [[package]] 137 47 name = "android-activity" 138 48 version = "0.6.0" 139 49 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 147 57 "jni-sys", 148 58 "libc", 149 59 "log", 150 - "ndk 0.9.0", 60 + "ndk", 151 61 "ndk-context", 152 62 "ndk-sys 0.6.0+11769913", 153 63 "num_enum", ··· 161 71 checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" 162 72 163 73 [[package]] 164 - name = "android_log-sys" 165 - version = "0.3.2" 166 - source = "registry+https://github.com/rust-lang/crates.io-index" 167 - checksum = "84521a3cf562bc62942e294181d9eef17eb38ceb8c68677bc49f144e4c3d4f8d" 168 - 169 - [[package]] 170 74 name = "android_system_properties" 171 75 version = "0.1.5" 172 76 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 197 101 checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" 198 102 199 103 [[package]] 200 - name = "arboard" 201 - version = "3.5.0" 202 - source = "registry+https://github.com/rust-lang/crates.io-index" 203 - checksum = "c1df21f715862ede32a0c525ce2ca4d52626bb0007f8c18b87a384503ac33e70" 204 - dependencies = [ 205 - "clipboard-win", 206 - "image 0.25.6", 207 - "log", 208 - "objc2 0.6.1", 209 - "objc2-app-kit 0.3.1", 210 - "objc2-core-foundation", 211 - "objc2-core-graphics", 212 - "objc2-foundation 0.3.1", 213 - "parking_lot", 214 - "percent-encoding", 215 - "windows-sys 0.59.0", 216 - "x11rb", 217 - ] 218 - 219 - [[package]] 220 104 name = "arg_enum_proc_macro" 221 105 version = "0.3.4" 222 106 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 261 145 ] 262 146 263 147 [[package]] 264 - name = "assert_type_match" 265 - version = "0.1.1" 266 - source = "registry+https://github.com/rust-lang/crates.io-index" 267 - checksum = "f548ad2c4031f2902e3edc1f29c29e835829437de49562d8eb5dc5584d3a1043" 268 - dependencies = [ 269 - "proc-macro2", 270 - "quote", 271 - "syn 2.0.101", 272 - ] 273 - 274 - [[package]] 275 - name = "async-broadcast" 276 - version = "0.7.2" 277 - source = "registry+https://github.com/rust-lang/crates.io-index" 278 - checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" 279 - dependencies = [ 280 - "event-listener", 281 - "event-listener-strategy", 282 - "futures-core", 283 - "pin-project-lite", 284 - ] 285 - 286 - [[package]] 287 - name = "async-channel" 288 - version = "2.3.1" 289 - source = "registry+https://github.com/rust-lang/crates.io-index" 290 - checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" 291 - dependencies = [ 292 - "concurrent-queue", 293 - "event-listener-strategy", 294 - "futures-core", 295 - "pin-project-lite", 296 - ] 297 - 298 - [[package]] 299 - name = "async-executor" 300 - version = "1.13.2" 301 - source = "registry+https://github.com/rust-lang/crates.io-index" 302 - checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" 303 - dependencies = [ 304 - "async-task", 305 - "concurrent-queue", 306 - "fastrand", 307 - "futures-lite", 308 - "pin-project-lite", 309 - "slab", 310 - ] 311 - 312 - [[package]] 313 - name = "async-fs" 314 - version = "2.1.2" 315 - source = "registry+https://github.com/rust-lang/crates.io-index" 316 - checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" 317 - dependencies = [ 318 - "async-lock", 319 - "blocking", 320 - "futures-lite", 321 - ] 322 - 323 - [[package]] 324 - name = "async-lock" 325 - version = "3.4.0" 326 - source = "registry+https://github.com/rust-lang/crates.io-index" 327 - checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" 328 - dependencies = [ 329 - "event-listener", 330 - "event-listener-strategy", 331 - "pin-project-lite", 332 - ] 333 - 334 - [[package]] 335 - name = "async-task" 336 - version = "4.7.1" 337 - source = "registry+https://github.com/rust-lang/crates.io-index" 338 - checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" 339 - dependencies = [ 340 - "portable-atomic", 341 - ] 342 - 343 - [[package]] 344 148 name = "atomic-waker" 345 149 version = "1.1.2" 346 150 source = "registry+https://github.com/rust-lang/crates.io-index" 347 151 checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 348 - dependencies = [ 349 - "portable-atomic", 350 - ] 351 - 352 - [[package]] 353 - name = "atomicow" 354 - version = "1.1.0" 355 - source = "registry+https://github.com/rust-lang/crates.io-index" 356 - checksum = "f52e8890bb9844440d0c412fa74b67fd2f14e85248b6e00708059b6da9e5f8bf" 357 - dependencies = [ 358 - "portable-atomic", 359 - "portable-atomic-util", 360 - ] 361 152 362 153 [[package]] 363 154 name = "autocfg" ··· 395 186 checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" 396 187 397 188 [[package]] 398 - name = "base64" 399 - version = "0.21.7" 400 - source = "registry+https://github.com/rust-lang/crates.io-index" 401 - checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" 402 - 403 - [[package]] 404 - name = "base64" 405 - version = "0.22.1" 406 - source = "registry+https://github.com/rust-lang/crates.io-index" 407 - checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 408 - 409 - [[package]] 410 - name = "bevy" 411 - version = "0.16.0" 412 - source = "registry+https://github.com/rust-lang/crates.io-index" 413 - checksum = "2a5cd3b24a5adb7c7378da7b3eea47639877643d11b6b087fc8a8094f2528615" 414 - dependencies = [ 415 - "bevy_internal", 416 - ] 417 - 418 - [[package]] 419 - name = "bevy_a11y" 420 - version = "0.16.0" 421 - source = "registry+https://github.com/rust-lang/crates.io-index" 422 - checksum = "91ed969a58fbe449ef35ebec58ab19578302537f34ee8a35d04e5a038b3c40f5" 423 - dependencies = [ 424 - "accesskit", 425 - "bevy_app", 426 - "bevy_derive", 427 - "bevy_ecs", 428 - "bevy_reflect", 429 - ] 430 - 431 - [[package]] 432 - name = "bevy_animation" 433 - version = "0.16.0" 434 - source = "registry+https://github.com/rust-lang/crates.io-index" 435 - checksum = "3647b67c6bfd456922b2720ccef980dec01742d155d0eb454dc3d8fdc65e7aff" 436 - dependencies = [ 437 - "bevy_app", 438 - "bevy_asset", 439 - "bevy_color", 440 - "bevy_derive", 441 - "bevy_ecs", 442 - "bevy_log", 443 - "bevy_math", 444 - "bevy_mesh", 445 - "bevy_platform", 446 - "bevy_reflect", 447 - "bevy_render", 448 - "bevy_time", 449 - "bevy_transform", 450 - "bevy_utils", 451 - "blake3", 452 - "derive_more", 453 - "downcast-rs 2.0.1", 454 - "either", 455 - "petgraph", 456 - "ron", 457 - "serde", 458 - "smallvec", 459 - "thiserror 2.0.12", 460 - "thread_local", 461 - "tracing", 462 - "uuid", 463 - ] 464 - 465 - [[package]] 466 - name = "bevy_app" 467 - version = "0.16.0" 468 - source = "registry+https://github.com/rust-lang/crates.io-index" 469 - checksum = "a2b6267ac23a9947d5b2725ff047a1e1add70076d85fa9fb73d044ab9bea1f3c" 470 - dependencies = [ 471 - "bevy_derive", 472 - "bevy_ecs", 473 - "bevy_platform", 474 - "bevy_reflect", 475 - "bevy_tasks", 476 - "bevy_utils", 477 - "cfg-if", 478 - "console_error_panic_hook", 479 - "ctrlc", 480 - "downcast-rs 2.0.1", 481 - "log", 482 - "thiserror 2.0.12", 483 - "variadics_please", 484 - "wasm-bindgen", 485 - "web-sys", 486 - ] 487 - 488 - [[package]] 489 - name = "bevy_asset" 490 - version = "0.16.0" 491 - source = "registry+https://github.com/rust-lang/crates.io-index" 492 - checksum = "0698040d63199391ea77fd02e039630748e3e335c3070c6d932fd96cbf80f5d6" 493 - dependencies = [ 494 - "async-broadcast", 495 - "async-fs", 496 - "async-lock", 497 - "atomicow", 498 - "bevy_app", 499 - "bevy_asset_macros", 500 - "bevy_ecs", 501 - "bevy_platform", 502 - "bevy_reflect", 503 - "bevy_tasks", 504 - "bevy_utils", 505 - "bevy_window", 506 - "bitflags 2.9.0", 507 - "blake3", 508 - "crossbeam-channel", 509 - "derive_more", 510 - "disqualified", 511 - "downcast-rs 2.0.1", 512 - "either", 513 - "futures-io", 514 - "futures-lite", 515 - "js-sys", 516 - "parking_lot", 517 - "ron", 518 - "serde", 519 - "stackfuture", 520 - "thiserror 2.0.12", 521 - "tracing", 522 - "uuid", 523 - "wasm-bindgen", 524 - "wasm-bindgen-futures", 525 - "web-sys", 526 - ] 527 - 528 - [[package]] 529 - name = "bevy_asset_macros" 530 - version = "0.16.0" 531 - source = "registry+https://github.com/rust-lang/crates.io-index" 532 - checksum = "0bf8c00b5d532f8e5ac7b49af10602f9f7774a2d522cf0638323b5dfeee7b31c" 533 - dependencies = [ 534 - "bevy_macro_utils", 535 - "proc-macro2", 536 - "quote", 537 - "syn 2.0.101", 538 - ] 539 - 540 - [[package]] 541 - name = "bevy_audio" 542 - version = "0.16.0" 543 - source = "registry+https://github.com/rust-lang/crates.io-index" 544 - checksum = "74e54154e6369abdbaf5098e20424d59197c9b701d4f79fe8d0d2bde03d25f12" 545 - dependencies = [ 546 - "bevy_app", 547 - "bevy_asset", 548 - "bevy_derive", 549 - "bevy_ecs", 550 - "bevy_math", 551 - "bevy_reflect", 552 - "bevy_transform", 553 - "cpal", 554 - "rodio", 555 - "tracing", 556 - ] 557 - 558 - [[package]] 559 - name = "bevy_color" 560 - version = "0.16.1" 561 - source = "registry+https://github.com/rust-lang/crates.io-index" 562 - checksum = "ddf6a5ad35496bbc41713efbcf06ab72b9a310fabcab0f9db1debb56e8488c6e" 563 - dependencies = [ 564 - "bevy_math", 565 - "bevy_reflect", 566 - "bytemuck", 567 - "derive_more", 568 - "encase", 569 - "serde", 570 - "thiserror 2.0.12", 571 - "wgpu-types 24.0.0", 572 - ] 573 - 574 - [[package]] 575 - name = "bevy_core_pipeline" 576 - version = "0.16.0" 577 - source = "registry+https://github.com/rust-lang/crates.io-index" 578 - checksum = "55c2310717b9794e4a45513ee5946a7be0838852a4c1e185884195e1a8688ff3" 579 - dependencies = [ 580 - "bevy_app", 581 - "bevy_asset", 582 - "bevy_color", 583 - "bevy_derive", 584 - "bevy_diagnostic", 585 - "bevy_ecs", 586 - "bevy_image", 587 - "bevy_math", 588 - "bevy_platform", 589 - "bevy_reflect", 590 - "bevy_render", 591 - "bevy_transform", 592 - "bevy_utils", 593 - "bevy_window", 594 - "bitflags 2.9.0", 595 - "bytemuck", 596 - "nonmax", 597 - "radsort", 598 - "serde", 599 - "smallvec", 600 - "thiserror 2.0.12", 601 - "tracing", 602 - ] 603 - 604 - [[package]] 605 - name = "bevy_derive" 606 - version = "0.16.0" 607 - source = "registry+https://github.com/rust-lang/crates.io-index" 608 - checksum = "f626531b9c05c25a758ede228727bd11c2c2c8498ecbed9925044386d525a2a3" 609 - dependencies = [ 610 - "bevy_macro_utils", 611 - "quote", 612 - "syn 2.0.101", 613 - ] 614 - 615 - [[package]] 616 - name = "bevy_dev_tools" 617 - version = "0.16.0" 618 - source = "registry+https://github.com/rust-lang/crates.io-index" 619 - checksum = "3e1ae2246832d0fce2f6eb3b7f3d05084a06e36b24bb72cb8b9a171de7e4a341" 620 - dependencies = [ 621 - "bevy_app", 622 - "bevy_asset", 623 - "bevy_color", 624 - "bevy_diagnostic", 625 - "bevy_ecs", 626 - "bevy_input", 627 - "bevy_picking", 628 - "bevy_reflect", 629 - "bevy_render", 630 - "bevy_state", 631 - "bevy_text", 632 - "bevy_time", 633 - "bevy_ui", 634 - "bevy_utils", 635 - "bevy_window", 636 - "tracing", 637 - ] 638 - 639 - [[package]] 640 - name = "bevy_diagnostic" 641 - version = "0.16.0" 642 - source = "registry+https://github.com/rust-lang/crates.io-index" 643 - checksum = "048a1ff3944a534b8472516866284181eef0a75b6dd4d39b6e5925715e350766" 644 - dependencies = [ 645 - "bevy_app", 646 - "bevy_ecs", 647 - "bevy_platform", 648 - "bevy_tasks", 649 - "bevy_time", 650 - "bevy_utils", 651 - "const-fnv1a-hash", 652 - "log", 653 - "serde", 654 - "sysinfo", 655 - ] 656 - 657 - [[package]] 658 - name = "bevy_ecs" 659 - version = "0.16.0" 660 - source = "registry+https://github.com/rust-lang/crates.io-index" 661 - checksum = "d9e807b5d9aab3bb8dfe47e7a44c9ff088bad2ceefe299b80ac77609a87fe9d4" 662 - dependencies = [ 663 - "arrayvec", 664 - "bevy_ecs_macros", 665 - "bevy_platform", 666 - "bevy_ptr", 667 - "bevy_reflect", 668 - "bevy_tasks", 669 - "bevy_utils", 670 - "bitflags 2.9.0", 671 - "bumpalo", 672 - "concurrent-queue", 673 - "derive_more", 674 - "disqualified", 675 - "fixedbitset", 676 - "indexmap", 677 - "log", 678 - "nonmax", 679 - "serde", 680 - "smallvec", 681 - "thiserror 2.0.12", 682 - "variadics_please", 683 - ] 684 - 685 - [[package]] 686 - name = "bevy_ecs_macros" 687 - version = "0.16.0" 688 - source = "registry+https://github.com/rust-lang/crates.io-index" 689 - checksum = "467d7bb98aeb8dd30f36e6a773000c12a891d4f1bee2adc3841ec89cc8eaf54e" 690 - dependencies = [ 691 - "bevy_macro_utils", 692 - "proc-macro2", 693 - "quote", 694 - "syn 2.0.101", 695 - ] 696 - 697 - [[package]] 698 - name = "bevy_egui" 699 - version = "0.34.1" 700 - source = "registry+https://github.com/rust-lang/crates.io-index" 701 - checksum = "3a3d58a8afdb6100bca50251043a85320391742cae125d559f6cca3a16b84cdd" 702 - dependencies = [ 703 - "arboard", 704 - "bevy_app", 705 - "bevy_asset", 706 - "bevy_derive", 707 - "bevy_ecs", 708 - "bevy_image", 709 - "bevy_input", 710 - "bevy_log", 711 - "bevy_math", 712 - "bevy_picking", 713 - "bevy_platform", 714 - "bevy_reflect", 715 - "bevy_render", 716 - "bevy_time", 717 - "bevy_window", 718 - "bevy_winit", 719 - "bytemuck", 720 - "crossbeam-channel", 721 - "egui", 722 - "encase", 723 - "image 0.25.6", 724 - "js-sys", 725 - "thread_local", 726 - "wasm-bindgen", 727 - "wasm-bindgen-futures", 728 - "web-sys", 729 - "webbrowser", 730 - "wgpu-types 24.0.0", 731 - "winit", 732 - ] 733 - 734 - [[package]] 735 - name = "bevy_encase_derive" 736 - version = "0.16.0" 737 - source = "registry+https://github.com/rust-lang/crates.io-index" 738 - checksum = "b8bb31dc1090c6f8fabbf6b21994d19a12766e786885ee48ffc547f0f1fa7863" 739 - dependencies = [ 740 - "bevy_macro_utils", 741 - "encase_derive_impl", 742 - ] 743 - 744 - [[package]] 745 - name = "bevy_gilrs" 746 - version = "0.16.0" 747 - source = "registry+https://github.com/rust-lang/crates.io-index" 748 - checksum = "950c84596dbff8a9691a050c37bb610ef9398af56369c2c2dd6dc41ef7b717a5" 749 - dependencies = [ 750 - "bevy_app", 751 - "bevy_ecs", 752 - "bevy_input", 753 - "bevy_platform", 754 - "bevy_time", 755 - "bevy_utils", 756 - "gilrs", 757 - "thiserror 2.0.12", 758 - "tracing", 759 - ] 760 - 761 - [[package]] 762 - name = "bevy_gizmos" 763 - version = "0.16.0" 764 - source = "registry+https://github.com/rust-lang/crates.io-index" 765 - checksum = "54af8145b35ab2a830a6dd1058e23c1e1ddc4b893db79d295259ef82f51c7520" 766 - dependencies = [ 767 - "bevy_app", 768 - "bevy_asset", 769 - "bevy_color", 770 - "bevy_core_pipeline", 771 - "bevy_ecs", 772 - "bevy_gizmos_macros", 773 - "bevy_image", 774 - "bevy_math", 775 - "bevy_pbr", 776 - "bevy_reflect", 777 - "bevy_render", 778 - "bevy_sprite", 779 - "bevy_time", 780 - "bevy_transform", 781 - "bevy_utils", 782 - "bytemuck", 783 - "tracing", 784 - ] 785 - 786 - [[package]] 787 - name = "bevy_gizmos_macros" 788 - version = "0.16.0" 789 - source = "registry+https://github.com/rust-lang/crates.io-index" 790 - checksum = "40137ace61f092b7a09eba41d7d1e6aef941f53a7818b06ef86dcce7b6a1fd3f" 791 - dependencies = [ 792 - "bevy_macro_utils", 793 - "proc-macro2", 794 - "quote", 795 - "syn 2.0.101", 796 - ] 797 - 798 - [[package]] 799 - name = "bevy_gltf" 800 - version = "0.16.0" 801 - source = "registry+https://github.com/rust-lang/crates.io-index" 802 - checksum = "aa25b809ee024ef2682bafc1ca22ca8275552edb549dc6f69a030fdffd976c63" 803 - dependencies = [ 804 - "base64 0.22.1", 805 - "bevy_animation", 806 - "bevy_app", 807 - "bevy_asset", 808 - "bevy_color", 809 - "bevy_core_pipeline", 810 - "bevy_ecs", 811 - "bevy_image", 812 - "bevy_math", 813 - "bevy_mesh", 814 - "bevy_pbr", 815 - "bevy_platform", 816 - "bevy_reflect", 817 - "bevy_render", 818 - "bevy_scene", 819 - "bevy_tasks", 820 - "bevy_transform", 821 - "bevy_utils", 822 - "fixedbitset", 823 - "gltf", 824 - "itertools 0.14.0", 825 - "percent-encoding", 826 - "serde", 827 - "serde_json", 828 - "smallvec", 829 - "thiserror 2.0.12", 830 - "tracing", 831 - ] 832 - 833 - [[package]] 834 - name = "bevy_image" 835 - version = "0.16.0" 836 - source = "registry+https://github.com/rust-lang/crates.io-index" 837 - checksum = "840b25f7f58894c641739f756959028a04f519c448db7e2cd3e2e29fc5fd188d" 838 - dependencies = [ 839 - "bevy_app", 840 - "bevy_asset", 841 - "bevy_color", 842 - "bevy_math", 843 - "bevy_platform", 844 - "bevy_reflect", 845 - "bevy_utils", 846 - "bitflags 2.9.0", 847 - "bytemuck", 848 - "futures-lite", 849 - "guillotiere", 850 - "half", 851 - "image 0.25.6", 852 - "ktx2", 853 - "rectangle-pack", 854 - "ruzstd", 855 - "serde", 856 - "thiserror 2.0.12", 857 - "tracing", 858 - "wgpu-types 24.0.0", 859 - ] 860 - 861 - [[package]] 862 - name = "bevy_input" 863 - version = "0.16.0" 864 - source = "registry+https://github.com/rust-lang/crates.io-index" 865 - checksum = "763410715714f3d4d2dcdf077af276e2e4ea93fd8081b183d446d060ea95baaa" 866 - dependencies = [ 867 - "bevy_app", 868 - "bevy_ecs", 869 - "bevy_math", 870 - "bevy_platform", 871 - "bevy_reflect", 872 - "bevy_utils", 873 - "derive_more", 874 - "log", 875 - "smol_str", 876 - "thiserror 2.0.12", 877 - ] 878 - 879 - [[package]] 880 - name = "bevy_input_focus" 881 - version = "0.16.0" 882 - source = "registry+https://github.com/rust-lang/crates.io-index" 883 - checksum = "d7e7b4ed65e10927a39a987cf85ef98727dd319aafb6e6835f2cb05b883c6d66" 884 - dependencies = [ 885 - "bevy_app", 886 - "bevy_ecs", 887 - "bevy_input", 888 - "bevy_math", 889 - "bevy_reflect", 890 - "bevy_window", 891 - "log", 892 - "thiserror 2.0.12", 893 - ] 894 - 895 - [[package]] 896 - name = "bevy_internal" 897 - version = "0.16.0" 898 - source = "registry+https://github.com/rust-lang/crates.io-index" 899 - checksum = "526ffd64c58004cb97308826e896c07d0e23dc056c243b97492e31cdf72e2830" 900 - dependencies = [ 901 - "bevy_a11y", 902 - "bevy_animation", 903 - "bevy_app", 904 - "bevy_asset", 905 - "bevy_audio", 906 - "bevy_color", 907 - "bevy_core_pipeline", 908 - "bevy_derive", 909 - "bevy_dev_tools", 910 - "bevy_diagnostic", 911 - "bevy_ecs", 912 - "bevy_gilrs", 913 - "bevy_gizmos", 914 - "bevy_gltf", 915 - "bevy_image", 916 - "bevy_input", 917 - "bevy_input_focus", 918 - "bevy_log", 919 - "bevy_math", 920 - "bevy_pbr", 921 - "bevy_picking", 922 - "bevy_platform", 923 - "bevy_ptr", 924 - "bevy_reflect", 925 - "bevy_render", 926 - "bevy_scene", 927 - "bevy_sprite", 928 - "bevy_state", 929 - "bevy_tasks", 930 - "bevy_text", 931 - "bevy_time", 932 - "bevy_transform", 933 - "bevy_ui", 934 - "bevy_utils", 935 - "bevy_window", 936 - "bevy_winit", 937 - ] 938 - 939 - [[package]] 940 - name = "bevy_log" 941 - version = "0.16.0" 942 - source = "registry+https://github.com/rust-lang/crates.io-index" 943 - checksum = "7156df8d2f11135cf71c03eb4c11132b65201fd4f51648571e59e39c9c9ee2f6" 944 - dependencies = [ 945 - "android_log-sys", 946 - "bevy_app", 947 - "bevy_ecs", 948 - "bevy_utils", 949 - "tracing", 950 - "tracing-log", 951 - "tracing-oslog", 952 - "tracing-subscriber", 953 - "tracing-wasm", 954 - ] 955 - 956 - [[package]] 957 - name = "bevy_macro_utils" 958 - version = "0.16.0" 959 - source = "registry+https://github.com/rust-lang/crates.io-index" 960 - checksum = "7a2473db70d8785b5c75d6dd951a2e51e9be2c2311122db9692c79c9d887517b" 961 - dependencies = [ 962 - "parking_lot", 963 - "proc-macro2", 964 - "quote", 965 - "syn 2.0.101", 966 - "toml_edit", 967 - ] 968 - 969 - [[package]] 970 - name = "bevy_math" 971 - version = "0.16.0" 972 - source = "registry+https://github.com/rust-lang/crates.io-index" 973 - checksum = "f1a3a926d02dc501c6156a047510bdb538dcb1fa744eeba13c824b73ba88de55" 974 - dependencies = [ 975 - "approx", 976 - "bevy_reflect", 977 - "derive_more", 978 - "glam 0.29.3", 979 - "itertools 0.14.0", 980 - "libm", 981 - "rand", 982 - "rand_distr", 983 - "serde", 984 - "smallvec", 985 - "thiserror 2.0.12", 986 - "variadics_please", 987 - ] 988 - 989 - [[package]] 990 - name = "bevy_mesh" 991 - version = "0.16.0" 992 - source = "registry+https://github.com/rust-lang/crates.io-index" 993 - checksum = "12af58280c7453e32e2f083d86eaa4c9b9d03ea8683977108ded8f1930c539f2" 994 - dependencies = [ 995 - "bevy_asset", 996 - "bevy_derive", 997 - "bevy_ecs", 998 - "bevy_image", 999 - "bevy_math", 1000 - "bevy_mikktspace", 1001 - "bevy_platform", 1002 - "bevy_reflect", 1003 - "bevy_transform", 1004 - "bevy_utils", 1005 - "bitflags 2.9.0", 1006 - "bytemuck", 1007 - "hexasphere", 1008 - "serde", 1009 - "thiserror 2.0.12", 1010 - "tracing", 1011 - "wgpu-types 24.0.0", 1012 - ] 1013 - 1014 - [[package]] 1015 - name = "bevy_mikktspace" 1016 - version = "0.16.0" 1017 - source = "registry+https://github.com/rust-lang/crates.io-index" 1018 - checksum = "75e0258423c689f764556e36b5d9eebdbf624b29a1fd5b33cd9f6c42dcc4d5f3" 1019 - dependencies = [ 1020 - "glam 0.29.3", 1021 - ] 1022 - 1023 - [[package]] 1024 - name = "bevy_pbr" 1025 - version = "0.16.0" 1026 - source = "registry+https://github.com/rust-lang/crates.io-index" 1027 - checksum = "d9fe0de43b68bf9e5090a33efc963f125e9d3f9d97be9ebece7bcfdde1b6da80" 1028 - dependencies = [ 1029 - "bevy_app", 1030 - "bevy_asset", 1031 - "bevy_color", 1032 - "bevy_core_pipeline", 1033 - "bevy_derive", 1034 - "bevy_diagnostic", 1035 - "bevy_ecs", 1036 - "bevy_image", 1037 - "bevy_math", 1038 - "bevy_platform", 1039 - "bevy_reflect", 1040 - "bevy_render", 1041 - "bevy_transform", 1042 - "bevy_utils", 1043 - "bevy_window", 1044 - "bitflags 2.9.0", 1045 - "bytemuck", 1046 - "derive_more", 1047 - "fixedbitset", 1048 - "nonmax", 1049 - "offset-allocator", 1050 - "radsort", 1051 - "smallvec", 1052 - "static_assertions", 1053 - "thiserror 2.0.12", 1054 - "tracing", 1055 - ] 1056 - 1057 - [[package]] 1058 - name = "bevy_picking" 1059 - version = "0.16.0" 1060 - source = "registry+https://github.com/rust-lang/crates.io-index" 1061 - checksum = "f73674f62b1033006bd75c89033f5d3516386cfd7d43bb9f7665012c0ab14d22" 1062 - dependencies = [ 1063 - "bevy_app", 1064 - "bevy_asset", 1065 - "bevy_derive", 1066 - "bevy_ecs", 1067 - "bevy_input", 1068 - "bevy_math", 1069 - "bevy_mesh", 1070 - "bevy_platform", 1071 - "bevy_reflect", 1072 - "bevy_render", 1073 - "bevy_time", 1074 - "bevy_transform", 1075 - "bevy_utils", 1076 - "bevy_window", 1077 - "crossbeam-channel", 1078 - "tracing", 1079 - "uuid", 1080 - ] 1081 - 1082 - [[package]] 1083 - name = "bevy_platform" 1084 - version = "0.16.0" 1085 - source = "registry+https://github.com/rust-lang/crates.io-index" 1086 - checksum = "704db2c11b7bc31093df4fbbdd3769f9606a6a5287149f4b51f2680f25834ebc" 1087 - dependencies = [ 1088 - "cfg-if", 1089 - "critical-section", 1090 - "foldhash", 1091 - "getrandom 0.2.16", 1092 - "hashbrown", 1093 - "portable-atomic", 1094 - "portable-atomic-util", 1095 - "serde", 1096 - "spin", 1097 - "web-time", 1098 - ] 1099 - 1100 - [[package]] 1101 - name = "bevy_ptr" 1102 - version = "0.16.0" 1103 - source = "registry+https://github.com/rust-lang/crates.io-index" 1104 - checksum = "86f1275dfb4cfef4ffc90c3fa75408964864facf833acc932413d52aa5364ba4" 1105 - 1106 - [[package]] 1107 - name = "bevy_reflect" 1108 - version = "0.16.0" 1109 - source = "registry+https://github.com/rust-lang/crates.io-index" 1110 - checksum = "607ebacc31029cf2f39ac330eabf1d4bc411b159528ec08dbe6b0593eaccfd41" 1111 - dependencies = [ 1112 - "assert_type_match", 1113 - "bevy_platform", 1114 - "bevy_ptr", 1115 - "bevy_reflect_derive", 1116 - "bevy_utils", 1117 - "derive_more", 1118 - "disqualified", 1119 - "downcast-rs 2.0.1", 1120 - "erased-serde", 1121 - "foldhash", 1122 - "glam 0.29.3", 1123 - "petgraph", 1124 - "serde", 1125 - "smallvec", 1126 - "smol_str", 1127 - "thiserror 2.0.12", 1128 - "uuid", 1129 - "variadics_please", 1130 - "wgpu-types 24.0.0", 1131 - ] 1132 - 1133 - [[package]] 1134 - name = "bevy_reflect_derive" 1135 - version = "0.16.0" 1136 - source = "registry+https://github.com/rust-lang/crates.io-index" 1137 - checksum = "cf35e45e4eb239018369f63f2adc2107a54c329f9276d020e01eee1625b0238b" 1138 - dependencies = [ 1139 - "bevy_macro_utils", 1140 - "proc-macro2", 1141 - "quote", 1142 - "syn 2.0.101", 1143 - "uuid", 1144 - ] 1145 - 1146 - [[package]] 1147 - name = "bevy_render" 1148 - version = "0.16.0" 1149 - source = "registry+https://github.com/rust-lang/crates.io-index" 1150 - checksum = "85a7306235b3343b032801504f3e884b93abfb7ba58179fc555c479df509f349" 1151 - dependencies = [ 1152 - "async-channel", 1153 - "bevy_app", 1154 - "bevy_asset", 1155 - "bevy_color", 1156 - "bevy_derive", 1157 - "bevy_diagnostic", 1158 - "bevy_ecs", 1159 - "bevy_encase_derive", 1160 - "bevy_image", 1161 - "bevy_math", 1162 - "bevy_mesh", 1163 - "bevy_platform", 1164 - "bevy_reflect", 1165 - "bevy_render_macros", 1166 - "bevy_tasks", 1167 - "bevy_time", 1168 - "bevy_transform", 1169 - "bevy_utils", 1170 - "bevy_window", 1171 - "bitflags 2.9.0", 1172 - "bytemuck", 1173 - "codespan-reporting 0.11.1", 1174 - "derive_more", 1175 - "downcast-rs 2.0.1", 1176 - "encase", 1177 - "fixedbitset", 1178 - "futures-lite", 1179 - "image 0.25.6", 1180 - "indexmap", 1181 - "js-sys", 1182 - "ktx2", 1183 - "naga 24.0.0", 1184 - "naga_oil", 1185 - "nonmax", 1186 - "offset-allocator", 1187 - "send_wrapper", 1188 - "serde", 1189 - "smallvec", 1190 - "thiserror 2.0.12", 1191 - "tracing", 1192 - "variadics_please", 1193 - "wasm-bindgen", 1194 - "web-sys", 1195 - "wgpu 24.0.3", 1196 - ] 1197 - 1198 - [[package]] 1199 - name = "bevy_render_macros" 1200 - version = "0.16.0" 1201 - source = "registry+https://github.com/rust-lang/crates.io-index" 1202 - checksum = "b85c4fb26b66d3a257b655485d11b9b6df9d3c85026493ba8092767a5edfc1b2" 1203 - dependencies = [ 1204 - "bevy_macro_utils", 1205 - "proc-macro2", 1206 - "quote", 1207 - "syn 2.0.101", 1208 - ] 1209 - 1210 - [[package]] 1211 - name = "bevy_scene" 1212 - version = "0.16.0" 1213 - source = "registry+https://github.com/rust-lang/crates.io-index" 1214 - checksum = "e7b628f560f2d2fe9f35ecd4526627ba3992f082de03fd745536e4053a0266fe" 1215 - dependencies = [ 1216 - "bevy_app", 1217 - "bevy_asset", 1218 - "bevy_derive", 1219 - "bevy_ecs", 1220 - "bevy_platform", 1221 - "bevy_reflect", 1222 - "bevy_render", 1223 - "bevy_transform", 1224 - "bevy_utils", 1225 - "derive_more", 1226 - "serde", 1227 - "thiserror 2.0.12", 1228 - "uuid", 1229 - ] 1230 - 1231 - [[package]] 1232 - name = "bevy_sprite" 1233 - version = "0.16.0" 1234 - source = "registry+https://github.com/rust-lang/crates.io-index" 1235 - checksum = "01f97bf54fb1c37a1077139b59bb32bc77f7ca53149cfcaa512adbb69a2d492c" 1236 - dependencies = [ 1237 - "bevy_app", 1238 - "bevy_asset", 1239 - "bevy_color", 1240 - "bevy_core_pipeline", 1241 - "bevy_derive", 1242 - "bevy_ecs", 1243 - "bevy_image", 1244 - "bevy_math", 1245 - "bevy_picking", 1246 - "bevy_platform", 1247 - "bevy_reflect", 1248 - "bevy_render", 1249 - "bevy_transform", 1250 - "bevy_utils", 1251 - "bevy_window", 1252 - "bitflags 2.9.0", 1253 - "bytemuck", 1254 - "derive_more", 1255 - "fixedbitset", 1256 - "nonmax", 1257 - "radsort", 1258 - "tracing", 1259 - ] 1260 - 1261 - [[package]] 1262 - name = "bevy_state" 1263 - version = "0.16.0" 1264 - source = "registry+https://github.com/rust-lang/crates.io-index" 1265 - checksum = "682c343c354b191fe6669823bce3b0695ee1ae4ac36f582e29c436a72b67cdd5" 1266 - dependencies = [ 1267 - "bevy_app", 1268 - "bevy_ecs", 1269 - "bevy_platform", 1270 - "bevy_reflect", 1271 - "bevy_state_macros", 1272 - "bevy_utils", 1273 - "log", 1274 - "variadics_please", 1275 - ] 1276 - 1277 - [[package]] 1278 - name = "bevy_state_macros" 1279 - version = "0.16.0" 1280 - source = "registry+https://github.com/rust-lang/crates.io-index" 1281 - checksum = "55b4bf3970c4f0e60572901df4641656722172c222d71a80c430d36b0e31426c" 1282 - dependencies = [ 1283 - "bevy_macro_utils", 1284 - "proc-macro2", 1285 - "quote", 1286 - "syn 2.0.101", 1287 - ] 1288 - 1289 - [[package]] 1290 - name = "bevy_tasks" 1291 - version = "0.16.0" 1292 - source = "registry+https://github.com/rust-lang/crates.io-index" 1293 - checksum = "444c450b65e108855f42ecb6db0c041a56ea7d7f10cc6222f0ca95e9536a7d19" 1294 - dependencies = [ 1295 - "async-channel", 1296 - "async-executor", 1297 - "async-task", 1298 - "atomic-waker", 1299 - "bevy_platform", 1300 - "cfg-if", 1301 - "concurrent-queue", 1302 - "crossbeam-queue", 1303 - "derive_more", 1304 - "futures-channel", 1305 - "futures-lite", 1306 - "heapless", 1307 - "pin-project", 1308 - "wasm-bindgen-futures", 1309 - ] 1310 - 1311 - [[package]] 1312 - name = "bevy_text" 1313 - version = "0.16.0" 1314 - source = "registry+https://github.com/rust-lang/crates.io-index" 1315 - checksum = "8ef071262c5a9afbc39caba4c0b282c7d045fbb5cf33bdab1924bd2343403833" 1316 - dependencies = [ 1317 - "bevy_app", 1318 - "bevy_asset", 1319 - "bevy_color", 1320 - "bevy_derive", 1321 - "bevy_ecs", 1322 - "bevy_image", 1323 - "bevy_log", 1324 - "bevy_math", 1325 - "bevy_platform", 1326 - "bevy_reflect", 1327 - "bevy_render", 1328 - "bevy_sprite", 1329 - "bevy_transform", 1330 - "bevy_utils", 1331 - "bevy_window", 1332 - "cosmic-text", 1333 - "serde", 1334 - "smallvec", 1335 - "sys-locale", 1336 - "thiserror 2.0.12", 1337 - "tracing", 1338 - "unicode-bidi", 1339 - ] 1340 - 1341 - [[package]] 1342 - name = "bevy_time" 1343 - version = "0.16.0" 1344 - source = "registry+https://github.com/rust-lang/crates.io-index" 1345 - checksum = "456369ca10f8e039aaf273332744674844827854833ee29e28f9e161702f2f55" 1346 - dependencies = [ 1347 - "bevy_app", 1348 - "bevy_ecs", 1349 - "bevy_platform", 1350 - "bevy_reflect", 1351 - "crossbeam-channel", 1352 - "log", 1353 - "serde", 1354 - ] 1355 - 1356 - [[package]] 1357 - name = "bevy_transform" 1358 - version = "0.16.0" 1359 - source = "registry+https://github.com/rust-lang/crates.io-index" 1360 - checksum = "8479cdd5461246943956a7c8347e4e5d6ff857e57add889fb50eee0b5c26ab48" 1361 - dependencies = [ 1362 - "bevy_app", 1363 - "bevy_ecs", 1364 - "bevy_log", 1365 - "bevy_math", 1366 - "bevy_reflect", 1367 - "bevy_tasks", 1368 - "bevy_utils", 1369 - "derive_more", 1370 - "serde", 1371 - "thiserror 2.0.12", 1372 - ] 1373 - 1374 - [[package]] 1375 - name = "bevy_ui" 1376 - version = "0.16.0" 1377 - source = "registry+https://github.com/rust-lang/crates.io-index" 1378 - checksum = "110dc5d0059f112263512be8cd7bfe0466dfb7c26b9bf4c74529355249fd23f9" 1379 - dependencies = [ 1380 - "accesskit", 1381 - "bevy_a11y", 1382 - "bevy_app", 1383 - "bevy_asset", 1384 - "bevy_color", 1385 - "bevy_core_pipeline", 1386 - "bevy_derive", 1387 - "bevy_ecs", 1388 - "bevy_image", 1389 - "bevy_input", 1390 - "bevy_math", 1391 - "bevy_picking", 1392 - "bevy_platform", 1393 - "bevy_reflect", 1394 - "bevy_render", 1395 - "bevy_sprite", 1396 - "bevy_text", 1397 - "bevy_transform", 1398 - "bevy_utils", 1399 - "bevy_window", 1400 - "bytemuck", 1401 - "derive_more", 1402 - "nonmax", 1403 - "smallvec", 1404 - "taffy", 1405 - "thiserror 2.0.12", 1406 - "tracing", 1407 - ] 1408 - 1409 - [[package]] 1410 - name = "bevy_utils" 1411 - version = "0.16.0" 1412 - source = "registry+https://github.com/rust-lang/crates.io-index" 1413 - checksum = "ac2da3b3c1f94dadefcbe837aaa4aa119fcea37f7bdc5307eb05b4ede1921e24" 1414 - dependencies = [ 1415 - "bevy_platform", 1416 - "thread_local", 1417 - ] 1418 - 1419 - [[package]] 1420 - name = "bevy_viewer" 1421 - version = "0.1.0" 1422 - dependencies = [ 1423 - "bevy", 1424 - "bevy_egui", 1425 - "binrw", 1426 - "futures", 1427 - "image 0.25.6", 1428 - "vfl", 1429 - ] 1430 - 1431 - [[package]] 1432 - name = "bevy_window" 1433 - version = "0.16.0" 1434 - source = "registry+https://github.com/rust-lang/crates.io-index" 1435 - checksum = "0d83327cc5584da463d12b7a88ddb97f9e006828832287e1564531171fffdeb4" 1436 - dependencies = [ 1437 - "android-activity", 1438 - "bevy_app", 1439 - "bevy_ecs", 1440 - "bevy_input", 1441 - "bevy_math", 1442 - "bevy_platform", 1443 - "bevy_reflect", 1444 - "bevy_utils", 1445 - "log", 1446 - "raw-window-handle", 1447 - "serde", 1448 - "smol_str", 1449 - ] 1450 - 1451 - [[package]] 1452 - name = "bevy_winit" 1453 - version = "0.16.0" 1454 - source = "registry+https://github.com/rust-lang/crates.io-index" 1455 - checksum = "57b14928923ae4274f4b867dce3d0e7b2c8a31bebcb0f6e65a4261c3e0765064" 1456 - dependencies = [ 1457 - "accesskit", 1458 - "accesskit_winit", 1459 - "approx", 1460 - "bevy_a11y", 1461 - "bevy_app", 1462 - "bevy_asset", 1463 - "bevy_derive", 1464 - "bevy_ecs", 1465 - "bevy_image", 1466 - "bevy_input", 1467 - "bevy_input_focus", 1468 - "bevy_log", 1469 - "bevy_math", 1470 - "bevy_platform", 1471 - "bevy_reflect", 1472 - "bevy_tasks", 1473 - "bevy_utils", 1474 - "bevy_window", 1475 - "bytemuck", 1476 - "cfg-if", 1477 - "crossbeam-channel", 1478 - "raw-window-handle", 1479 - "tracing", 1480 - "wasm-bindgen", 1481 - "web-sys", 1482 - "wgpu-types 24.0.0", 1483 - "winit", 1484 - ] 1485 - 1486 - [[package]] 1487 - name = "bindgen" 1488 - version = "0.70.1" 1489 - source = "registry+https://github.com/rust-lang/crates.io-index" 1490 - checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" 1491 - dependencies = [ 1492 - "bitflags 2.9.0", 1493 - "cexpr", 1494 - "clang-sys", 1495 - "itertools 0.13.0", 1496 - "log", 1497 - "prettyplease", 1498 - "proc-macro2", 1499 - "quote", 1500 - "regex", 1501 - "rustc-hash", 1502 - "shlex", 1503 - "syn 2.0.101", 1504 - ] 1505 - 1506 - [[package]] 1507 189 name = "binrw" 1508 190 version = "0.15.0" 1509 191 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1529 211 1530 212 [[package]] 1531 213 name = "bit-set" 1532 - version = "0.5.3" 1533 - source = "registry+https://github.com/rust-lang/crates.io-index" 1534 - checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" 1535 - dependencies = [ 1536 - "bit-vec 0.6.3", 1537 - ] 1538 - 1539 - [[package]] 1540 - name = "bit-set" 1541 214 version = "0.8.0" 1542 215 source = "registry+https://github.com/rust-lang/crates.io-index" 1543 216 checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" 1544 217 dependencies = [ 1545 - "bit-vec 0.8.0", 218 + "bit-vec", 1546 219 ] 1547 - 1548 - [[package]] 1549 - name = "bit-vec" 1550 - version = "0.6.3" 1551 - source = "registry+https://github.com/rust-lang/crates.io-index" 1552 - checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" 1553 220 1554 221 [[package]] 1555 222 name = "bit-vec" ··· 1585 252 checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2" 1586 253 1587 254 [[package]] 1588 - name = "blake3" 1589 - version = "1.8.2" 1590 - source = "registry+https://github.com/rust-lang/crates.io-index" 1591 - checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" 1592 - dependencies = [ 1593 - "arrayref", 1594 - "arrayvec", 1595 - "cc", 1596 - "cfg-if", 1597 - "constant_time_eq", 1598 - ] 1599 - 1600 - [[package]] 1601 255 name = "block" 1602 256 version = "0.1.6" 1603 257 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1609 263 source = "registry+https://github.com/rust-lang/crates.io-index" 1610 264 checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" 1611 265 dependencies = [ 1612 - "objc2 0.5.2", 1613 - ] 1614 - 1615 - [[package]] 1616 - name = "blocking" 1617 - version = "1.6.1" 1618 - source = "registry+https://github.com/rust-lang/crates.io-index" 1619 - checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" 1620 - dependencies = [ 1621 - "async-channel", 1622 - "async-task", 1623 - "futures-io", 1624 - "futures-lite", 1625 - "piper", 266 + "objc2", 1626 267 ] 1627 268 1628 269 [[package]] ··· 1719 360 checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 1720 361 1721 362 [[package]] 1722 - name = "cexpr" 1723 - version = "0.6.0" 1724 - source = "registry+https://github.com/rust-lang/crates.io-index" 1725 - checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" 1726 - dependencies = [ 1727 - "nom", 1728 - ] 1729 - 1730 - [[package]] 1731 363 name = "cfg-expr" 1732 364 version = "0.15.8" 1733 365 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1750 382 checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 1751 383 1752 384 [[package]] 1753 - name = "clang-sys" 1754 - version = "1.8.1" 1755 - source = "registry+https://github.com/rust-lang/crates.io-index" 1756 - checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" 1757 - dependencies = [ 1758 - "glob", 1759 - "libc", 1760 - "libloading", 1761 - ] 1762 - 1763 - [[package]] 1764 - name = "clipboard-win" 1765 - version = "5.4.0" 1766 - source = "registry+https://github.com/rust-lang/crates.io-index" 1767 - checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" 1768 - dependencies = [ 1769 - "error-code", 1770 - ] 1771 - 1772 - [[package]] 1773 - name = "codespan-reporting" 1774 - version = "0.11.1" 1775 - source = "registry+https://github.com/rust-lang/crates.io-index" 1776 - checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" 1777 - dependencies = [ 1778 - "termcolor", 1779 - "unicode-width", 1780 - ] 1781 - 1782 - [[package]] 1783 385 name = "codespan-reporting" 1784 386 version = "0.12.0" 1785 387 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1813 415 checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" 1814 416 dependencies = [ 1815 417 "crossbeam-utils", 1816 - "portable-atomic", 1817 - ] 1818 - 1819 - [[package]] 1820 - name = "console_error_panic_hook" 1821 - version = "0.1.7" 1822 - source = "registry+https://github.com/rust-lang/crates.io-index" 1823 - checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" 1824 - dependencies = [ 1825 - "cfg-if", 1826 - "wasm-bindgen", 1827 - ] 1828 - 1829 - [[package]] 1830 - name = "const-fnv1a-hash" 1831 - version = "1.1.0" 1832 - source = "registry+https://github.com/rust-lang/crates.io-index" 1833 - checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" 1834 - 1835 - [[package]] 1836 - name = "const_panic" 1837 - version = "0.2.12" 1838 - source = "registry+https://github.com/rust-lang/crates.io-index" 1839 - checksum = "2459fc9262a1aa204eb4b5764ad4f189caec88aea9634389c0a25f8be7f6265e" 1840 - 1841 - [[package]] 1842 - name = "const_soft_float" 1843 - version = "0.1.4" 1844 - source = "registry+https://github.com/rust-lang/crates.io-index" 1845 - checksum = "87ca1caa64ef4ed453e68bb3db612e51cf1b2f5b871337f0fcab1c8f87cc3dff" 1846 - 1847 - [[package]] 1848 - name = "constant_time_eq" 1849 - version = "0.3.1" 1850 - source = "registry+https://github.com/rust-lang/crates.io-index" 1851 - checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" 1852 - 1853 - [[package]] 1854 - name = "constgebra" 1855 - version = "0.1.4" 1856 - source = "registry+https://github.com/rust-lang/crates.io-index" 1857 - checksum = "e1aaf9b65849a68662ac6c0810c8893a765c960b907dd7cfab9c4a50bf764fbc" 1858 - dependencies = [ 1859 - "const_soft_float", 1860 418 ] 1861 419 1862 420 [[package]] ··· 1879 437 ] 1880 438 1881 439 [[package]] 1882 - name = "core-foundation" 1883 - version = "0.10.0" 1884 - source = "registry+https://github.com/rust-lang/crates.io-index" 1885 - checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" 1886 - dependencies = [ 1887 - "core-foundation-sys", 1888 - "libc", 1889 - ] 1890 - 1891 - [[package]] 1892 440 name = "core-foundation-sys" 1893 441 version = "0.8.7" 1894 442 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1901 449 checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" 1902 450 dependencies = [ 1903 451 "bitflags 1.3.2", 1904 - "core-foundation 0.9.4", 452 + "core-foundation", 1905 453 "core-graphics-types", 1906 454 "foreign-types", 1907 455 "libc", ··· 1914 462 checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" 1915 463 dependencies = [ 1916 464 "bitflags 1.3.2", 1917 - "core-foundation 0.9.4", 465 + "core-foundation", 1918 466 "libc", 1919 467 ] 1920 468 1921 469 [[package]] 1922 - name = "coreaudio-rs" 1923 - version = "0.11.3" 1924 - source = "registry+https://github.com/rust-lang/crates.io-index" 1925 - checksum = "321077172d79c662f64f5071a03120748d5bb652f5231570141be24cfcd2bace" 1926 - dependencies = [ 1927 - "bitflags 1.3.2", 1928 - "core-foundation-sys", 1929 - "coreaudio-sys", 1930 - ] 1931 - 1932 - [[package]] 1933 - name = "coreaudio-sys" 1934 - version = "0.2.16" 1935 - source = "registry+https://github.com/rust-lang/crates.io-index" 1936 - checksum = "2ce857aa0b77d77287acc1ac3e37a05a8c95a2af3647d23b15f263bdaeb7562b" 1937 - dependencies = [ 1938 - "bindgen", 1939 - ] 1940 - 1941 - [[package]] 1942 - name = "cosmic-text" 1943 - version = "0.13.2" 1944 - source = "registry+https://github.com/rust-lang/crates.io-index" 1945 - checksum = "e418dd4f5128c3e93eab12246391c54a20c496811131f85754dc8152ee207892" 1946 - dependencies = [ 1947 - "bitflags 2.9.0", 1948 - "fontdb", 1949 - "log", 1950 - "rangemap", 1951 - "rustc-hash", 1952 - "rustybuzz", 1953 - "self_cell", 1954 - "smol_str", 1955 - "swash", 1956 - "sys-locale", 1957 - "ttf-parser 0.21.1", 1958 - "unicode-bidi", 1959 - "unicode-linebreak", 1960 - "unicode-script", 1961 - "unicode-segmentation", 1962 - ] 1963 - 1964 - [[package]] 1965 - name = "cpal" 1966 - version = "0.15.3" 1967 - source = "registry+https://github.com/rust-lang/crates.io-index" 1968 - checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779" 1969 - dependencies = [ 1970 - "alsa", 1971 - "core-foundation-sys", 1972 - "coreaudio-rs", 1973 - "dasp_sample", 1974 - "jni", 1975 - "js-sys", 1976 - "libc", 1977 - "mach2", 1978 - "ndk 0.8.0", 1979 - "ndk-context", 1980 - "oboe", 1981 - "wasm-bindgen", 1982 - "wasm-bindgen-futures", 1983 - "web-sys", 1984 - "windows 0.54.0", 1985 - ] 1986 - 1987 - [[package]] 1988 470 name = "crc32fast" 1989 471 version = "1.4.2" 1990 472 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1994 476 ] 1995 477 1996 478 [[package]] 1997 - name = "critical-section" 1998 - version = "1.2.0" 1999 - source = "registry+https://github.com/rust-lang/crates.io-index" 2000 - checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" 2001 - 2002 - [[package]] 2003 - name = "crossbeam-channel" 2004 - version = "0.5.15" 2005 - source = "registry+https://github.com/rust-lang/crates.io-index" 2006 - checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" 2007 - dependencies = [ 2008 - "crossbeam-utils", 2009 - ] 2010 - 2011 - [[package]] 2012 479 name = "crossbeam-deque" 2013 480 version = "0.8.6" 2014 481 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2028 495 ] 2029 496 2030 497 [[package]] 2031 - name = "crossbeam-queue" 2032 - version = "0.3.12" 2033 - source = "registry+https://github.com/rust-lang/crates.io-index" 2034 - checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" 2035 - dependencies = [ 2036 - "crossbeam-utils", 2037 - ] 2038 - 2039 - [[package]] 2040 498 name = "crossbeam-utils" 2041 499 version = "0.8.21" 2042 500 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2049 507 checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" 2050 508 2051 509 [[package]] 2052 - name = "ctrlc" 2053 - version = "3.4.6" 2054 - source = "registry+https://github.com/rust-lang/crates.io-index" 2055 - checksum = "697b5419f348fd5ae2478e8018cb016c00a5881c7f46c717de98ffd135a5651c" 2056 - dependencies = [ 2057 - "nix", 2058 - "windows-sys 0.59.0", 2059 - ] 2060 - 2061 - [[package]] 2062 510 name = "cursor-icon" 2063 511 version = "1.1.0" 2064 512 source = "registry+https://github.com/rust-lang/crates.io-index" 2065 513 checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" 2066 514 2067 515 [[package]] 2068 - name = "dasp_sample" 2069 - version = "0.11.0" 2070 - source = "registry+https://github.com/rust-lang/crates.io-index" 2071 - checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" 2072 - 2073 - [[package]] 2074 - name = "data-encoding" 2075 - version = "2.9.0" 2076 - source = "registry+https://github.com/rust-lang/crates.io-index" 2077 - checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" 2078 - 2079 - [[package]] 2080 - name = "derive_more" 2081 - version = "1.0.0" 2082 - source = "registry+https://github.com/rust-lang/crates.io-index" 2083 - checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" 2084 - dependencies = [ 2085 - "derive_more-impl", 2086 - ] 2087 - 2088 - [[package]] 2089 - name = "derive_more-impl" 2090 - version = "1.0.0" 2091 - source = "registry+https://github.com/rust-lang/crates.io-index" 2092 - checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" 2093 - dependencies = [ 2094 - "proc-macro2", 2095 - "quote", 2096 - "syn 2.0.101", 2097 - "unicode-xid", 2098 - ] 2099 - 2100 - [[package]] 2101 516 name = "dispatch" 2102 517 version = "0.2.0" 2103 518 source = "registry+https://github.com/rust-lang/crates.io-index" 2104 519 checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 2105 520 2106 521 [[package]] 2107 - name = "dispatch2" 2108 - version = "0.3.0" 2109 - source = "registry+https://github.com/rust-lang/crates.io-index" 2110 - checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" 2111 - dependencies = [ 2112 - "bitflags 2.9.0", 2113 - "objc2 0.6.1", 2114 - ] 2115 - 2116 - [[package]] 2117 - name = "displaydoc" 2118 - version = "0.2.5" 2119 - source = "registry+https://github.com/rust-lang/crates.io-index" 2120 - checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 2121 - dependencies = [ 2122 - "proc-macro2", 2123 - "quote", 2124 - "syn 2.0.101", 2125 - ] 2126 - 2127 - [[package]] 2128 - name = "disqualified" 2129 - version = "1.0.0" 2130 - source = "registry+https://github.com/rust-lang/crates.io-index" 2131 - checksum = "c9c272297e804878a2a4b707cfcfc6d2328b5bb936944613b4fdf2b9269afdfd" 2132 - 2133 - [[package]] 2134 522 name = "dlib" 2135 523 version = "0.5.2" 2136 524 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2155 543 checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" 2156 544 2157 545 [[package]] 2158 - name = "downcast-rs" 2159 - version = "2.0.1" 2160 - source = "registry+https://github.com/rust-lang/crates.io-index" 2161 - checksum = "ea8a8b81cacc08888170eef4d13b775126db426d0b348bee9d18c2c1eaf123cf" 2162 - 2163 - [[package]] 2164 546 name = "dpi" 2165 547 version = "0.1.2" 2166 548 source = "registry+https://github.com/rust-lang/crates.io-index" 2167 549 checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" 2168 550 2169 551 [[package]] 2170 - name = "ecolor" 2171 - version = "0.31.1" 2172 - source = "registry+https://github.com/rust-lang/crates.io-index" 2173 - checksum = "bc4feb366740ded31a004a0e4452fbf84e80ef432ecf8314c485210229672fd1" 2174 - dependencies = [ 2175 - "bytemuck", 2176 - "emath", 2177 - ] 2178 - 2179 - [[package]] 2180 - name = "egui" 2181 - version = "0.31.1" 2182 - source = "registry+https://github.com/rust-lang/crates.io-index" 2183 - checksum = "25dd34cec49ab55d85ebf70139cb1ccd29c977ef6b6ba4fe85489d6877ee9ef3" 2184 - dependencies = [ 2185 - "ahash", 2186 - "bitflags 2.9.0", 2187 - "emath", 2188 - "epaint", 2189 - "nohash-hasher", 2190 - "profiling", 2191 - ] 2192 - 2193 - [[package]] 2194 552 name = "either" 2195 553 version = "1.15.0" 2196 554 source = "registry+https://github.com/rust-lang/crates.io-index" 2197 555 checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" 2198 556 2199 557 [[package]] 2200 - name = "emath" 2201 - version = "0.31.1" 2202 - source = "registry+https://github.com/rust-lang/crates.io-index" 2203 - checksum = "9e4cadcff7a5353ba72b7fea76bf2122b5ebdbc68e8155aa56dfdea90083fe1b" 2204 - dependencies = [ 2205 - "bytemuck", 2206 - ] 2207 - 2208 - [[package]] 2209 - name = "encase" 2210 - version = "0.10.0" 2211 - source = "registry+https://github.com/rust-lang/crates.io-index" 2212 - checksum = "b0a05902cf601ed11d564128448097b98ebe3c6574bd7b6a653a3d56d54aa020" 2213 - dependencies = [ 2214 - "const_panic", 2215 - "encase_derive", 2216 - "glam 0.29.3", 2217 - "thiserror 1.0.69", 2218 - ] 2219 - 2220 - [[package]] 2221 - name = "encase_derive" 2222 - version = "0.10.0" 2223 - source = "registry+https://github.com/rust-lang/crates.io-index" 2224 - checksum = "181d475b694e2dd56ae919ce7699d344d1fd259292d590c723a50d1189a2ea85" 2225 - dependencies = [ 2226 - "encase_derive_impl", 2227 - ] 2228 - 2229 - [[package]] 2230 - name = "encase_derive_impl" 2231 - version = "0.10.0" 2232 - source = "registry+https://github.com/rust-lang/crates.io-index" 2233 - checksum = "f97b51c5cc57ef7c5f7a0c57c250251c49ee4c28f819f87ac32f4aceabc36792" 2234 - dependencies = [ 2235 - "proc-macro2", 2236 - "quote", 2237 - "syn 2.0.101", 2238 - ] 2239 - 2240 - [[package]] 2241 - name = "epaint" 2242 - version = "0.31.1" 2243 - source = "registry+https://github.com/rust-lang/crates.io-index" 2244 - checksum = "41fcc0f5a7c613afd2dee5e4b30c3e6acafb8ad6f0edb06068811f708a67c562" 2245 - dependencies = [ 2246 - "ab_glyph", 2247 - "ahash", 2248 - "bytemuck", 2249 - "ecolor", 2250 - "emath", 2251 - "epaint_default_fonts", 2252 - "nohash-hasher", 2253 - "parking_lot", 2254 - "profiling", 2255 - ] 2256 - 2257 - [[package]] 2258 - name = "epaint_default_fonts" 2259 - version = "0.31.1" 2260 - source = "registry+https://github.com/rust-lang/crates.io-index" 2261 - checksum = "fc7e7a64c02cf7a5b51e745a9e45f60660a286f151c238b9d397b3e923f5082f" 2262 - 2263 - [[package]] 2264 558 name = "equivalent" 2265 559 version = "1.0.2" 2266 560 source = "registry+https://github.com/rust-lang/crates.io-index" 2267 561 checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 2268 562 2269 563 [[package]] 2270 - name = "erased-serde" 2271 - version = "0.4.6" 2272 - source = "registry+https://github.com/rust-lang/crates.io-index" 2273 - checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" 2274 - dependencies = [ 2275 - "serde", 2276 - "typeid", 2277 - ] 2278 - 2279 - [[package]] 2280 564 name = "errno" 2281 565 version = "0.3.11" 2282 566 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2287 571 ] 2288 572 2289 573 [[package]] 2290 - name = "error-code" 2291 - version = "3.3.2" 2292 - source = "registry+https://github.com/rust-lang/crates.io-index" 2293 - checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" 2294 - 2295 - [[package]] 2296 - name = "euclid" 2297 - version = "0.22.11" 2298 - source = "registry+https://github.com/rust-lang/crates.io-index" 2299 - checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" 2300 - dependencies = [ 2301 - "num-traits", 2302 - ] 2303 - 2304 - [[package]] 2305 - name = "event-listener" 2306 - version = "5.4.0" 2307 - source = "registry+https://github.com/rust-lang/crates.io-index" 2308 - checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" 2309 - dependencies = [ 2310 - "concurrent-queue", 2311 - "parking", 2312 - "pin-project-lite", 2313 - ] 2314 - 2315 - [[package]] 2316 - name = "event-listener-strategy" 2317 - version = "0.5.4" 2318 - source = "registry+https://github.com/rust-lang/crates.io-index" 2319 - checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" 2320 - dependencies = [ 2321 - "event-listener", 2322 - "pin-project-lite", 2323 - ] 2324 - 2325 - [[package]] 2326 574 name = "exr" 2327 575 version = "1.73.0" 2328 576 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2338 586 ] 2339 587 2340 588 [[package]] 2341 - name = "fastrand" 2342 - version = "2.3.0" 2343 - source = "registry+https://github.com/rust-lang/crates.io-index" 2344 - checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 2345 - 2346 - [[package]] 2347 589 name = "fdeflate" 2348 590 version = "0.3.7" 2349 591 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2353 595 ] 2354 596 2355 597 [[package]] 2356 - name = "fixedbitset" 2357 - version = "0.5.7" 2358 - source = "registry+https://github.com/rust-lang/crates.io-index" 2359 - checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" 2360 - 2361 - [[package]] 2362 598 name = "flate2" 2363 599 version = "1.1.1" 2364 600 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2369 605 ] 2370 606 2371 607 [[package]] 2372 - name = "fnv" 2373 - version = "1.0.7" 2374 - source = "registry+https://github.com/rust-lang/crates.io-index" 2375 - checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 2376 - 2377 - [[package]] 2378 608 name = "foldhash" 2379 609 version = "0.1.5" 2380 610 source = "registry+https://github.com/rust-lang/crates.io-index" 2381 611 checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" 2382 612 2383 613 [[package]] 2384 - name = "font-types" 2385 - version = "0.9.0" 2386 - source = "registry+https://github.com/rust-lang/crates.io-index" 2387 - checksum = "02a596f5713680923a2080d86de50fe472fb290693cf0f701187a1c8b36996b7" 2388 - dependencies = [ 2389 - "bytemuck", 2390 - ] 2391 - 2392 - [[package]] 2393 - name = "fontconfig-parser" 2394 - version = "0.5.7" 2395 - source = "registry+https://github.com/rust-lang/crates.io-index" 2396 - checksum = "c1fcfcd44ca6e90c921fee9fa665d530b21ef1327a4c1a6c5250ea44b776ada7" 2397 - dependencies = [ 2398 - "roxmltree", 2399 - ] 2400 - 2401 - [[package]] 2402 - name = "fontdb" 2403 - version = "0.16.2" 2404 - source = "registry+https://github.com/rust-lang/crates.io-index" 2405 - checksum = "b0299020c3ef3f60f526a4f64ab4a3d4ce116b1acbf24cdd22da0068e5d81dc3" 2406 - dependencies = [ 2407 - "fontconfig-parser", 2408 - "log", 2409 - "memmap2", 2410 - "slotmap", 2411 - "tinyvec", 2412 - "ttf-parser 0.20.0", 2413 - ] 2414 - 2415 - [[package]] 2416 614 name = "foreign-types" 2417 615 version = "0.5.0" 2418 616 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2440 638 checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" 2441 639 2442 640 [[package]] 2443 - name = "form_urlencoded" 2444 - version = "1.2.1" 2445 - source = "registry+https://github.com/rust-lang/crates.io-index" 2446 - checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 2447 - dependencies = [ 2448 - "percent-encoding", 2449 - ] 2450 - 2451 - [[package]] 2452 - name = "futures" 2453 - version = "0.3.31" 2454 - source = "registry+https://github.com/rust-lang/crates.io-index" 2455 - checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" 2456 - dependencies = [ 2457 - "futures-channel", 2458 - "futures-core", 2459 - "futures-executor", 2460 - "futures-io", 2461 - "futures-sink", 2462 - "futures-task", 2463 - "futures-util", 2464 - ] 2465 - 2466 - [[package]] 2467 - name = "futures-channel" 2468 - version = "0.3.31" 2469 - source = "registry+https://github.com/rust-lang/crates.io-index" 2470 - checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" 2471 - dependencies = [ 2472 - "futures-core", 2473 - "futures-sink", 2474 - ] 2475 - 2476 - [[package]] 2477 641 name = "futures-core" 2478 642 version = "0.3.31" 2479 643 source = "registry+https://github.com/rust-lang/crates.io-index" 2480 644 checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 2481 645 2482 646 [[package]] 2483 - name = "futures-executor" 2484 - version = "0.3.31" 2485 - source = "registry+https://github.com/rust-lang/crates.io-index" 2486 - checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" 2487 - dependencies = [ 2488 - "futures-core", 2489 - "futures-task", 2490 - "futures-util", 2491 - ] 2492 - 2493 - [[package]] 2494 647 name = "futures-intrusive" 2495 648 version = "0.5.0" 2496 649 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2502 655 ] 2503 656 2504 657 [[package]] 2505 - name = "futures-io" 2506 - version = "0.3.31" 2507 - source = "registry+https://github.com/rust-lang/crates.io-index" 2508 - checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" 2509 - 2510 - [[package]] 2511 - name = "futures-lite" 2512 - version = "2.6.0" 2513 - source = "registry+https://github.com/rust-lang/crates.io-index" 2514 - checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" 2515 - dependencies = [ 2516 - "fastrand", 2517 - "futures-core", 2518 - "futures-io", 2519 - "parking", 2520 - "pin-project-lite", 2521 - ] 2522 - 2523 - [[package]] 2524 - name = "futures-macro" 2525 - version = "0.3.31" 2526 - source = "registry+https://github.com/rust-lang/crates.io-index" 2527 - checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" 2528 - dependencies = [ 2529 - "proc-macro2", 2530 - "quote", 2531 - "syn 2.0.101", 2532 - ] 2533 - 2534 - [[package]] 2535 - name = "futures-sink" 2536 - version = "0.3.31" 2537 - source = "registry+https://github.com/rust-lang/crates.io-index" 2538 - checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" 2539 - 2540 - [[package]] 2541 - name = "futures-task" 2542 - version = "0.3.31" 2543 - source = "registry+https://github.com/rust-lang/crates.io-index" 2544 - checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 2545 - 2546 - [[package]] 2547 - name = "futures-util" 2548 - version = "0.3.31" 2549 - source = "registry+https://github.com/rust-lang/crates.io-index" 2550 - checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 2551 - dependencies = [ 2552 - "futures-channel", 2553 - "futures-core", 2554 - "futures-io", 2555 - "futures-macro", 2556 - "futures-sink", 2557 - "futures-task", 2558 - "memchr", 2559 - "pin-project-lite", 2560 - "pin-utils", 2561 - "slab", 2562 - ] 2563 - 2564 - [[package]] 2565 658 name = "gethostname" 2566 659 version = "0.4.3" 2567 660 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2578 671 checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" 2579 672 dependencies = [ 2580 673 "cfg-if", 2581 - "js-sys", 2582 674 "libc", 2583 675 "wasi 0.11.0+wasi-snapshot-preview1", 2584 - "wasm-bindgen", 2585 676 ] 2586 677 2587 678 [[package]] ··· 2607 698 ] 2608 699 2609 700 [[package]] 2610 - name = "gilrs" 2611 - version = "0.11.0" 2612 - source = "registry+https://github.com/rust-lang/crates.io-index" 2613 - checksum = "bbb2c998745a3c1ac90f64f4f7b3a54219fd3612d7705e7798212935641ed18f" 2614 - dependencies = [ 2615 - "fnv", 2616 - "gilrs-core", 2617 - "log", 2618 - "uuid", 2619 - "vec_map", 2620 - ] 2621 - 2622 - [[package]] 2623 - name = "gilrs-core" 2624 - version = "0.6.4" 2625 - source = "registry+https://github.com/rust-lang/crates.io-index" 2626 - checksum = "a6d95ae10ce5aa99543a28cf74e41c11f3b9e3c14f0452bbde46024753cd683e" 2627 - dependencies = [ 2628 - "core-foundation 0.10.0", 2629 - "inotify", 2630 - "io-kit-sys", 2631 - "js-sys", 2632 - "libc", 2633 - "libudev-sys", 2634 - "log", 2635 - "nix", 2636 - "uuid", 2637 - "vec_map", 2638 - "wasm-bindgen", 2639 - "web-sys", 2640 - "windows 0.61.1", 2641 - ] 2642 - 2643 - [[package]] 2644 701 name = "gl_generator" 2645 702 version = "0.14.0" 2646 703 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2653 710 2654 711 [[package]] 2655 712 name = "glam" 2656 - version = "0.29.3" 2657 - source = "registry+https://github.com/rust-lang/crates.io-index" 2658 - checksum = "8babf46d4c1c9d92deac9f7be466f76dfc4482b6452fc5024b5e8daf6ffeb3ee" 2659 - dependencies = [ 2660 - "bytemuck", 2661 - "libm", 2662 - "rand", 2663 - "serde", 2664 - ] 2665 - 2666 - [[package]] 2667 - name = "glam" 2668 713 version = "0.30.3" 2669 714 source = "registry+https://github.com/rust-lang/crates.io-index" 2670 715 checksum = "6b46b9ca4690308844c644e7c634d68792467260e051c8543e0c7871662b3ba7" ··· 2674 719 ] 2675 720 2676 721 [[package]] 2677 - name = "glob" 2678 - version = "0.3.2" 2679 - source = "registry+https://github.com/rust-lang/crates.io-index" 2680 - checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" 2681 - 2682 - [[package]] 2683 722 name = "glow" 2684 723 version = "0.16.0" 2685 724 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2692 731 ] 2693 732 2694 733 [[package]] 2695 - name = "gltf" 2696 - version = "1.4.1" 2697 - source = "registry+https://github.com/rust-lang/crates.io-index" 2698 - checksum = "e3ce1918195723ce6ac74e80542c5a96a40c2b26162c1957a5cd70799b8cacf7" 2699 - dependencies = [ 2700 - "byteorder", 2701 - "gltf-json", 2702 - "lazy_static", 2703 - "serde_json", 2704 - ] 2705 - 2706 - [[package]] 2707 - name = "gltf-derive" 2708 - version = "1.4.1" 2709 - source = "registry+https://github.com/rust-lang/crates.io-index" 2710 - checksum = "14070e711538afba5d6c807edb74bcb84e5dbb9211a3bf5dea0dfab5b24f4c51" 2711 - dependencies = [ 2712 - "inflections", 2713 - "proc-macro2", 2714 - "quote", 2715 - "syn 2.0.101", 2716 - ] 2717 - 2718 - [[package]] 2719 - name = "gltf-json" 2720 - version = "1.4.1" 2721 - source = "registry+https://github.com/rust-lang/crates.io-index" 2722 - checksum = "e6176f9d60a7eab0a877e8e96548605dedbde9190a7ae1e80bbcc1c9af03ab14" 2723 - dependencies = [ 2724 - "gltf-derive", 2725 - "serde", 2726 - "serde_derive", 2727 - "serde_json", 2728 - ] 2729 - 2730 - [[package]] 2731 734 name = "glutin_wgl_sys" 2732 735 version = "0.6.1" 2733 736 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2764 767 "log", 2765 768 "presser", 2766 769 "thiserror 1.0.69", 2767 - "windows 0.58.0", 770 + "windows", 2768 771 ] 2769 772 2770 773 [[package]] ··· 2788 791 ] 2789 792 2790 793 [[package]] 2791 - name = "grid" 2792 - version = "0.15.0" 2793 - source = "registry+https://github.com/rust-lang/crates.io-index" 2794 - checksum = "36119f3a540b086b4e436bb2b588cf98a68863470e0e880f4d0842f112a3183a" 2795 - 2796 - [[package]] 2797 - name = "guillotiere" 2798 - version = "0.6.2" 2799 - source = "registry+https://github.com/rust-lang/crates.io-index" 2800 - checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" 2801 - dependencies = [ 2802 - "euclid", 2803 - "svg_fmt", 2804 - ] 2805 - 2806 - [[package]] 2807 794 name = "half" 2808 795 version = "2.6.0" 2809 796 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2815 802 ] 2816 803 2817 804 [[package]] 2818 - name = "hash32" 2819 - version = "0.3.1" 2820 - source = "registry+https://github.com/rust-lang/crates.io-index" 2821 - checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" 2822 - dependencies = [ 2823 - "byteorder", 2824 - ] 2825 - 2826 - [[package]] 2827 805 name = "hashbrown" 2828 806 version = "0.15.3" 2829 807 source = "registry+https://github.com/rust-lang/crates.io-index" 2830 808 checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" 2831 809 dependencies = [ 2832 - "equivalent", 2833 810 "foldhash", 2834 - "serde", 2835 - ] 2836 - 2837 - [[package]] 2838 - name = "heapless" 2839 - version = "0.8.0" 2840 - source = "registry+https://github.com/rust-lang/crates.io-index" 2841 - checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" 2842 - dependencies = [ 2843 - "hash32", 2844 - "portable-atomic", 2845 - "stable_deref_trait", 2846 811 ] 2847 812 2848 813 [[package]] ··· 2858 823 checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" 2859 824 2860 825 [[package]] 2861 - name = "hexasphere" 2862 - version = "15.1.0" 2863 - source = "registry+https://github.com/rust-lang/crates.io-index" 2864 - checksum = "d9c9e718d32b6e6b2b32354e1b0367025efdd0b11d6a740b905ddf5db1074679" 2865 - dependencies = [ 2866 - "constgebra", 2867 - "glam 0.29.3", 2868 - "tinyvec", 2869 - ] 2870 - 2871 - [[package]] 2872 826 name = "hexf-parse" 2873 827 version = "0.2.1" 2874 828 source = "registry+https://github.com/rust-lang/crates.io-index" 2875 829 checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" 2876 830 2877 831 [[package]] 2878 - name = "home" 2879 - version = "0.5.11" 2880 - source = "registry+https://github.com/rust-lang/crates.io-index" 2881 - checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" 2882 - dependencies = [ 2883 - "windows-sys 0.59.0", 2884 - ] 2885 - 2886 - [[package]] 2887 - name = "icu_collections" 2888 - version = "2.0.0" 2889 - source = "registry+https://github.com/rust-lang/crates.io-index" 2890 - checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" 2891 - dependencies = [ 2892 - "displaydoc", 2893 - "potential_utf", 2894 - "yoke", 2895 - "zerofrom", 2896 - "zerovec", 2897 - ] 2898 - 2899 - [[package]] 2900 - name = "icu_locale_core" 2901 - version = "2.0.0" 2902 - source = "registry+https://github.com/rust-lang/crates.io-index" 2903 - checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" 2904 - dependencies = [ 2905 - "displaydoc", 2906 - "litemap", 2907 - "tinystr", 2908 - "writeable", 2909 - "zerovec", 2910 - ] 2911 - 2912 - [[package]] 2913 - name = "icu_normalizer" 2914 - version = "2.0.0" 2915 - source = "registry+https://github.com/rust-lang/crates.io-index" 2916 - checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" 2917 - dependencies = [ 2918 - "displaydoc", 2919 - "icu_collections", 2920 - "icu_normalizer_data", 2921 - "icu_properties", 2922 - "icu_provider", 2923 - "smallvec", 2924 - "zerovec", 2925 - ] 2926 - 2927 - [[package]] 2928 - name = "icu_normalizer_data" 2929 - version = "2.0.0" 2930 - source = "registry+https://github.com/rust-lang/crates.io-index" 2931 - checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" 2932 - 2933 - [[package]] 2934 - name = "icu_properties" 2935 - version = "2.0.0" 2936 - source = "registry+https://github.com/rust-lang/crates.io-index" 2937 - checksum = "2549ca8c7241c82f59c80ba2a6f415d931c5b58d24fb8412caa1a1f02c49139a" 2938 - dependencies = [ 2939 - "displaydoc", 2940 - "icu_collections", 2941 - "icu_locale_core", 2942 - "icu_properties_data", 2943 - "icu_provider", 2944 - "potential_utf", 2945 - "zerotrie", 2946 - "zerovec", 2947 - ] 2948 - 2949 - [[package]] 2950 - name = "icu_properties_data" 2951 - version = "2.0.0" 2952 - source = "registry+https://github.com/rust-lang/crates.io-index" 2953 - checksum = "8197e866e47b68f8f7d95249e172903bec06004b18b2937f1095d40a0c57de04" 2954 - 2955 - [[package]] 2956 - name = "icu_provider" 2957 - version = "2.0.0" 2958 - source = "registry+https://github.com/rust-lang/crates.io-index" 2959 - checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" 2960 - dependencies = [ 2961 - "displaydoc", 2962 - "icu_locale_core", 2963 - "stable_deref_trait", 2964 - "tinystr", 2965 - "writeable", 2966 - "yoke", 2967 - "zerofrom", 2968 - "zerotrie", 2969 - "zerovec", 2970 - ] 2971 - 2972 - [[package]] 2973 - name = "idna" 2974 - version = "1.0.3" 2975 - source = "registry+https://github.com/rust-lang/crates.io-index" 2976 - checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" 2977 - dependencies = [ 2978 - "idna_adapter", 2979 - "smallvec", 2980 - "utf8_iter", 2981 - ] 2982 - 2983 - [[package]] 2984 - name = "idna_adapter" 2985 - version = "1.2.1" 2986 - source = "registry+https://github.com/rust-lang/crates.io-index" 2987 - checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" 2988 - dependencies = [ 2989 - "icu_normalizer", 2990 - "icu_properties", 2991 - ] 2992 - 2993 - [[package]] 2994 832 name = "image" 2995 833 version = "0.24.9" 2996 834 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3060 898 checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408" 3061 899 3062 900 [[package]] 3063 - name = "immutable-chunkmap" 3064 - version = "2.0.6" 3065 - source = "registry+https://github.com/rust-lang/crates.io-index" 3066 - checksum = "12f97096f508d54f8f8ab8957862eee2ccd628847b6217af1a335e1c44dee578" 3067 - dependencies = [ 3068 - "arrayvec", 3069 - ] 3070 - 3071 - [[package]] 3072 901 name = "indexmap" 3073 902 version = "2.9.0" 3074 903 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3076 905 dependencies = [ 3077 906 "equivalent", 3078 907 "hashbrown", 3079 - "serde", 3080 - ] 3081 - 3082 - [[package]] 3083 - name = "inflections" 3084 - version = "1.1.1" 3085 - source = "registry+https://github.com/rust-lang/crates.io-index" 3086 - checksum = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a" 3087 - 3088 - [[package]] 3089 - name = "inotify" 3090 - version = "0.11.0" 3091 - source = "registry+https://github.com/rust-lang/crates.io-index" 3092 - checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" 3093 - dependencies = [ 3094 - "bitflags 2.9.0", 3095 - "inotify-sys", 3096 - "libc", 3097 - ] 3098 - 3099 - [[package]] 3100 - name = "inotify-sys" 3101 - version = "0.1.5" 3102 - source = "registry+https://github.com/rust-lang/crates.io-index" 3103 - checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" 3104 - dependencies = [ 3105 - "libc", 3106 908 ] 3107 909 3108 910 [[package]] ··· 3117 919 ] 3118 920 3119 921 [[package]] 3120 - name = "io-kit-sys" 3121 - version = "0.4.1" 3122 - source = "registry+https://github.com/rust-lang/crates.io-index" 3123 - checksum = "617ee6cf8e3f66f3b4ea67a4058564628cde41901316e19f559e14c7c72c5e7b" 3124 - dependencies = [ 3125 - "core-foundation-sys", 3126 - "mach2", 3127 - ] 3128 - 3129 - [[package]] 3130 922 name = "itertools" 3131 923 version = "0.12.1" 3132 924 source = "registry+https://github.com/rust-lang/crates.io-index" 3133 925 checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" 3134 - dependencies = [ 3135 - "either", 3136 - ] 3137 - 3138 - [[package]] 3139 - name = "itertools" 3140 - version = "0.13.0" 3141 - source = "registry+https://github.com/rust-lang/crates.io-index" 3142 - checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" 3143 926 dependencies = [ 3144 927 "either", 3145 928 ] ··· 3228 1011 checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" 3229 1012 3230 1013 [[package]] 3231 - name = "ktx2" 3232 - version = "0.3.0" 3233 - source = "registry+https://github.com/rust-lang/crates.io-index" 3234 - checksum = "87d65e08a9ec02e409d27a0139eaa6b9756b4d81fe7cde71f6941a83730ce838" 3235 - dependencies = [ 3236 - "bitflags 1.3.2", 3237 - ] 3238 - 3239 - [[package]] 3240 - name = "lazy_static" 3241 - version = "1.5.0" 3242 - source = "registry+https://github.com/rust-lang/crates.io-index" 3243 - checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 3244 - 3245 - [[package]] 3246 1014 name = "lebe" 3247 1015 version = "0.5.2" 3248 1016 source = "registry+https://github.com/rust-lang/crates.io-index" 3249 1017 checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" 3250 1018 3251 1019 [[package]] 3252 - name = "lewton" 3253 - version = "0.10.2" 3254 - source = "registry+https://github.com/rust-lang/crates.io-index" 3255 - checksum = "777b48df9aaab155475a83a7df3070395ea1ac6902f5cd062b8f2b028075c030" 3256 - dependencies = [ 3257 - "byteorder", 3258 - "ogg", 3259 - "tinyvec", 3260 - ] 3261 - 3262 - [[package]] 3263 1020 name = "libc" 3264 1021 version = "0.2.172" 3265 1022 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3303 1060 ] 3304 1061 3305 1062 [[package]] 3306 - name = "libudev-sys" 3307 - version = "0.1.4" 3308 - source = "registry+https://github.com/rust-lang/crates.io-index" 3309 - checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" 3310 - dependencies = [ 3311 - "libc", 3312 - "pkg-config", 3313 - ] 3314 - 3315 - [[package]] 3316 1063 name = "lightweight_viewer" 3317 1064 version = "0.1.0" 3318 1065 dependencies = [ 3319 1066 "bytemuck", 3320 - "glam 0.30.3", 1067 + "glam", 3321 1068 "image 0.25.6", 3322 1069 "nalgebra 0.33.2", 3323 1070 "nest_struct", 3324 1071 "pollster", 1072 + "vee_wgpu", 3325 1073 "vfl", 3326 - "wgpu 25.0.0", 1074 + "wgpu", 3327 1075 "winit", 3328 1076 ] 3329 1077 ··· 3332 1080 version = "0.4.15" 3333 1081 source = "registry+https://github.com/rust-lang/crates.io-index" 3334 1082 checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" 3335 - 3336 - [[package]] 3337 - name = "litemap" 3338 - version = "0.8.0" 3339 - source = "registry+https://github.com/rust-lang/crates.io-index" 3340 - checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" 3341 1083 3342 1084 [[package]] 3343 1085 name = "litrs" ··· 3371 1113 ] 3372 1114 3373 1115 [[package]] 3374 - name = "mach2" 3375 - version = "0.4.2" 3376 - source = "registry+https://github.com/rust-lang/crates.io-index" 3377 - checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" 3378 - dependencies = [ 3379 - "libc", 3380 - ] 3381 - 3382 - [[package]] 3383 1116 name = "malloc_buf" 3384 1117 version = "0.0.6" 3385 1118 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3389 1122 ] 3390 1123 3391 1124 [[package]] 3392 - name = "matchers" 3393 - version = "0.1.0" 3394 - source = "registry+https://github.com/rust-lang/crates.io-index" 3395 - checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" 3396 - dependencies = [ 3397 - "regex-automata 0.1.10", 3398 - ] 3399 - 3400 - [[package]] 3401 1125 name = "matrixmultiply" 3402 1126 version = "0.3.9" 3403 1127 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3438 1162 source = "registry+https://github.com/rust-lang/crates.io-index" 3439 1163 checksum = "9b07c5e96a6080555d650321a81c7e3cd68b08261f63ee5db2b069a50f5ce7db" 3440 1164 dependencies = [ 3441 - "base64 0.13.1", 1165 + "base64", 3442 1166 "byteorder", 3443 1167 "image 0.24.9", 3444 1168 "nalgebra 0.31.4", ··· 3487 1211 3488 1212 [[package]] 3489 1213 name = "naga" 3490 - version = "24.0.0" 3491 - source = "registry+https://github.com/rust-lang/crates.io-index" 3492 - checksum = "e380993072e52eef724eddfcde0ed013b0c023c3f0417336ed041aa9f076994e" 3493 - dependencies = [ 3494 - "arrayvec", 3495 - "bit-set 0.8.0", 3496 - "bitflags 2.9.0", 3497 - "cfg_aliases", 3498 - "codespan-reporting 0.11.1", 3499 - "hexf-parse", 3500 - "indexmap", 3501 - "log", 3502 - "pp-rs", 3503 - "rustc-hash", 3504 - "spirv", 3505 - "strum", 3506 - "termcolor", 3507 - "thiserror 2.0.12", 3508 - "unicode-xid", 3509 - ] 3510 - 3511 - [[package]] 3512 - name = "naga" 3513 1214 version = "25.0.1" 3514 1215 source = "registry+https://github.com/rust-lang/crates.io-index" 3515 1216 checksum = "2b977c445f26e49757f9aca3631c3b8b836942cb278d69a92e7b80d3b24da632" 3516 1217 dependencies = [ 3517 1218 "arrayvec", 3518 - "bit-set 0.8.0", 1219 + "bit-set", 3519 1220 "bitflags 2.9.0", 3520 1221 "cfg_aliases", 3521 - "codespan-reporting 0.12.0", 1222 + "codespan-reporting", 3522 1223 "half", 3523 1224 "hashbrown", 3524 1225 "hexf-parse", ··· 3534 1235 ] 3535 1236 3536 1237 [[package]] 3537 - name = "naga_oil" 3538 - version = "0.17.0" 3539 - source = "registry+https://github.com/rust-lang/crates.io-index" 3540 - checksum = "0ca507a365f886f95f74420361b75442a3709c747a8a6e8b6c45b8667f45a82c" 3541 - dependencies = [ 3542 - "bit-set 0.5.3", 3543 - "codespan-reporting 0.11.1", 3544 - "data-encoding", 3545 - "indexmap", 3546 - "naga 24.0.0", 3547 - "once_cell", 3548 - "regex", 3549 - "regex-syntax 0.8.5", 3550 - "rustc-hash", 3551 - "thiserror 1.0.69", 3552 - "tracing", 3553 - "unicode-ident", 3554 - ] 3555 - 3556 - [[package]] 3557 1238 name = "nalgebra" 3558 1239 version = "0.31.4" 3559 1240 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3610 1291 3611 1292 [[package]] 3612 1293 name = "ndk" 3613 - version = "0.8.0" 3614 - source = "registry+https://github.com/rust-lang/crates.io-index" 3615 - checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" 3616 - dependencies = [ 3617 - "bitflags 2.9.0", 3618 - "jni-sys", 3619 - "log", 3620 - "ndk-sys 0.5.0+25.2.9519653", 3621 - "num_enum", 3622 - "thiserror 1.0.69", 3623 - ] 3624 - 3625 - [[package]] 3626 - name = "ndk" 3627 1294 version = "0.9.0" 3628 1295 source = "registry+https://github.com/rust-lang/crates.io-index" 3629 1296 checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" ··· 3680 1347 checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" 3681 1348 3682 1349 [[package]] 3683 - name = "nix" 3684 - version = "0.29.0" 3685 - source = "registry+https://github.com/rust-lang/crates.io-index" 3686 - checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" 3687 - dependencies = [ 3688 - "bitflags 2.9.0", 3689 - "cfg-if", 3690 - "cfg_aliases", 3691 - "libc", 3692 - ] 3693 - 3694 - [[package]] 3695 - name = "nohash-hasher" 3696 - version = "0.2.0" 3697 - source = "registry+https://github.com/rust-lang/crates.io-index" 3698 - checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" 3699 - 3700 - [[package]] 3701 1350 name = "nom" 3702 1351 version = "7.1.3" 3703 1352 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3706 1355 "memchr", 3707 1356 "minimal-lexical", 3708 1357 ] 3709 - 3710 - [[package]] 3711 - name = "nonmax" 3712 - version = "0.5.5" 3713 - source = "registry+https://github.com/rust-lang/crates.io-index" 3714 - checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51" 3715 1358 3716 1359 [[package]] 3717 1360 name = "noop_proc_macro" 3718 1361 version = "0.3.0" 3719 1362 source = "registry+https://github.com/rust-lang/crates.io-index" 3720 1363 checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" 3721 - 3722 - [[package]] 3723 - name = "ntapi" 3724 - version = "0.4.1" 3725 - source = "registry+https://github.com/rust-lang/crates.io-index" 3726 - checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" 3727 - dependencies = [ 3728 - "winapi", 3729 - ] 3730 - 3731 - [[package]] 3732 - name = "nu-ansi-term" 3733 - version = "0.46.0" 3734 - source = "registry+https://github.com/rust-lang/crates.io-index" 3735 - checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" 3736 - dependencies = [ 3737 - "overload", 3738 - "winapi", 3739 - ] 3740 1364 3741 1365 [[package]] 3742 1366 name = "num-bigint" ··· 3845 1469 ] 3846 1470 3847 1471 [[package]] 3848 - name = "objc2" 3849 - version = "0.6.1" 3850 - source = "registry+https://github.com/rust-lang/crates.io-index" 3851 - checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551" 3852 - dependencies = [ 3853 - "objc2-encode", 3854 - ] 3855 - 3856 - [[package]] 3857 1472 name = "objc2-app-kit" 3858 1473 version = "0.2.2" 3859 1474 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3862 1477 "bitflags 2.9.0", 3863 1478 "block2", 3864 1479 "libc", 3865 - "objc2 0.5.2", 1480 + "objc2", 3866 1481 "objc2-core-data", 3867 1482 "objc2-core-image", 3868 - "objc2-foundation 0.2.2", 1483 + "objc2-foundation", 3869 1484 "objc2-quartz-core", 3870 1485 ] 3871 1486 3872 1487 [[package]] 3873 - name = "objc2-app-kit" 3874 - version = "0.3.1" 3875 - source = "registry+https://github.com/rust-lang/crates.io-index" 3876 - checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" 3877 - dependencies = [ 3878 - "bitflags 2.9.0", 3879 - "objc2 0.6.1", 3880 - "objc2-core-graphics", 3881 - "objc2-foundation 0.3.1", 3882 - ] 3883 - 3884 - [[package]] 3885 1488 name = "objc2-cloud-kit" 3886 1489 version = "0.2.2" 3887 1490 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3889 1492 dependencies = [ 3890 1493 "bitflags 2.9.0", 3891 1494 "block2", 3892 - "objc2 0.5.2", 1495 + "objc2", 3893 1496 "objc2-core-location", 3894 - "objc2-foundation 0.2.2", 1497 + "objc2-foundation", 3895 1498 ] 3896 1499 3897 1500 [[package]] ··· 3901 1504 checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" 3902 1505 dependencies = [ 3903 1506 "block2", 3904 - "objc2 0.5.2", 3905 - "objc2-foundation 0.2.2", 1507 + "objc2", 1508 + "objc2-foundation", 3906 1509 ] 3907 1510 3908 1511 [[package]] ··· 3913 1516 dependencies = [ 3914 1517 "bitflags 2.9.0", 3915 1518 "block2", 3916 - "objc2 0.5.2", 3917 - "objc2-foundation 0.2.2", 3918 - ] 3919 - 3920 - [[package]] 3921 - name = "objc2-core-foundation" 3922 - version = "0.3.1" 3923 - source = "registry+https://github.com/rust-lang/crates.io-index" 3924 - checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" 3925 - dependencies = [ 3926 - "bitflags 2.9.0", 3927 - "dispatch2", 3928 - "objc2 0.6.1", 3929 - ] 3930 - 3931 - [[package]] 3932 - name = "objc2-core-graphics" 3933 - version = "0.3.1" 3934 - source = "registry+https://github.com/rust-lang/crates.io-index" 3935 - checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4" 3936 - dependencies = [ 3937 - "bitflags 2.9.0", 3938 - "dispatch2", 3939 - "objc2 0.6.1", 3940 - "objc2-core-foundation", 3941 - "objc2-io-surface", 1519 + "objc2", 1520 + "objc2-foundation", 3942 1521 ] 3943 1522 3944 1523 [[package]] ··· 3948 1527 checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" 3949 1528 dependencies = [ 3950 1529 "block2", 3951 - "objc2 0.5.2", 3952 - "objc2-foundation 0.2.2", 1530 + "objc2", 1531 + "objc2-foundation", 3953 1532 "objc2-metal", 3954 1533 ] 3955 1534 ··· 3960 1539 checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" 3961 1540 dependencies = [ 3962 1541 "block2", 3963 - "objc2 0.5.2", 1542 + "objc2", 3964 1543 "objc2-contacts", 3965 - "objc2-foundation 0.2.2", 1544 + "objc2-foundation", 3966 1545 ] 3967 1546 3968 1547 [[package]] ··· 3981 1560 "block2", 3982 1561 "dispatch", 3983 1562 "libc", 3984 - "objc2 0.5.2", 3985 - ] 3986 - 3987 - [[package]] 3988 - name = "objc2-foundation" 3989 - version = "0.3.1" 3990 - source = "registry+https://github.com/rust-lang/crates.io-index" 3991 - checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" 3992 - dependencies = [ 3993 - "bitflags 2.9.0", 3994 - "objc2 0.6.1", 3995 - "objc2-core-foundation", 3996 - ] 3997 - 3998 - [[package]] 3999 - name = "objc2-io-surface" 4000 - version = "0.3.1" 4001 - source = "registry+https://github.com/rust-lang/crates.io-index" 4002 - checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c" 4003 - dependencies = [ 4004 - "bitflags 2.9.0", 4005 - "objc2 0.6.1", 4006 - "objc2-core-foundation", 1563 + "objc2", 4007 1564 ] 4008 1565 4009 1566 [[package]] ··· 4013 1570 checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" 4014 1571 dependencies = [ 4015 1572 "block2", 4016 - "objc2 0.5.2", 4017 - "objc2-app-kit 0.2.2", 4018 - "objc2-foundation 0.2.2", 1573 + "objc2", 1574 + "objc2-app-kit", 1575 + "objc2-foundation", 4019 1576 ] 4020 1577 4021 1578 [[package]] ··· 4026 1583 dependencies = [ 4027 1584 "bitflags 2.9.0", 4028 1585 "block2", 4029 - "objc2 0.5.2", 4030 - "objc2-foundation 0.2.2", 1586 + "objc2", 1587 + "objc2-foundation", 4031 1588 ] 4032 1589 4033 1590 [[package]] ··· 4038 1595 dependencies = [ 4039 1596 "bitflags 2.9.0", 4040 1597 "block2", 4041 - "objc2 0.5.2", 4042 - "objc2-foundation 0.2.2", 1598 + "objc2", 1599 + "objc2-foundation", 4043 1600 "objc2-metal", 4044 1601 ] 4045 1602 ··· 4049 1606 source = "registry+https://github.com/rust-lang/crates.io-index" 4050 1607 checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" 4051 1608 dependencies = [ 4052 - "objc2 0.5.2", 4053 - "objc2-foundation 0.2.2", 1609 + "objc2", 1610 + "objc2-foundation", 4054 1611 ] 4055 1612 4056 1613 [[package]] ··· 4061 1618 dependencies = [ 4062 1619 "bitflags 2.9.0", 4063 1620 "block2", 4064 - "objc2 0.5.2", 1621 + "objc2", 4065 1622 "objc2-cloud-kit", 4066 1623 "objc2-core-data", 4067 1624 "objc2-core-image", 4068 1625 "objc2-core-location", 4069 - "objc2-foundation 0.2.2", 1626 + "objc2-foundation", 4070 1627 "objc2-link-presentation", 4071 1628 "objc2-quartz-core", 4072 1629 "objc2-symbols", ··· 4081 1638 checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" 4082 1639 dependencies = [ 4083 1640 "block2", 4084 - "objc2 0.5.2", 4085 - "objc2-foundation 0.2.2", 1641 + "objc2", 1642 + "objc2-foundation", 4086 1643 ] 4087 1644 4088 1645 [[package]] ··· 4093 1650 dependencies = [ 4094 1651 "bitflags 2.9.0", 4095 1652 "block2", 4096 - "objc2 0.5.2", 1653 + "objc2", 4097 1654 "objc2-core-location", 4098 - "objc2-foundation 0.2.2", 4099 - ] 4100 - 4101 - [[package]] 4102 - name = "oboe" 4103 - version = "0.6.1" 4104 - source = "registry+https://github.com/rust-lang/crates.io-index" 4105 - checksum = "e8b61bebd49e5d43f5f8cc7ee2891c16e0f41ec7954d36bcb6c14c5e0de867fb" 4106 - dependencies = [ 4107 - "jni", 4108 - "ndk 0.8.0", 4109 - "ndk-context", 4110 - "num-derive", 4111 - "num-traits", 4112 - "oboe-sys", 4113 - ] 4114 - 4115 - [[package]] 4116 - name = "oboe-sys" 4117 - version = "0.6.1" 4118 - source = "registry+https://github.com/rust-lang/crates.io-index" 4119 - checksum = "6c8bb09a4a2b1d668170cfe0a7d5bc103f8999fb316c98099b6a9939c9f2e79d" 4120 - dependencies = [ 4121 - "cc", 4122 - ] 4123 - 4124 - [[package]] 4125 - name = "offset-allocator" 4126 - version = "0.2.0" 4127 - source = "registry+https://github.com/rust-lang/crates.io-index" 4128 - checksum = "e234d535da3521eb95106f40f0b73483d80bfb3aacf27c40d7e2b72f1a3e00a2" 4129 - dependencies = [ 4130 - "log", 4131 - "nonmax", 4132 - ] 4133 - 4134 - [[package]] 4135 - name = "ogg" 4136 - version = "0.8.0" 4137 - source = "registry+https://github.com/rust-lang/crates.io-index" 4138 - checksum = "6951b4e8bf21c8193da321bcce9c9dd2e13c858fe078bf9054a288b419ae5d6e" 4139 - dependencies = [ 4140 - "byteorder", 1655 + "objc2-foundation", 4141 1656 ] 4142 1657 4143 1658 [[package]] ··· 4163 1678 dependencies = [ 4164 1679 "num-traits", 4165 1680 ] 4166 - 4167 - [[package]] 4168 - name = "overload" 4169 - version = "0.1.1" 4170 - source = "registry+https://github.com/rust-lang/crates.io-index" 4171 - checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" 4172 1681 4173 1682 [[package]] 4174 1683 name = "owned_ttf_parser" ··· 4176 1685 source = "registry+https://github.com/rust-lang/crates.io-index" 4177 1686 checksum = "22ec719bbf3b2a81c109a4e20b1f129b5566b7dce654bc3872f6a05abf82b2c4" 4178 1687 dependencies = [ 4179 - "ttf-parser 0.25.1", 1688 + "ttf-parser", 4180 1689 ] 4181 1690 4182 1691 [[package]] ··· 4184 1693 version = "4.2.0" 4185 1694 source = "registry+https://github.com/rust-lang/crates.io-index" 4186 1695 checksum = "1036865bb9422d3300cf723f657c2851d0e9ab12567854b1f4eba3d77decf564" 4187 - 4188 - [[package]] 4189 - name = "parking" 4190 - version = "2.2.1" 4191 - source = "registry+https://github.com/rust-lang/crates.io-index" 4192 - checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" 4193 1696 4194 1697 [[package]] 4195 1698 name = "parking_lot" ··· 4227 1730 checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 4228 1731 4229 1732 [[package]] 4230 - name = "petgraph" 4231 - version = "0.7.1" 4232 - source = "registry+https://github.com/rust-lang/crates.io-index" 4233 - checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" 4234 - dependencies = [ 4235 - "fixedbitset", 4236 - "indexmap", 4237 - "serde", 4238 - "serde_derive", 4239 - ] 4240 - 4241 - [[package]] 4242 1733 name = "pin-project" 4243 1734 version = "1.1.10" 4244 1735 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4265 1756 checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 4266 1757 4267 1758 [[package]] 4268 - name = "pin-utils" 4269 - version = "0.1.0" 4270 - source = "registry+https://github.com/rust-lang/crates.io-index" 4271 - checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 4272 - 4273 - [[package]] 4274 - name = "piper" 4275 - version = "0.2.4" 4276 - source = "registry+https://github.com/rust-lang/crates.io-index" 4277 - checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" 4278 - dependencies = [ 4279 - "atomic-waker", 4280 - "fastrand", 4281 - "futures-io", 4282 - ] 4283 - 4284 - [[package]] 4285 1759 name = "pkg-config" 4286 1760 version = "0.3.32" 4287 1761 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4328 1802 checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" 4329 1803 4330 1804 [[package]] 4331 - name = "portable-atomic-util" 4332 - version = "0.2.4" 4333 - source = "registry+https://github.com/rust-lang/crates.io-index" 4334 - checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" 4335 - dependencies = [ 4336 - "portable-atomic", 4337 - ] 4338 - 4339 - [[package]] 4340 - name = "potential_utf" 4341 - version = "0.1.2" 4342 - source = "registry+https://github.com/rust-lang/crates.io-index" 4343 - checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" 4344 - dependencies = [ 4345 - "zerovec", 4346 - ] 4347 - 4348 - [[package]] 4349 - name = "pp-rs" 4350 - version = "0.2.1" 4351 - source = "registry+https://github.com/rust-lang/crates.io-index" 4352 - checksum = "bb458bb7f6e250e6eb79d5026badc10a3ebb8f9a15d1fff0f13d17c71f4d6dee" 4353 - dependencies = [ 4354 - "unicode-xid", 4355 - ] 4356 - 4357 - [[package]] 4358 1805 name = "ppv-lite86" 4359 1806 version = "0.2.21" 4360 1807 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4370 1817 checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" 4371 1818 4372 1819 [[package]] 4373 - name = "prettyplease" 4374 - version = "0.2.32" 4375 - source = "registry+https://github.com/rust-lang/crates.io-index" 4376 - checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6" 4377 - dependencies = [ 4378 - "proc-macro2", 4379 - "syn 2.0.101", 4380 - ] 4381 - 4382 - [[package]] 4383 1820 name = "proc-macro-crate" 4384 1821 version = "3.3.0" 4385 1822 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4456 1893 checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" 4457 1894 4458 1895 [[package]] 4459 - name = "radsort" 4460 - version = "0.1.1" 4461 - source = "registry+https://github.com/rust-lang/crates.io-index" 4462 - checksum = "019b4b213425016d7d84a153c4c73afb0946fbb4840e4eece7ba8848b9d6da22" 4463 - 4464 - [[package]] 4465 1896 name = "rand" 4466 1897 version = "0.8.5" 4467 1898 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4492 1923 ] 4493 1924 4494 1925 [[package]] 4495 - name = "rand_distr" 4496 - version = "0.4.3" 4497 - source = "registry+https://github.com/rust-lang/crates.io-index" 4498 - checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" 4499 - dependencies = [ 4500 - "num-traits", 4501 - "rand", 4502 - ] 4503 - 4504 - [[package]] 4505 1926 name = "range-alloc" 4506 1927 version = "0.1.4" 4507 1928 source = "registry+https://github.com/rust-lang/crates.io-index" 4508 1929 checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" 4509 - 4510 - [[package]] 4511 - name = "rangemap" 4512 - version = "1.5.1" 4513 - source = "registry+https://github.com/rust-lang/crates.io-index" 4514 - checksum = "f60fcc7d6849342eff22c4350c8b9a989ee8ceabc4b481253e8946b9fe83d684" 4515 1930 4516 1931 [[package]] 4517 1932 name = "rav1e" ··· 4596 2011 ] 4597 2012 4598 2013 [[package]] 4599 - name = "read-fonts" 4600 - version = "0.29.0" 4601 - source = "registry+https://github.com/rust-lang/crates.io-index" 4602 - checksum = "5ce8e2ca6b24313587a03ca61bb74c384e2a815bd90cf2866cfc9f5fb7a11fa0" 4603 - dependencies = [ 4604 - "bytemuck", 4605 - "font-types", 4606 - ] 4607 - 4608 - [[package]] 4609 - name = "rectangle-pack" 4610 - version = "0.4.2" 4611 - source = "registry+https://github.com/rust-lang/crates.io-index" 4612 - checksum = "a0d463f2884048e7153449a55166f91028d5b0ea53c79377099ce4e8cf0cf9bb" 4613 - 4614 - [[package]] 4615 2014 name = "redox_syscall" 4616 2015 version = "0.4.1" 4617 2016 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4630 2029 ] 4631 2030 4632 2031 [[package]] 4633 - name = "regex" 4634 - version = "1.11.1" 4635 - source = "registry+https://github.com/rust-lang/crates.io-index" 4636 - checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" 4637 - dependencies = [ 4638 - "aho-corasick", 4639 - "memchr", 4640 - "regex-automata 0.4.9", 4641 - "regex-syntax 0.8.5", 4642 - ] 4643 - 4644 - [[package]] 4645 - name = "regex-automata" 4646 - version = "0.1.10" 4647 - source = "registry+https://github.com/rust-lang/crates.io-index" 4648 - checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" 4649 - dependencies = [ 4650 - "regex-syntax 0.6.29", 4651 - ] 4652 - 4653 - [[package]] 4654 - name = "regex-automata" 4655 - version = "0.4.9" 4656 - source = "registry+https://github.com/rust-lang/crates.io-index" 4657 - checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" 4658 - dependencies = [ 4659 - "aho-corasick", 4660 - "memchr", 4661 - "regex-syntax 0.8.5", 4662 - ] 4663 - 4664 - [[package]] 4665 - name = "regex-syntax" 4666 - version = "0.6.29" 4667 - source = "registry+https://github.com/rust-lang/crates.io-index" 4668 - checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" 4669 - 4670 - [[package]] 4671 - name = "regex-syntax" 4672 - version = "0.8.5" 4673 - source = "registry+https://github.com/rust-lang/crates.io-index" 4674 - checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" 4675 - 4676 - [[package]] 4677 2032 name = "renderdoc-sys" 4678 2033 version = "1.1.0" 4679 2034 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4686 2041 checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" 4687 2042 4688 2043 [[package]] 4689 - name = "rodio" 4690 - version = "0.20.1" 4691 - source = "registry+https://github.com/rust-lang/crates.io-index" 4692 - checksum = "e7ceb6607dd738c99bc8cb28eff249b7cd5c8ec88b9db96c0608c1480d140fb1" 4693 - dependencies = [ 4694 - "cpal", 4695 - "lewton", 4696 - ] 4697 - 4698 - [[package]] 4699 - name = "ron" 4700 - version = "0.8.1" 4701 - source = "registry+https://github.com/rust-lang/crates.io-index" 4702 - checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" 4703 - dependencies = [ 4704 - "base64 0.21.7", 4705 - "bitflags 2.9.0", 4706 - "serde", 4707 - "serde_derive", 4708 - ] 4709 - 4710 - [[package]] 4711 - name = "roxmltree" 4712 - version = "0.20.0" 4713 - source = "registry+https://github.com/rust-lang/crates.io-index" 4714 - checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" 4715 - 4716 - [[package]] 4717 2044 name = "rustc-hash" 4718 2045 version = "1.1.0" 4719 2046 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4737 2064 version = "1.0.20" 4738 2065 source = "registry+https://github.com/rust-lang/crates.io-index" 4739 2066 checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" 4740 - 4741 - [[package]] 4742 - name = "rustybuzz" 4743 - version = "0.14.1" 4744 - source = "registry+https://github.com/rust-lang/crates.io-index" 4745 - checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c" 4746 - dependencies = [ 4747 - "bitflags 2.9.0", 4748 - "bytemuck", 4749 - "libm", 4750 - "smallvec", 4751 - "ttf-parser 0.21.1", 4752 - "unicode-bidi-mirroring", 4753 - "unicode-ccc", 4754 - "unicode-properties", 4755 - "unicode-script", 4756 - ] 4757 - 4758 - [[package]] 4759 - name = "ruzstd" 4760 - version = "0.8.1" 4761 - source = "registry+https://github.com/rust-lang/crates.io-index" 4762 - checksum = "3640bec8aad418d7d03c72ea2de10d5c646a598f9883c7babc160d91e3c1b26c" 4763 - dependencies = [ 4764 - "twox-hash", 4765 - ] 4766 2067 4767 2068 [[package]] 4768 2069 name = "ryu" ··· 4814 2115 ] 4815 2116 4816 2117 [[package]] 4817 - name = "self_cell" 4818 - version = "1.2.0" 4819 - source = "registry+https://github.com/rust-lang/crates.io-index" 4820 - checksum = "0f7d95a54511e0c7be3f51e8867aa8cf35148d7b9445d44de2f943e2b206e749" 4821 - 4822 - [[package]] 4823 - name = "send_wrapper" 4824 - version = "0.6.0" 4825 - source = "registry+https://github.com/rust-lang/crates.io-index" 4826 - checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" 4827 - 4828 - [[package]] 4829 2118 name = "serde" 4830 2119 version = "1.0.219" 4831 2120 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4867 2156 ] 4868 2157 4869 2158 [[package]] 4870 - name = "sharded-slab" 4871 - version = "0.1.7" 4872 - source = "registry+https://github.com/rust-lang/crates.io-index" 4873 - checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 4874 - dependencies = [ 4875 - "lazy_static", 4876 - ] 4877 - 4878 - [[package]] 4879 2159 name = "shlex" 4880 2160 version = "1.3.0" 4881 2161 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4923 2203 ] 4924 2204 4925 2205 [[package]] 4926 - name = "skrifa" 4927 - version = "0.31.0" 4928 - source = "registry+https://github.com/rust-lang/crates.io-index" 4929 - checksum = "bbe6666ab11018ab91ff7b03f1a3b9fdbecfb610848436fefa5ce50343d3d913" 4930 - dependencies = [ 4931 - "bytemuck", 4932 - "read-fonts", 4933 - ] 4934 - 4935 - [[package]] 4936 2206 name = "slab" 4937 2207 version = "0.4.9" 4938 2208 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4991 2261 ] 4992 2262 4993 2263 [[package]] 4994 - name = "spin" 4995 - version = "0.9.8" 4996 - source = "registry+https://github.com/rust-lang/crates.io-index" 4997 - checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 4998 - dependencies = [ 4999 - "portable-atomic", 5000 - ] 5001 - 5002 - [[package]] 5003 2264 name = "spirv" 5004 2265 version = "0.3.0+sdk-1.3.268.0" 5005 2266 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5009 2270 ] 5010 2271 5011 2272 [[package]] 5012 - name = "stable_deref_trait" 5013 - version = "1.2.0" 5014 - source = "registry+https://github.com/rust-lang/crates.io-index" 5015 - checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 5016 - 5017 - [[package]] 5018 - name = "stackfuture" 5019 - version = "0.3.0" 5020 - source = "registry+https://github.com/rust-lang/crates.io-index" 5021 - checksum = "6eae92052b72ef70dafa16eddbabffc77e5ca3574be2f7bc1127b36f0a7ad7f2" 5022 - 5023 - [[package]] 5024 2273 name = "static_assertions" 5025 2274 version = "1.1.0" 5026 2275 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5055 2304 ] 5056 2305 5057 2306 [[package]] 5058 - name = "svg_fmt" 5059 - version = "0.4.5" 5060 - source = "registry+https://github.com/rust-lang/crates.io-index" 5061 - checksum = "0193cc4331cfd2f3d2011ef287590868599a2f33c3e69bc22c1a3d3acf9e02fb" 5062 - 5063 - [[package]] 5064 - name = "swash" 5065 - version = "0.2.4" 5066 - source = "registry+https://github.com/rust-lang/crates.io-index" 5067 - checksum = "5dce3f0af95643c855cdc449fbaa17d8c2cd08e0b00a49a6babcbe6e71667f3d" 5068 - dependencies = [ 5069 - "skrifa", 5070 - "yazi", 5071 - "zeno", 5072 - ] 5073 - 5074 - [[package]] 5075 2307 name = "syn" 5076 2308 version = "1.0.109" 5077 2309 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5094 2326 ] 5095 2327 5096 2328 [[package]] 5097 - name = "synstructure" 5098 - version = "0.13.2" 5099 - source = "registry+https://github.com/rust-lang/crates.io-index" 5100 - checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" 5101 - dependencies = [ 5102 - "proc-macro2", 5103 - "quote", 5104 - "syn 2.0.101", 5105 - ] 5106 - 5107 - [[package]] 5108 - name = "sys-locale" 5109 - version = "0.3.2" 5110 - source = "registry+https://github.com/rust-lang/crates.io-index" 5111 - checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" 5112 - dependencies = [ 5113 - "libc", 5114 - ] 5115 - 5116 - [[package]] 5117 - name = "sysinfo" 5118 - version = "0.34.2" 5119 - source = "registry+https://github.com/rust-lang/crates.io-index" 5120 - checksum = "a4b93974b3d3aeaa036504b8eefd4c039dced109171c1ae973f1dc63b2c7e4b2" 5121 - dependencies = [ 5122 - "libc", 5123 - "memchr", 5124 - "ntapi", 5125 - "objc2-core-foundation", 5126 - "windows 0.57.0", 5127 - ] 5128 - 5129 - [[package]] 5130 2329 name = "system-deps" 5131 2330 version = "6.2.2" 5132 2331 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5140 2339 ] 5141 2340 5142 2341 [[package]] 5143 - name = "taffy" 5144 - version = "0.7.7" 5145 - source = "registry+https://github.com/rust-lang/crates.io-index" 5146 - checksum = "ab4f4d046dd956a47a7e1a2947083d7ac3e6aa3cfaaead36173ceaa5ab11878c" 5147 - dependencies = [ 5148 - "arrayvec", 5149 - "grid", 5150 - "serde", 5151 - "slotmap", 5152 - ] 5153 - 5154 - [[package]] 5155 2342 name = "target-lexicon" 5156 2343 version = "0.12.16" 5157 2344 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5222 2409 ] 5223 2410 5224 2411 [[package]] 5225 - name = "thread_local" 5226 - version = "1.1.8" 5227 - source = "registry+https://github.com/rust-lang/crates.io-index" 5228 - checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" 5229 - dependencies = [ 5230 - "cfg-if", 5231 - "once_cell", 5232 - ] 5233 - 5234 - [[package]] 5235 2412 name = "tiff" 5236 2413 version = "0.9.1" 5237 2414 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5268 2445 ] 5269 2446 5270 2447 [[package]] 5271 - name = "tinystr" 5272 - version = "0.8.1" 5273 - source = "registry+https://github.com/rust-lang/crates.io-index" 5274 - checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" 5275 - dependencies = [ 5276 - "displaydoc", 5277 - "zerovec", 5278 - ] 5279 - 5280 - [[package]] 5281 - name = "tinyvec" 5282 - version = "1.9.0" 5283 - source = "registry+https://github.com/rust-lang/crates.io-index" 5284 - checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" 5285 - dependencies = [ 5286 - "tinyvec_macros", 5287 - ] 5288 - 5289 - [[package]] 5290 - name = "tinyvec_macros" 5291 - version = "0.1.1" 5292 - source = "registry+https://github.com/rust-lang/crates.io-index" 5293 - checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 5294 - 5295 - [[package]] 5296 2448 name = "toml" 5297 2449 version = "0.8.22" 5298 2450 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5333 2485 checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 5334 2486 dependencies = [ 5335 2487 "pin-project-lite", 5336 - "tracing-attributes", 5337 2488 "tracing-core", 5338 2489 ] 5339 2490 5340 2491 [[package]] 5341 - name = "tracing-attributes" 5342 - version = "0.1.28" 5343 - source = "registry+https://github.com/rust-lang/crates.io-index" 5344 - checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" 5345 - dependencies = [ 5346 - "proc-macro2", 5347 - "quote", 5348 - "syn 2.0.101", 5349 - ] 5350 - 5351 - [[package]] 5352 2492 name = "tracing-core" 5353 2493 version = "0.1.33" 5354 2494 source = "registry+https://github.com/rust-lang/crates.io-index" 5355 2495 checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" 5356 - dependencies = [ 5357 - "once_cell", 5358 - "valuable", 5359 - ] 5360 - 5361 - [[package]] 5362 - name = "tracing-log" 5363 - version = "0.2.0" 5364 - source = "registry+https://github.com/rust-lang/crates.io-index" 5365 - checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" 5366 - dependencies = [ 5367 - "log", 5368 - "once_cell", 5369 - "tracing-core", 5370 - ] 5371 - 5372 - [[package]] 5373 - name = "tracing-oslog" 5374 - version = "0.2.0" 5375 - source = "registry+https://github.com/rust-lang/crates.io-index" 5376 - checksum = "528bdd1f0e27b5dd9a4ededf154e824b0532731e4af73bb531de46276e0aab1e" 5377 - dependencies = [ 5378 - "bindgen", 5379 - "cc", 5380 - "cfg-if", 5381 - "once_cell", 5382 - "parking_lot", 5383 - "tracing-core", 5384 - "tracing-subscriber", 5385 - ] 5386 - 5387 - [[package]] 5388 - name = "tracing-subscriber" 5389 - version = "0.3.19" 5390 - source = "registry+https://github.com/rust-lang/crates.io-index" 5391 - checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" 5392 - dependencies = [ 5393 - "matchers", 5394 - "nu-ansi-term", 5395 - "once_cell", 5396 - "regex", 5397 - "sharded-slab", 5398 - "smallvec", 5399 - "thread_local", 5400 - "tracing", 5401 - "tracing-core", 5402 - "tracing-log", 5403 - ] 5404 - 5405 - [[package]] 5406 - name = "tracing-wasm" 5407 - version = "0.2.1" 5408 - source = "registry+https://github.com/rust-lang/crates.io-index" 5409 - checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07" 5410 - dependencies = [ 5411 - "tracing", 5412 - "tracing-subscriber", 5413 - "wasm-bindgen", 5414 - ] 5415 - 5416 - [[package]] 5417 - name = "ttf-parser" 5418 - version = "0.20.0" 5419 - source = "registry+https://github.com/rust-lang/crates.io-index" 5420 - checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" 5421 - 5422 - [[package]] 5423 - name = "ttf-parser" 5424 - version = "0.21.1" 5425 - source = "registry+https://github.com/rust-lang/crates.io-index" 5426 - checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" 5427 2496 5428 2497 [[package]] 5429 2498 name = "ttf-parser" ··· 5432 2501 checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" 5433 2502 5434 2503 [[package]] 5435 - name = "twox-hash" 5436 - version = "2.1.0" 5437 - source = "registry+https://github.com/rust-lang/crates.io-index" 5438 - checksum = "e7b17f197b3050ba473acf9181f7b1d3b66d1cf7356c6cc57886662276e65908" 5439 - 5440 - [[package]] 5441 - name = "typeid" 5442 - version = "1.0.3" 5443 - source = "registry+https://github.com/rust-lang/crates.io-index" 5444 - checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" 5445 - 5446 - [[package]] 5447 2504 name = "typenum" 5448 2505 version = "1.18.0" 5449 2506 source = "registry+https://github.com/rust-lang/crates.io-index" 5450 2507 checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" 5451 2508 5452 2509 [[package]] 5453 - name = "unicode-bidi" 5454 - version = "0.3.18" 5455 - source = "registry+https://github.com/rust-lang/crates.io-index" 5456 - checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" 5457 - 5458 - [[package]] 5459 - name = "unicode-bidi-mirroring" 5460 - version = "0.2.0" 5461 - source = "registry+https://github.com/rust-lang/crates.io-index" 5462 - checksum = "23cb788ffebc92c5948d0e997106233eeb1d8b9512f93f41651f52b6c5f5af86" 5463 - 5464 - [[package]] 5465 - name = "unicode-ccc" 5466 - version = "0.2.0" 5467 - source = "registry+https://github.com/rust-lang/crates.io-index" 5468 - checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656" 5469 - 5470 - [[package]] 5471 2510 name = "unicode-ident" 5472 2511 version = "1.0.18" 5473 2512 source = "registry+https://github.com/rust-lang/crates.io-index" 5474 2513 checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" 5475 2514 5476 2515 [[package]] 5477 - name = "unicode-linebreak" 5478 - version = "0.1.5" 5479 - source = "registry+https://github.com/rust-lang/crates.io-index" 5480 - checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" 5481 - 5482 - [[package]] 5483 - name = "unicode-properties" 5484 - version = "0.1.3" 5485 - source = "registry+https://github.com/rust-lang/crates.io-index" 5486 - checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" 5487 - 5488 - [[package]] 5489 - name = "unicode-script" 5490 - version = "0.5.7" 5491 - source = "registry+https://github.com/rust-lang/crates.io-index" 5492 - checksum = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f" 5493 - 5494 - [[package]] 5495 2516 name = "unicode-segmentation" 5496 2517 version = "1.12.0" 5497 2518 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5504 2525 checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" 5505 2526 5506 2527 [[package]] 5507 - name = "unicode-xid" 5508 - version = "0.2.6" 5509 - source = "registry+https://github.com/rust-lang/crates.io-index" 5510 - checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" 5511 - 5512 - [[package]] 5513 - name = "url" 5514 - version = "2.5.4" 5515 - source = "registry+https://github.com/rust-lang/crates.io-index" 5516 - checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" 5517 - dependencies = [ 5518 - "form_urlencoded", 5519 - "idna", 5520 - "percent-encoding", 5521 - ] 5522 - 5523 - [[package]] 5524 - name = "utf8_iter" 5525 - version = "1.0.4" 5526 - source = "registry+https://github.com/rust-lang/crates.io-index" 5527 - checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 5528 - 5529 - [[package]] 5530 2528 name = "uuid" 5531 2529 version = "1.16.0" 5532 2530 source = "registry+https://github.com/rust-lang/crates.io-index" 5533 2531 checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9" 5534 2532 dependencies = [ 5535 2533 "getrandom 0.3.3", 5536 - "js-sys", 5537 - "serde", 5538 - "wasm-bindgen", 5539 2534 ] 5540 2535 5541 2536 [[package]] ··· 5550 2545 ] 5551 2546 5552 2547 [[package]] 5553 - name = "valuable" 5554 - version = "0.1.1" 5555 - source = "registry+https://github.com/rust-lang/crates.io-index" 5556 - checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" 5557 - 5558 - [[package]] 5559 - name = "variadics_please" 5560 - version = "1.1.0" 5561 - source = "registry+https://github.com/rust-lang/crates.io-index" 5562 - checksum = "41b6d82be61465f97d42bd1d15bf20f3b0a3a0905018f38f9d6f6962055b0b5c" 2548 + name = "vee_wgpu" 2549 + version = "0.1.0" 5563 2550 dependencies = [ 5564 - "proc-macro2", 5565 - "quote", 5566 - "syn 2.0.101", 2551 + "bytemuck", 2552 + "futures-intrusive", 2553 + "glam", 2554 + "image 0.25.6", 2555 + "nalgebra 0.33.2", 2556 + "pollster", 2557 + "vfl", 2558 + "wgpu", 5567 2559 ] 5568 - 5569 - [[package]] 5570 - name = "vec_map" 5571 - version = "0.8.2" 5572 - source = "registry+https://github.com/rust-lang/crates.io-index" 5573 - checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" 5574 2560 5575 2561 [[package]] 5576 2562 name = "version-compare" ··· 5592 2578 "bytemuck", 5593 2579 "flate2", 5594 2580 "futures-intrusive", 5595 - "glam 0.30.3", 2581 + "glam", 5596 2582 "half", 5597 2583 "image 0.25.6", 5598 2584 "image-compare", ··· 5604 2590 "pollster", 5605 2591 "tegra_swizzle", 5606 2592 "texture2ddecoder", 5607 - "wgpu 25.0.0", 5608 2593 ] 5609 2594 5610 2595 [[package]] ··· 5710 2695 checksum = "fe770181423e5fc79d3e2a7f4410b7799d5aab1de4372853de3c6aa13ca24121" 5711 2696 dependencies = [ 5712 2697 "cc", 5713 - "downcast-rs 1.2.1", 2698 + "downcast-rs", 5714 2699 "rustix", 5715 2700 "scoped-tls", 5716 2701 "smallvec", ··· 5833 2818 ] 5834 2819 5835 2820 [[package]] 5836 - name = "webbrowser" 5837 - version = "1.0.4" 5838 - source = "registry+https://github.com/rust-lang/crates.io-index" 5839 - checksum = "d5df295f8451142f1856b1bd86a606dfe9587d439bc036e319c827700dbd555e" 5840 - dependencies = [ 5841 - "core-foundation 0.10.0", 5842 - "home", 5843 - "jni", 5844 - "log", 5845 - "ndk-context", 5846 - "objc2 0.6.1", 5847 - "objc2-foundation 0.3.1", 5848 - "url", 5849 - "web-sys", 5850 - ] 5851 - 5852 - [[package]] 5853 2821 name = "weezl" 5854 2822 version = "0.1.8" 5855 2823 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5857 2825 5858 2826 [[package]] 5859 2827 name = "wgpu" 5860 - version = "24.0.3" 5861 - source = "registry+https://github.com/rust-lang/crates.io-index" 5862 - checksum = "35904fb00ba2d2e0a4d002fcbbb6e1b89b574d272a50e5fc95f6e81cf281c245" 5863 - dependencies = [ 5864 - "arrayvec", 5865 - "bitflags 2.9.0", 5866 - "cfg_aliases", 5867 - "document-features", 5868 - "js-sys", 5869 - "log", 5870 - "naga 24.0.0", 5871 - "parking_lot", 5872 - "profiling", 5873 - "raw-window-handle", 5874 - "smallvec", 5875 - "static_assertions", 5876 - "wasm-bindgen", 5877 - "wasm-bindgen-futures", 5878 - "web-sys", 5879 - "wgpu-core 24.0.2", 5880 - "wgpu-hal 24.0.4", 5881 - "wgpu-types 24.0.0", 5882 - ] 5883 - 5884 - [[package]] 5885 - name = "wgpu" 5886 2828 version = "25.0.0" 5887 2829 source = "registry+https://github.com/rust-lang/crates.io-index" 5888 2830 checksum = "ca6049eb2014a0e0d8689f9b787605dd71d5bbfdc74095ead499f3cff705c229" ··· 5894 2836 "hashbrown", 5895 2837 "js-sys", 5896 2838 "log", 5897 - "naga 25.0.1", 2839 + "naga", 5898 2840 "parking_lot", 5899 2841 "portable-atomic", 5900 2842 "profiling", ··· 5904 2846 "wasm-bindgen", 5905 2847 "wasm-bindgen-futures", 5906 2848 "web-sys", 5907 - "wgpu-core 25.0.1", 5908 - "wgpu-hal 25.0.1", 5909 - "wgpu-types 25.0.0", 5910 - ] 5911 - 5912 - [[package]] 5913 - name = "wgpu-core" 5914 - version = "24.0.2" 5915 - source = "registry+https://github.com/rust-lang/crates.io-index" 5916 - checksum = "671c25545d479b47d3f0a8e373aceb2060b67c6eb841b24ac8c32348151c7a0c" 5917 - dependencies = [ 5918 - "arrayvec", 5919 - "bit-vec 0.8.0", 5920 - "bitflags 2.9.0", 5921 - "cfg_aliases", 5922 - "document-features", 5923 - "indexmap", 5924 - "log", 5925 - "naga 24.0.0", 5926 - "once_cell", 5927 - "parking_lot", 5928 - "profiling", 5929 - "raw-window-handle", 5930 - "rustc-hash", 5931 - "smallvec", 5932 - "thiserror 2.0.12", 5933 - "wgpu-hal 24.0.4", 5934 - "wgpu-types 24.0.0", 2849 + "wgpu-core", 2850 + "wgpu-hal", 2851 + "wgpu-types", 5935 2852 ] 5936 2853 5937 2854 [[package]] ··· 5941 2858 checksum = "a19813e647da7aa3cdaa84f5846e2c64114970ea7c86b1e6aae8be08091f4bdc" 5942 2859 dependencies = [ 5943 2860 "arrayvec", 5944 - "bit-set 0.8.0", 5945 - "bit-vec 0.8.0", 2861 + "bit-set", 2862 + "bit-vec", 5946 2863 "bitflags 2.9.0", 5947 2864 "cfg_aliases", 5948 2865 "document-features", 5949 2866 "hashbrown", 5950 2867 "indexmap", 5951 2868 "log", 5952 - "naga 25.0.1", 2869 + "naga", 5953 2870 "once_cell", 5954 2871 "parking_lot", 5955 2872 "portable-atomic", ··· 5961 2878 "wgpu-core-deps-apple", 5962 2879 "wgpu-core-deps-emscripten", 5963 2880 "wgpu-core-deps-windows-linux-android", 5964 - "wgpu-hal 25.0.1", 5965 - "wgpu-types 25.0.0", 2881 + "wgpu-hal", 2882 + "wgpu-types", 5966 2883 ] 5967 2884 5968 2885 [[package]] ··· 5971 2888 source = "registry+https://github.com/rust-lang/crates.io-index" 5972 2889 checksum = "cfd488b3239b6b7b185c3b045c39ca6bf8af34467a4c5de4e0b1a564135d093d" 5973 2890 dependencies = [ 5974 - "wgpu-hal 25.0.1", 2891 + "wgpu-hal", 5975 2892 ] 5976 2893 5977 2894 [[package]] ··· 5980 2897 source = "registry+https://github.com/rust-lang/crates.io-index" 5981 2898 checksum = "f09ad7aceb3818e52539acc679f049d3475775586f3f4e311c30165cf2c00445" 5982 2899 dependencies = [ 5983 - "wgpu-hal 25.0.1", 2900 + "wgpu-hal", 5984 2901 ] 5985 2902 5986 2903 [[package]] ··· 5989 2906 source = "registry+https://github.com/rust-lang/crates.io-index" 5990 2907 checksum = "cba5fb5f7f9c98baa7c889d444f63ace25574833df56f5b817985f641af58e46" 5991 2908 dependencies = [ 5992 - "wgpu-hal 25.0.1", 5993 - ] 5994 - 5995 - [[package]] 5996 - name = "wgpu-hal" 5997 - version = "24.0.4" 5998 - source = "registry+https://github.com/rust-lang/crates.io-index" 5999 - checksum = "f112f464674ca69f3533248508ee30cb84c67cf06c25ff6800685f5e0294e259" 6000 - dependencies = [ 6001 - "android_system_properties", 6002 - "arrayvec", 6003 - "ash", 6004 - "bit-set 0.8.0", 6005 - "bitflags 2.9.0", 6006 - "block", 6007 - "bytemuck", 6008 - "cfg_aliases", 6009 - "core-graphics-types", 6010 - "glow", 6011 - "glutin_wgl_sys", 6012 - "gpu-alloc", 6013 - "gpu-allocator", 6014 - "gpu-descriptor", 6015 - "js-sys", 6016 - "khronos-egl", 6017 - "libc", 6018 - "libloading", 6019 - "log", 6020 - "metal", 6021 - "naga 24.0.0", 6022 - "ndk-sys 0.5.0+25.2.9519653", 6023 - "objc", 6024 - "once_cell", 6025 - "ordered-float", 6026 - "parking_lot", 6027 - "profiling", 6028 - "range-alloc", 6029 - "raw-window-handle", 6030 - "renderdoc-sys", 6031 - "rustc-hash", 6032 - "smallvec", 6033 - "thiserror 2.0.12", 6034 - "wasm-bindgen", 6035 - "web-sys", 6036 - "wgpu-types 24.0.0", 6037 - "windows 0.58.0", 6038 - "windows-core 0.58.0", 2909 + "wgpu-hal", 6039 2910 ] 6040 2911 6041 2912 [[package]] ··· 6047 2918 "android_system_properties", 6048 2919 "arrayvec", 6049 2920 "ash", 6050 - "bit-set 0.8.0", 2921 + "bit-set", 6051 2922 "bitflags 2.9.0", 6052 2923 "block", 6053 2924 "bytemuck", ··· 6066 2937 "libloading", 6067 2938 "log", 6068 2939 "metal", 6069 - "naga 25.0.1", 2940 + "naga", 6070 2941 "ndk-sys 0.5.0+25.2.9519653", 6071 2942 "objc", 6072 2943 "ordered-float", ··· 6080 2951 "thiserror 2.0.12", 6081 2952 "wasm-bindgen", 6082 2953 "web-sys", 6083 - "wgpu-types 25.0.0", 6084 - "windows 0.58.0", 6085 - "windows-core 0.58.0", 6086 - ] 6087 - 6088 - [[package]] 6089 - name = "wgpu-types" 6090 - version = "24.0.0" 6091 - source = "registry+https://github.com/rust-lang/crates.io-index" 6092 - checksum = "50ac044c0e76c03a0378e7786ac505d010a873665e2d51383dcff8dd227dc69c" 6093 - dependencies = [ 6094 - "bitflags 2.9.0", 6095 - "js-sys", 6096 - "log", 6097 - "serde", 6098 - "web-sys", 2954 + "wgpu-types", 2955 + "windows", 2956 + "windows-core", 6099 2957 ] 6100 2958 6101 2959 [[package]] ··· 6123 2981 ] 6124 2982 6125 2983 [[package]] 6126 - name = "winapi" 6127 - version = "0.3.9" 6128 - source = "registry+https://github.com/rust-lang/crates.io-index" 6129 - checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 6130 - dependencies = [ 6131 - "winapi-i686-pc-windows-gnu", 6132 - "winapi-x86_64-pc-windows-gnu", 6133 - ] 6134 - 6135 - [[package]] 6136 - name = "winapi-i686-pc-windows-gnu" 6137 - version = "0.4.0" 6138 - source = "registry+https://github.com/rust-lang/crates.io-index" 6139 - checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 6140 - 6141 - [[package]] 6142 2984 name = "winapi-util" 6143 2985 version = "0.1.9" 6144 2986 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6148 2990 ] 6149 2991 6150 2992 [[package]] 6151 - name = "winapi-x86_64-pc-windows-gnu" 6152 - version = "0.4.0" 6153 - source = "registry+https://github.com/rust-lang/crates.io-index" 6154 - checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 6155 - 6156 - [[package]] 6157 - name = "windows" 6158 - version = "0.54.0" 6159 - source = "registry+https://github.com/rust-lang/crates.io-index" 6160 - checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" 6161 - dependencies = [ 6162 - "windows-core 0.54.0", 6163 - "windows-targets 0.52.6", 6164 - ] 6165 - 6166 - [[package]] 6167 - name = "windows" 6168 - version = "0.57.0" 6169 - source = "registry+https://github.com/rust-lang/crates.io-index" 6170 - checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" 6171 - dependencies = [ 6172 - "windows-core 0.57.0", 6173 - "windows-targets 0.52.6", 6174 - ] 6175 - 6176 - [[package]] 6177 2993 name = "windows" 6178 2994 version = "0.58.0" 6179 2995 source = "registry+https://github.com/rust-lang/crates.io-index" 6180 2996 checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" 6181 2997 dependencies = [ 6182 - "windows-core 0.58.0", 6183 - "windows-targets 0.52.6", 6184 - ] 6185 - 6186 - [[package]] 6187 - name = "windows" 6188 - version = "0.61.1" 6189 - source = "registry+https://github.com/rust-lang/crates.io-index" 6190 - checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419" 6191 - dependencies = [ 6192 - "windows-collections", 6193 - "windows-core 0.61.0", 6194 - "windows-future", 6195 - "windows-link", 6196 - "windows-numerics", 6197 - ] 6198 - 6199 - [[package]] 6200 - name = "windows-collections" 6201 - version = "0.2.0" 6202 - source = "registry+https://github.com/rust-lang/crates.io-index" 6203 - checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" 6204 - dependencies = [ 6205 - "windows-core 0.61.0", 6206 - ] 6207 - 6208 - [[package]] 6209 - name = "windows-core" 6210 - version = "0.54.0" 6211 - source = "registry+https://github.com/rust-lang/crates.io-index" 6212 - checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" 6213 - dependencies = [ 6214 - "windows-result 0.1.2", 6215 - "windows-targets 0.52.6", 6216 - ] 6217 - 6218 - [[package]] 6219 - name = "windows-core" 6220 - version = "0.57.0" 6221 - source = "registry+https://github.com/rust-lang/crates.io-index" 6222 - checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" 6223 - dependencies = [ 6224 - "windows-implement 0.57.0", 6225 - "windows-interface 0.57.0", 6226 - "windows-result 0.1.2", 2998 + "windows-core", 6227 2999 "windows-targets 0.52.6", 6228 3000 ] 6229 3001 ··· 6233 3005 source = "registry+https://github.com/rust-lang/crates.io-index" 6234 3006 checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" 6235 3007 dependencies = [ 6236 - "windows-implement 0.58.0", 6237 - "windows-interface 0.58.0", 6238 - "windows-result 0.2.0", 6239 - "windows-strings 0.1.0", 3008 + "windows-implement", 3009 + "windows-interface", 3010 + "windows-result", 3011 + "windows-strings", 6240 3012 "windows-targets 0.52.6", 6241 3013 ] 6242 3014 6243 3015 [[package]] 6244 - name = "windows-core" 6245 - version = "0.61.0" 6246 - source = "registry+https://github.com/rust-lang/crates.io-index" 6247 - checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" 6248 - dependencies = [ 6249 - "windows-implement 0.60.0", 6250 - "windows-interface 0.59.1", 6251 - "windows-link", 6252 - "windows-result 0.3.2", 6253 - "windows-strings 0.4.0", 6254 - ] 6255 - 6256 - [[package]] 6257 - name = "windows-future" 6258 - version = "0.2.0" 6259 - source = "registry+https://github.com/rust-lang/crates.io-index" 6260 - checksum = "7a1d6bbefcb7b60acd19828e1bc965da6fcf18a7e39490c5f8be71e54a19ba32" 6261 - dependencies = [ 6262 - "windows-core 0.61.0", 6263 - "windows-link", 6264 - ] 6265 - 6266 - [[package]] 6267 - name = "windows-implement" 6268 - version = "0.57.0" 6269 - source = "registry+https://github.com/rust-lang/crates.io-index" 6270 - checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" 6271 - dependencies = [ 6272 - "proc-macro2", 6273 - "quote", 6274 - "syn 2.0.101", 6275 - ] 6276 - 6277 - [[package]] 6278 3016 name = "windows-implement" 6279 3017 version = "0.58.0" 6280 3018 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6286 3024 ] 6287 3025 6288 3026 [[package]] 6289 - name = "windows-implement" 6290 - version = "0.60.0" 6291 - source = "registry+https://github.com/rust-lang/crates.io-index" 6292 - checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" 6293 - dependencies = [ 6294 - "proc-macro2", 6295 - "quote", 6296 - "syn 2.0.101", 6297 - ] 6298 - 6299 - [[package]] 6300 - name = "windows-interface" 6301 - version = "0.57.0" 6302 - source = "registry+https://github.com/rust-lang/crates.io-index" 6303 - checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" 6304 - dependencies = [ 6305 - "proc-macro2", 6306 - "quote", 6307 - "syn 2.0.101", 6308 - ] 6309 - 6310 - [[package]] 6311 3027 name = "windows-interface" 6312 3028 version = "0.58.0" 6313 3029 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6319 3035 ] 6320 3036 6321 3037 [[package]] 6322 - name = "windows-interface" 6323 - version = "0.59.1" 6324 - source = "registry+https://github.com/rust-lang/crates.io-index" 6325 - checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" 6326 - dependencies = [ 6327 - "proc-macro2", 6328 - "quote", 6329 - "syn 2.0.101", 6330 - ] 6331 - 6332 - [[package]] 6333 - name = "windows-link" 6334 - version = "0.1.1" 6335 - source = "registry+https://github.com/rust-lang/crates.io-index" 6336 - checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" 6337 - 6338 - [[package]] 6339 - name = "windows-numerics" 6340 - version = "0.2.0" 6341 - source = "registry+https://github.com/rust-lang/crates.io-index" 6342 - checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" 6343 - dependencies = [ 6344 - "windows-core 0.61.0", 6345 - "windows-link", 6346 - ] 6347 - 6348 - [[package]] 6349 - name = "windows-result" 6350 - version = "0.1.2" 6351 - source = "registry+https://github.com/rust-lang/crates.io-index" 6352 - checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" 6353 - dependencies = [ 6354 - "windows-targets 0.52.6", 6355 - ] 6356 - 6357 - [[package]] 6358 3038 name = "windows-result" 6359 3039 version = "0.2.0" 6360 3040 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6364 3044 ] 6365 3045 6366 3046 [[package]] 6367 - name = "windows-result" 6368 - version = "0.3.2" 6369 - source = "registry+https://github.com/rust-lang/crates.io-index" 6370 - checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" 6371 - dependencies = [ 6372 - "windows-link", 6373 - ] 6374 - 6375 - [[package]] 6376 3047 name = "windows-strings" 6377 3048 version = "0.1.0" 6378 3049 source = "registry+https://github.com/rust-lang/crates.io-index" 6379 3050 checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" 6380 3051 dependencies = [ 6381 - "windows-result 0.2.0", 3052 + "windows-result", 6382 3053 "windows-targets 0.52.6", 6383 3054 ] 6384 3055 6385 3056 [[package]] 6386 - name = "windows-strings" 6387 - version = "0.4.0" 6388 - source = "registry+https://github.com/rust-lang/crates.io-index" 6389 - checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" 6390 - dependencies = [ 6391 - "windows-link", 6392 - ] 6393 - 6394 - [[package]] 6395 3057 name = "windows-sys" 6396 3058 version = "0.45.0" 6397 3059 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6611 3273 "calloop", 6612 3274 "cfg_aliases", 6613 3275 "concurrent-queue", 6614 - "core-foundation 0.9.4", 3276 + "core-foundation", 6615 3277 "core-graphics", 6616 3278 "cursor-icon", 6617 3279 "dpi", 6618 3280 "js-sys", 6619 3281 "libc", 6620 3282 "memmap2", 6621 - "ndk 0.9.0", 6622 - "objc2 0.5.2", 6623 - "objc2-app-kit 0.2.2", 6624 - "objc2-foundation 0.2.2", 3283 + "ndk", 3284 + "objc2", 3285 + "objc2-app-kit", 3286 + "objc2-foundation", 6625 3287 "objc2-ui-kit", 6626 3288 "orbclient", 6627 3289 "percent-encoding", ··· 6667 3329 ] 6668 3330 6669 3331 [[package]] 6670 - name = "writeable" 6671 - version = "0.6.1" 6672 - source = "registry+https://github.com/rust-lang/crates.io-index" 6673 - checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" 6674 - 6675 - [[package]] 6676 3332 name = "x11-dl" 6677 3333 version = "2.21.0" 6678 3334 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6736 3392 checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda" 6737 3393 6738 3394 [[package]] 6739 - name = "yazi" 6740 - version = "0.2.1" 6741 - source = "registry+https://github.com/rust-lang/crates.io-index" 6742 - checksum = "e01738255b5a16e78bbb83e7fbba0a1e7dd506905cfc53f4622d89015a03fbb5" 6743 - 6744 - [[package]] 6745 - name = "yoke" 6746 - version = "0.8.0" 6747 - source = "registry+https://github.com/rust-lang/crates.io-index" 6748 - checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" 6749 - dependencies = [ 6750 - "serde", 6751 - "stable_deref_trait", 6752 - "yoke-derive", 6753 - "zerofrom", 6754 - ] 6755 - 6756 - [[package]] 6757 - name = "yoke-derive" 6758 - version = "0.8.0" 6759 - source = "registry+https://github.com/rust-lang/crates.io-index" 6760 - checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" 6761 - dependencies = [ 6762 - "proc-macro2", 6763 - "quote", 6764 - "syn 2.0.101", 6765 - "synstructure", 6766 - ] 6767 - 6768 - [[package]] 6769 - name = "zeno" 6770 - version = "0.3.3" 6771 - source = "registry+https://github.com/rust-lang/crates.io-index" 6772 - checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" 6773 - 6774 - [[package]] 6775 3395 name = "zerocopy" 6776 3396 version = "0.8.25" 6777 3397 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6785 3405 version = "0.8.25" 6786 3406 source = "registry+https://github.com/rust-lang/crates.io-index" 6787 3407 checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" 6788 - dependencies = [ 6789 - "proc-macro2", 6790 - "quote", 6791 - "syn 2.0.101", 6792 - ] 6793 - 6794 - [[package]] 6795 - name = "zerofrom" 6796 - version = "0.1.6" 6797 - source = "registry+https://github.com/rust-lang/crates.io-index" 6798 - checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" 6799 - dependencies = [ 6800 - "zerofrom-derive", 6801 - ] 6802 - 6803 - [[package]] 6804 - name = "zerofrom-derive" 6805 - version = "0.1.6" 6806 - source = "registry+https://github.com/rust-lang/crates.io-index" 6807 - checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" 6808 - dependencies = [ 6809 - "proc-macro2", 6810 - "quote", 6811 - "syn 2.0.101", 6812 - "synstructure", 6813 - ] 6814 - 6815 - [[package]] 6816 - name = "zerotrie" 6817 - version = "0.2.2" 6818 - source = "registry+https://github.com/rust-lang/crates.io-index" 6819 - checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" 6820 - dependencies = [ 6821 - "displaydoc", 6822 - "yoke", 6823 - "zerofrom", 6824 - ] 6825 - 6826 - [[package]] 6827 - name = "zerovec" 6828 - version = "0.11.2" 6829 - source = "registry+https://github.com/rust-lang/crates.io-index" 6830 - checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" 6831 - dependencies = [ 6832 - "yoke", 6833 - "zerofrom", 6834 - "zerovec-derive", 6835 - ] 6836 - 6837 - [[package]] 6838 - name = "zerovec-derive" 6839 - version = "0.11.1" 6840 - source = "registry+https://github.com/rust-lang/crates.io-index" 6841 - checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" 6842 3408 dependencies = [ 6843 3409 "proc-macro2", 6844 3410 "quote",
+9 -8
Cargo.toml
··· 1 1 [workspace] 2 2 resolver = "2" 3 - members = ["bevy_viewer", "lightweight_viewer", "vfl"] 3 + members = [ 4 + # bevy viewer is on the backburner 5 + # "crates/bevy_viewer", 6 + "crates/lightweight_viewer", 7 + "crates/vee_wgpu", 8 + "crates/vfl", 9 + ] 4 10 5 - # Enable a small amount of optimization in the dev profile. 6 - #[profile.dev] 7 - #opt-level = 1 8 - 9 - # Enable a large amount of optimization in the dev profile for dependencies. 10 - #[profile.dev.package."*"] 11 - #opt-level = 3 11 + [workspace.dependencies] 12 + vfl = { path = "crates/vfl" }
bevy_viewer/Cargo.toml crates/bevy_viewer/Cargo.toml
bevy_viewer/src/char.rs crates/bevy_viewer/src/char.rs
bevy_viewer/src/load.rs crates/bevy_viewer/src/load.rs
bevy_viewer/src/main.rs crates/bevy_viewer/src/main.rs
bevy_viewer/src/mask.rs crates/bevy_viewer/src/mask.rs
+14
crates/vee_wgpu/Cargo.toml
··· 1 + [package] 2 + name = "vee_wgpu" 3 + version = "0.1.0" 4 + edition = "2024" 5 + 6 + [dependencies] 7 + wgpu = "25" 8 + vfl = { path = "../vfl", features = ["draw", "res"] } 9 + bytemuck = "1.23.0" 10 + glam = "0.30.3" 11 + image = "0.25.6" 12 + nalgebra = "0.33.2" 13 + pollster = "0.4.0" 14 + futures-intrusive = "0.5.0"
+244
crates/vee_wgpu/src/headless.rs
··· 1 + use std::f32::consts::FRAC_PI_2; 2 + 3 + use camera::{Camera, CameraUniform}; 4 + use glam::{UVec2, Vec3, uvec2}; 5 + use image::{DynamicImage, RgbaImage}; 6 + use wgpu::{CommandEncoder, DeviceDescriptor, util::DeviceExt}; 7 + 8 + use crate::{ProgramState, texture::TextureBundle}; 9 + 10 + pub struct HeadlessRenderer { 11 + device: wgpu::Device, 12 + queue: wgpu::Queue, 13 + camera_bgl: wgpu::BindGroupLayout, 14 + camera_bg: wgpu::BindGroup, 15 + surface_fmt: wgpu::TextureFormat, 16 + depth_texture: TextureBundle, 17 + } 18 + 19 + impl ProgramState for HeadlessRenderer { 20 + fn device(&self) -> wgpu::Device { 21 + self.device.clone() 22 + } 23 + 24 + fn queue(&self) -> wgpu::Queue { 25 + self.queue.clone() 26 + } 27 + 28 + fn camera_bgl(&self) -> &wgpu::BindGroupLayout { 29 + &self.camera_bgl 30 + } 31 + 32 + fn camera_bg(&self) -> &wgpu::BindGroup { 33 + &self.camera_bg 34 + } 35 + 36 + fn surface_fmt(&self) -> wgpu::TextureFormat { 37 + self.surface_fmt 38 + } 39 + 40 + fn depth_texture(&self) -> &TextureBundle { 41 + &self.depth_texture 42 + } 43 + } 44 + 45 + impl Default for HeadlessRenderer { 46 + fn default() -> HeadlessRenderer { 47 + HeadlessRenderer::new() 48 + } 49 + } 50 + impl HeadlessRenderer { 51 + pub fn new() -> HeadlessRenderer { 52 + pollster::block_on(HeadlessRenderer::async_new()) 53 + } 54 + async fn async_new() -> HeadlessRenderer { 55 + const SIZE: UVec2 = uvec2(512, 512); 56 + let instance = wgpu::Instance::new(&wgpu::InstanceDescriptor { 57 + backends: wgpu::Backends::all(), 58 + ..Default::default() 59 + }); 60 + let adapter = instance 61 + .request_adapter(&wgpu::RequestAdapterOptions { 62 + power_preference: wgpu::PowerPreference::default(), 63 + compatible_surface: None, 64 + force_fallback_adapter: false, 65 + }) 66 + .await 67 + .unwrap(); 68 + let (device, queue) = adapter 69 + .request_device(&DeviceDescriptor::default()) 70 + .await 71 + .unwrap(); 72 + 73 + // let surface = instance.create_surface(window.clone()).unwrap(); 74 + // let cap = surface.get_capabilities(&adapter); 75 + // let surface_fmt = cap.formats[0]; 76 + let surface_fmt = wgpu::TextureFormat::Bgra8Unorm; 77 + 78 + let depth_texture = TextureBundle::create_depth_texture(&device, &SIZE, "depth_texture"); 79 + 80 + let camera = Camera { 81 + eye: (0.0, 25.0, 100.0).into(), 82 + target: (0.0, 25.0, 0.0).into(), 83 + up: Vec3::Y, 84 + aspect: SIZE.x as f32 / SIZE.y as f32, 85 + fov_y_radians: FRAC_PI_2, 86 + znear: 0.1, 87 + zfar: 10000.0, 88 + }; 89 + 90 + let mut camera_uniform = CameraUniform::new(); 91 + camera_uniform.update_view_proj(&camera); 92 + 93 + let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { 94 + label: Some("Camera Buffer"), 95 + contents: bytemuck::cast_slice(&[camera_uniform]), 96 + usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST, 97 + }); 98 + 99 + let camera_bgl = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { 100 + entries: &[wgpu::BindGroupLayoutEntry { 101 + binding: 0, 102 + visibility: wgpu::ShaderStages::VERTEX, 103 + ty: wgpu::BindingType::Buffer { 104 + ty: wgpu::BufferBindingType::Uniform, 105 + has_dynamic_offset: false, 106 + min_binding_size: None, 107 + }, 108 + count: None, 109 + }], 110 + label: Some("camera_bind_group_layout"), 111 + }); 112 + 113 + let camera_bg = device.create_bind_group(&wgpu::BindGroupDescriptor { 114 + layout: &camera_bgl, 115 + entries: &[wgpu::BindGroupEntry { 116 + binding: 0, 117 + resource: camera_buffer.as_entire_binding(), 118 + }], 119 + label: Some("camera_bind_group"), 120 + }); 121 + 122 + HeadlessRenderer { 123 + device, 124 + queue, 125 + camera_bgl, 126 + camera_bg, 127 + surface_fmt, 128 + depth_texture, 129 + } 130 + } 131 + 132 + #[allow(unused)] 133 + pub fn output_texture( 134 + &mut self, 135 + texture: &TextureBundle, 136 + mut encoder: CommandEncoder, 137 + ) -> DynamicImage { 138 + pollster::block_on(async { 139 + let u32_size = std::mem::size_of::<u32>() as u32; 140 + let output_buffer_size = wgpu::BufferAddress::from( 141 + u32_size * texture.texture.size().width * texture.texture.size().height, 142 + ); 143 + let output_buffer_desc = wgpu::BufferDescriptor { 144 + size: output_buffer_size, 145 + usage: wgpu::BufferUsages::COPY_DST 146 + // this tells wpgu that we want to read this buffer from the cpu 147 + | wgpu::BufferUsages::MAP_READ, 148 + label: None, 149 + mapped_at_creation: false, 150 + }; 151 + let output_buffer = self.device.create_buffer(&output_buffer_desc); 152 + 153 + encoder.copy_texture_to_buffer( 154 + wgpu::TexelCopyTextureInfo { 155 + aspect: wgpu::TextureAspect::All, 156 + texture: &texture.texture, 157 + mip_level: 0, 158 + origin: wgpu::Origin3d::ZERO, 159 + }, 160 + wgpu::TexelCopyBufferInfo { 161 + buffer: &output_buffer, 162 + layout: wgpu::TexelCopyBufferLayout { 163 + offset: 0, 164 + bytes_per_row: Some(u32_size * texture.texture.size().width), 165 + rows_per_image: Some(texture.texture.size().height), 166 + }, 167 + }, 168 + texture.texture.size(), 169 + ); 170 + 171 + self.queue.submit(Some(encoder.finish())); 172 + 173 + let image; 174 + // We need to scope the mapping variables so that we can 175 + // unmap the buffer 176 + { 177 + let buffer_slice = output_buffer.slice(..); 178 + 179 + // NOTE: We have to create the mapping THEN device.poll() before await 180 + // the future. Otherwise the application will freeze. 181 + let (tx, rx) = futures_intrusive::channel::shared::oneshot_channel(); 182 + buffer_slice.map_async(wgpu::MapMode::Read, move |result| { 183 + tx.send(result).unwrap(); 184 + }); 185 + self.device.poll(wgpu::PollType::Wait).unwrap(); 186 + rx.receive().await.unwrap().unwrap(); 187 + 188 + let data = &buffer_slice.get_mapped_range()[..]; 189 + 190 + use image::{ImageBuffer, Rgba}; 191 + let buffer: RgbaImage = ImageBuffer::<Rgba<u8>, _>::from_raw( 192 + texture.texture.size().width, 193 + texture.texture.size().height, 194 + data.to_owned(), 195 + ) 196 + .unwrap(); 197 + image = Some(DynamicImage::ImageRgba8(buffer)); 198 + } 199 + output_buffer.unmap(); 200 + 201 + image.unwrap() 202 + }) 203 + } 204 + } 205 + 206 + mod camera { 207 + use glam::{Mat4, Vec3}; 208 + 209 + pub struct Camera { 210 + pub eye: Vec3, 211 + pub target: Vec3, 212 + pub up: Vec3, 213 + pub aspect: f32, 214 + pub fov_y_radians: f32, 215 + pub znear: f32, 216 + pub zfar: f32, 217 + } 218 + 219 + impl Camera { 220 + pub fn build_view_projection_matrix(&self) -> Mat4 { 221 + let view = Mat4::look_at_rh(self.eye, self.target, self.up); 222 + let proj = Mat4::perspective_rh(self.fov_y_radians, self.aspect, self.znear, self.zfar); 223 + proj * view 224 + } 225 + } 226 + 227 + #[repr(C)] 228 + #[derive(Debug, Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)] 229 + pub struct CameraUniform { 230 + view_proj: [[f32; 4]; 4], 231 + } 232 + 233 + impl CameraUniform { 234 + pub fn new() -> Self { 235 + Self { 236 + view_proj: Mat4::IDENTITY.to_cols_array_2d(), 237 + } 238 + } 239 + 240 + pub fn update_view_proj(&mut self, camera: &Camera) { 241 + self.view_proj = camera.build_view_projection_matrix().to_cols_array_2d(); 242 + } 243 + } 244 + }
+705
crates/vee_wgpu/src/lib.rs
··· 1 + use bytemuck::cast_slice; 2 + use texture::TextureBundle; 3 + use vfl::draw::Vertex; 4 + use wgpu::{BlendState, CommandEncoder, TextureView}; 5 + use wgpu::{PipelineCompilationOptions, TexelCopyTextureInfo, include_wgsl, util::DeviceExt}; 6 + 7 + mod headless; 8 + 9 + pub type Model3d = vfl::draw::render_3d::GenericModel3d<TextureBundle>; 10 + 11 + #[repr(C)] 12 + #[derive(Debug, Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)] 13 + struct CharShapeUniform { 14 + diffuse_color: [f32; 4], 15 + position: [f32; 3], 16 + _pad: f32, 17 + scale: [f32; 3], 18 + _pad2: f32, 19 + } 20 + 21 + trait UniformBuffer { 22 + const ATTRIBS: [wgpu::VertexAttribute; 3]; 23 + 24 + fn desc() -> wgpu::VertexBufferLayout<'static>; 25 + } 26 + impl UniformBuffer for Vertex { 27 + const ATTRIBS: [wgpu::VertexAttribute; 3] = 28 + wgpu::vertex_attr_array![0 => Float32x3, 1 => Float32x2, 2 => Float32x3]; 29 + 30 + fn desc() -> wgpu::VertexBufferLayout<'static> { 31 + use std::mem; 32 + wgpu::VertexBufferLayout { 33 + array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress, 34 + step_mode: wgpu::VertexStepMode::Vertex, 35 + attributes: &Self::ATTRIBS, 36 + } 37 + } 38 + } 39 + 40 + #[repr(C)] 41 + #[derive(Debug, Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)] 42 + pub struct TextureTransformUniform { 43 + pub mvp_matrix: [[f32; 4]; 4], 44 + pub channel_replacements_r: [f32; 4], 45 + pub channel_replacements_g: [f32; 4], 46 + pub channel_replacements_b: [f32; 4], 47 + pub texture_type: u32, 48 + pub pad: [u32; 3], 49 + } 50 + 51 + pub trait ProgramState { 52 + fn device(&self) -> wgpu::Device; 53 + fn queue(&self) -> wgpu::Queue; 54 + fn camera_bgl(&self) -> &wgpu::BindGroupLayout; 55 + fn camera_bg(&self) -> &wgpu::BindGroup; 56 + fn surface_fmt(&self) -> wgpu::TextureFormat; 57 + fn depth_texture(&self) -> &TextureBundle; 58 + 59 + fn draw_texture( 60 + &mut self, 61 + tex: vfl::draw::DrawableTexture, 62 + view: &TextureView, 63 + encoder: &mut CommandEncoder, 64 + ) { 65 + self.draw_model_2d(&mut tex.model_2d(), view, encoder) 66 + } 67 + 68 + fn draw_model_2d( 69 + &mut self, 70 + mesh: &mut vfl::draw::render_2d::Model2d, 71 + view: &TextureView, 72 + encoder: &mut CommandEncoder, 73 + ) { 74 + if let Some(ref label) = mesh.label { 75 + encoder.push_debug_group(&format!("Texture {label}")); 76 + } 77 + 78 + let vertex_buffer = self 79 + .device() 80 + .create_buffer_init(&wgpu::util::BufferInitDescriptor { 81 + label: Some("Vertex Buffer"), 82 + contents: cast_slice(&mesh.vertices), 83 + usage: wgpu::BufferUsages::VERTEX, 84 + }); 85 + 86 + let index_buffer = self 87 + .device() 88 + .create_buffer_init(&wgpu::util::BufferInitDescriptor { 89 + label: Some("Index Buffer"), 90 + contents: cast_slice(&mesh.indices), 91 + usage: wgpu::BufferUsages::INDEX, 92 + }); 93 + 94 + let shape_texture_rgba = mesh.tex.to_rgba8(); 95 + let shape_texture_dimensions = shape_texture_rgba.dimensions(); 96 + let shape_texture_size = wgpu::Extent3d { 97 + width: shape_texture_dimensions.0, 98 + height: shape_texture_dimensions.1, 99 + depth_or_array_layers: 1, 100 + }; 101 + let shape_diffuse_texture = self.device().create_texture(&wgpu::TextureDescriptor { 102 + size: shape_texture_size, 103 + mip_level_count: 1, 104 + sample_count: 1, 105 + dimension: wgpu::TextureDimension::D2, 106 + format: self.surface_fmt(), 107 + usage: wgpu::TextureUsages::TEXTURE_BINDING | wgpu::TextureUsages::COPY_DST, 108 + label: Some("diffuse_texture"), 109 + view_formats: &[self.surface_fmt()], 110 + }); 111 + 112 + self.queue().write_texture( 113 + TexelCopyTextureInfo { 114 + texture: &shape_diffuse_texture, 115 + mip_level: 0, 116 + origin: wgpu::Origin3d::ZERO, 117 + aspect: wgpu::TextureAspect::All, 118 + }, 119 + &shape_texture_rgba, 120 + wgpu::TexelCopyBufferLayout { 121 + offset: 0, 122 + bytes_per_row: Some(4 * shape_texture_dimensions.0), 123 + rows_per_image: Some(shape_texture_dimensions.1), 124 + }, 125 + shape_texture_size, 126 + ); 127 + 128 + let shape_diffuse_texture_view = 129 + shape_diffuse_texture.create_view(&wgpu::TextureViewDescriptor::default()); 130 + let shape_diffuse_sampler = self.device().create_sampler(&wgpu::SamplerDescriptor { 131 + address_mode_u: wgpu::AddressMode::ClampToEdge, 132 + address_mode_v: wgpu::AddressMode::ClampToEdge, 133 + address_mode_w: wgpu::AddressMode::ClampToEdge, 134 + mag_filter: wgpu::FilterMode::Linear, 135 + min_filter: wgpu::FilterMode::Nearest, 136 + mipmap_filter: wgpu::FilterMode::Nearest, 137 + ..Default::default() 138 + }); 139 + 140 + let texture_bind_group_layout = 141 + self.device() 142 + .create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { 143 + entries: &[ 144 + wgpu::BindGroupLayoutEntry { 145 + binding: 0, 146 + visibility: wgpu::ShaderStages::FRAGMENT, 147 + ty: wgpu::BindingType::Texture { 148 + multisampled: false, 149 + view_dimension: wgpu::TextureViewDimension::D2, 150 + sample_type: wgpu::TextureSampleType::Float { filterable: true }, 151 + }, 152 + count: None, 153 + }, 154 + wgpu::BindGroupLayoutEntry { 155 + binding: 1, 156 + visibility: wgpu::ShaderStages::FRAGMENT, 157 + ty: wgpu::BindingType::Sampler(wgpu::SamplerBindingType::Filtering), 158 + count: None, 159 + }, 160 + ], 161 + label: Some("texture_bind_group_layout"), 162 + }); 163 + 164 + let shape_diffuse_bind_group = 165 + self.device().create_bind_group(&wgpu::BindGroupDescriptor { 166 + layout: &texture_bind_group_layout, 167 + entries: &[ 168 + wgpu::BindGroupEntry { 169 + binding: 0, 170 + resource: wgpu::BindingResource::TextureView(&shape_diffuse_texture_view), 171 + }, 172 + wgpu::BindGroupEntry { 173 + binding: 1, 174 + resource: wgpu::BindingResource::Sampler(&shape_diffuse_sampler), 175 + }, 176 + ], 177 + label: Some("diffuse_bind_group"), 178 + }); 179 + 180 + let mvp_matrix = mesh.mvp_matrix.into(); 181 + let mvp_uniform = TextureTransformUniform { 182 + mvp_matrix, 183 + channel_replacements_r: mesh.modulation.channels[0], 184 + channel_replacements_g: mesh.modulation.channels[1], 185 + channel_replacements_b: mesh.modulation.channels[2], 186 + texture_type: (Into::<u8>::into(mesh.modulation.mode)).into(), 187 + pad: Default::default(), 188 + }; 189 + 190 + let mvp_buffer = self 191 + .device() 192 + .create_buffer_init(&wgpu::util::BufferInitDescriptor { 193 + label: Some("MvpMatrix Buffer"), 194 + contents: cast_slice(&[mvp_uniform]), 195 + usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST, 196 + }); 197 + 198 + let mvp_bind_group_layout = 199 + self.device() 200 + .create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { 201 + entries: &[wgpu::BindGroupLayoutEntry { 202 + binding: 0, 203 + visibility: wgpu::ShaderStages::VERTEX | wgpu::ShaderStages::FRAGMENT, 204 + ty: wgpu::BindingType::Buffer { 205 + ty: wgpu::BufferBindingType::Uniform, 206 + has_dynamic_offset: false, 207 + min_binding_size: None, 208 + }, 209 + count: None, 210 + }], 211 + label: Some("mvp_bind_group_layout"), 212 + }); 213 + 214 + let mvp_bind_group = self.device().create_bind_group(&wgpu::BindGroupDescriptor { 215 + layout: &mvp_bind_group_layout, 216 + entries: &[wgpu::BindGroupEntry { 217 + binding: 0, 218 + resource: mvp_buffer.as_entire_binding(), 219 + }], 220 + label: Some("mvp_bind_group"), 221 + }); 222 + 223 + let shader_module = self 224 + .device() 225 + .create_shader_module(include_wgsl!("shader.wgsl")); 226 + let render_pipeline_layout = 227 + self.device() 228 + .create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { 229 + label: Some("Render Pipeline Layout"), 230 + bind_group_layouts: &[&texture_bind_group_layout, &mvp_bind_group_layout], 231 + push_constant_ranges: &[], 232 + }); 233 + let render_pipeline = 234 + self.device() 235 + .create_render_pipeline(&wgpu::RenderPipelineDescriptor { 236 + label: Some("Render Pipeline"), 237 + layout: Some(&render_pipeline_layout), 238 + vertex: wgpu::VertexState { 239 + module: &shader_module, 240 + entry_point: Some("vs_main"), 241 + buffers: &[Vertex::desc()], 242 + compilation_options: PipelineCompilationOptions::default(), 243 + }, 244 + fragment: Some(wgpu::FragmentState { 245 + module: &shader_module, 246 + entry_point: Some("fs_main"), 247 + targets: &[Some(wgpu::ColorTargetState { 248 + format: self.surface_fmt(), 249 + blend: Some(wgpu::BlendState::ALPHA_BLENDING), 250 + write_mask: wgpu::ColorWrites::ALL, 251 + })], 252 + compilation_options: PipelineCompilationOptions::default(), 253 + }), 254 + primitive: wgpu::PrimitiveState { 255 + topology: wgpu::PrimitiveTopology::TriangleList, 256 + strip_index_format: None, 257 + front_face: wgpu::FrontFace::Ccw, 258 + cull_mode: None, 259 + // Setting this to anything other than Fill requires Features::NON_FILL_POLYGON_MODE 260 + polygon_mode: wgpu::PolygonMode::Fill, 261 + // Requires Features::DEPTH_CLIP_CONTROL 262 + unclipped_depth: false, 263 + // Requires Features::CONSERVATIVE_RASTERIZATION 264 + conservative: false, 265 + }, 266 + depth_stencil: None, 267 + multisample: wgpu::MultisampleState { 268 + count: 1, 269 + mask: !0, 270 + alpha_to_coverage_enabled: false, 271 + }, 272 + // If the pipeline will be used with a multiview render pass, this 273 + // indicates how many array layers the attachments will have. 274 + multiview: None, 275 + cache: None, 276 + }); 277 + 278 + { 279 + let render_pass_desc = wgpu::RenderPassDescriptor { 280 + label: Some("Render Pass"), 281 + color_attachments: &[Some(wgpu::RenderPassColorAttachment { 282 + view, 283 + resolve_target: None, 284 + ops: wgpu::Operations { 285 + load: match mesh.opaque { 286 + Some([r, g, b, a]) => wgpu::LoadOp::Clear(wgpu::Color { 287 + r: r.into(), 288 + g: g.into(), 289 + b: b.into(), 290 + a: a.into(), 291 + }), 292 + None => wgpu::LoadOp::Load, 293 + }, 294 + store: wgpu::StoreOp::Store, 295 + }, 296 + })], 297 + depth_stencil_attachment: None, 298 + occlusion_query_set: None, 299 + timestamp_writes: None, 300 + }; 301 + let mut render_pass = encoder.begin_render_pass(&render_pass_desc); 302 + 303 + render_pass.set_pipeline(&render_pipeline); 304 + render_pass.set_bind_group(0, &shape_diffuse_bind_group, &[]); 305 + render_pass.set_bind_group(1, &mvp_bind_group, &[]); 306 + render_pass.set_vertex_buffer(0, vertex_buffer.slice(..)); 307 + render_pass.set_index_buffer(index_buffer.slice(..), wgpu::IndexFormat::Uint32); 308 + 309 + render_pass.draw_indexed(0..mesh.indices.len().try_into().unwrap(), 0, 0..1); 310 + } 311 + 312 + if mesh.label.is_some() { 313 + encoder.pop_debug_group(); 314 + } 315 + } 316 + 317 + fn draw_model_3d( 318 + &mut self, 319 + mesh: &mut Model3d, 320 + view: &TextureView, 321 + encoder: &mut CommandEncoder, 322 + ) { 323 + let vertex_buffer = self 324 + .device() 325 + .create_buffer_init(&wgpu::util::BufferInitDescriptor { 326 + label: Some("Vertex Buffer"), 327 + contents: cast_slice(&mesh.vertices), 328 + usage: wgpu::BufferUsages::VERTEX, 329 + }); 330 + 331 + let index_buffer = self 332 + .device() 333 + .create_buffer_init(&wgpu::util::BufferInitDescriptor { 334 + label: Some("Index Buffer"), 335 + contents: cast_slice(&mesh.indices), 336 + usage: wgpu::BufferUsages::INDEX, 337 + }); 338 + 339 + let char_shape_uniform = CharShapeUniform { 340 + diffuse_color: mesh.color.into(), 341 + position: mesh.position.into(), 342 + _pad: 0.0, 343 + scale: mesh.scale.into(), 344 + _pad2: 0.0, 345 + }; 346 + let char_shape_buffer = 347 + self.device() 348 + .create_buffer_init(&wgpu::util::BufferInitDescriptor { 349 + label: Some("Cs Buffer"), 350 + contents: cast_slice(&[char_shape_uniform]), 351 + usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST, 352 + }); 353 + let char_shape_bind_group_layout = 354 + self.device() 355 + .create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { 356 + entries: &[wgpu::BindGroupLayoutEntry { 357 + binding: 0, 358 + visibility: wgpu::ShaderStages::VERTEX | wgpu::ShaderStages::FRAGMENT, 359 + ty: wgpu::BindingType::Buffer { 360 + ty: wgpu::BufferBindingType::Uniform, 361 + has_dynamic_offset: false, 362 + min_binding_size: None, 363 + }, 364 + count: None, 365 + }], 366 + label: Some("cs_group_layout"), 367 + }); 368 + 369 + let char_shape_bind_group = self.device().create_bind_group(&wgpu::BindGroupDescriptor { 370 + layout: &char_shape_bind_group_layout, 371 + entries: &[wgpu::BindGroupEntry { 372 + binding: 0, 373 + resource: char_shape_buffer.as_entire_binding(), 374 + }], 375 + label: Some("cs_bind_group"), 376 + }); 377 + 378 + let mut bind_group_layouts = vec![self.camera_bgl(), &char_shape_bind_group_layout]; 379 + 380 + let projected_texture_bind_group_layout = 381 + self.device() 382 + .create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { 383 + entries: &[ 384 + wgpu::BindGroupLayoutEntry { 385 + binding: 0, 386 + visibility: wgpu::ShaderStages::FRAGMENT, 387 + ty: wgpu::BindingType::Texture { 388 + multisampled: false, 389 + view_dimension: wgpu::TextureViewDimension::D2, 390 + sample_type: wgpu::TextureSampleType::Float { filterable: true }, 391 + }, 392 + count: None, 393 + }, 394 + wgpu::BindGroupLayoutEntry { 395 + binding: 1, 396 + visibility: wgpu::ShaderStages::FRAGMENT, 397 + ty: wgpu::BindingType::Sampler(wgpu::SamplerBindingType::Filtering), 398 + count: None, 399 + }, 400 + ], 401 + label: Some("texture_bind_group_layout"), 402 + }); 403 + if mesh.texture.is_some() { 404 + bind_group_layouts.push(&projected_texture_bind_group_layout); 405 + } 406 + 407 + let shader_module = self 408 + .device() 409 + .create_shader_module(include_wgsl!("shader_3d.wgsl")); 410 + 411 + // Optional projected texture 412 + let projected_texture_bind_group = mesh.texture.as_ref().map(|texture| { 413 + self.device().create_bind_group(&wgpu::BindGroupDescriptor { 414 + layout: &projected_texture_bind_group_layout, 415 + entries: &[ 416 + wgpu::BindGroupEntry { 417 + binding: 0, 418 + resource: wgpu::BindingResource::TextureView(&texture.view), 419 + }, 420 + wgpu::BindGroupEntry { 421 + binding: 1, 422 + resource: wgpu::BindingResource::Sampler(&texture.sampler), 423 + }, 424 + ], 425 + label: Some("diffuse_bind_group"), 426 + }) 427 + }); 428 + 429 + let render_pipeline_layout = 430 + self.device() 431 + .create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { 432 + label: Some("Render Pipeline Layout"), 433 + bind_group_layouts: &bind_group_layouts, 434 + push_constant_ranges: &[], 435 + }); 436 + let render_pipeline = 437 + self.device() 438 + .create_render_pipeline(&wgpu::RenderPipelineDescriptor { 439 + label: Some("Render Pipeline"), 440 + layout: Some(&render_pipeline_layout), 441 + vertex: wgpu::VertexState { 442 + module: &shader_module, 443 + entry_point: Some("vs_main"), 444 + buffers: &[Vertex::desc()], 445 + compilation_options: PipelineCompilationOptions::default(), 446 + }, 447 + fragment: Some(wgpu::FragmentState { 448 + module: &shader_module, 449 + entry_point: if mesh.texture.is_some() { 450 + Some("fs_main") 451 + } else { 452 + Some("fs_color_only") 453 + }, 454 + targets: &[Some(wgpu::ColorTargetState { 455 + format: self.surface_fmt().add_srgb_suffix(), 456 + blend: Some(BlendState::ALPHA_BLENDING), 457 + write_mask: wgpu::ColorWrites::ALL, 458 + })], 459 + compilation_options: PipelineCompilationOptions::default(), 460 + }), 461 + primitive: wgpu::PrimitiveState { 462 + topology: wgpu::PrimitiveTopology::TriangleList, 463 + strip_index_format: None, 464 + front_face: wgpu::FrontFace::Ccw, 465 + cull_mode: None, // TODO toggle 466 + // Setting this to anything other than Fill requires Features::NON_FILL_POLYGON_MODE 467 + polygon_mode: wgpu::PolygonMode::Fill, 468 + // Requires Features::DEPTH_CLIP_CONTROL 469 + unclipped_depth: false, 470 + // Requires Features::CONSERVATIVE_RASTERIZATION 471 + conservative: false, 472 + }, 473 + depth_stencil: Some(wgpu::DepthStencilState { 474 + format: TextureBundle::DEPTH_FORMAT, 475 + depth_write_enabled: true, 476 + depth_compare: wgpu::CompareFunction::Less, // 1. 477 + stencil: wgpu::StencilState::default(), // 2. 478 + bias: wgpu::DepthBiasState::default(), 479 + }), 480 + multisample: wgpu::MultisampleState { 481 + count: 1, 482 + mask: !0, 483 + alpha_to_coverage_enabled: false, 484 + }, 485 + // If the pipeline will be used with a multiview render pass, this 486 + // indicates how many array layers the attachments will have. 487 + multiview: None, 488 + cache: None, 489 + }); 490 + 491 + // Scoped lifetime to drop the render pass 492 + { 493 + let render_pass_desc = wgpu::RenderPassDescriptor { 494 + label: Some("Render Pass"), 495 + color_attachments: &[Some(wgpu::RenderPassColorAttachment { 496 + view, 497 + resolve_target: None, 498 + ops: wgpu::Operations { 499 + load: wgpu::LoadOp::Load, 500 + store: wgpu::StoreOp::Store, 501 + }, 502 + })], 503 + depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment { 504 + view: &self.depth_texture().view, 505 + depth_ops: Some(wgpu::Operations { 506 + load: wgpu::LoadOp::Load, 507 + store: wgpu::StoreOp::Store, 508 + }), 509 + stencil_ops: None, 510 + }), 511 + occlusion_query_set: None, 512 + timestamp_writes: None, 513 + }; 514 + let mut render_pass = encoder.begin_render_pass(&render_pass_desc); 515 + 516 + render_pass.set_pipeline(&render_pipeline); 517 + render_pass.set_bind_group(0, self.camera_bg(), &[]); 518 + render_pass.set_bind_group(1, &char_shape_bind_group, &[]); 519 + render_pass.set_bind_group(2, &projected_texture_bind_group, &[]); 520 + render_pass.set_vertex_buffer(0, vertex_buffer.slice(..)); 521 + render_pass.set_index_buffer(index_buffer.slice(..), wgpu::IndexFormat::Uint32); 522 + 523 + render_pass.draw_indexed(0..mesh.indices.len().try_into().unwrap(), 0, 0..1); 524 + } 525 + } 526 + } 527 + 528 + pub mod texture { 529 + use std::error::Error; 530 + use std::fmt::Debug; 531 + 532 + use glam::UVec2; 533 + use image::GenericImageView; 534 + use wgpu::TextureFormat; 535 + 536 + pub struct TextureBundle { 537 + #[allow(unused)] 538 + pub texture: wgpu::Texture, 539 + pub view: wgpu::TextureView, 540 + pub sampler: wgpu::Sampler, 541 + } 542 + impl Debug for TextureBundle { 543 + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 544 + f.debug_struct("Texture").finish() 545 + } 546 + } 547 + 548 + #[allow(unused)] 549 + impl TextureBundle { 550 + pub fn from_bytes( 551 + device: &wgpu::Device, 552 + queue: &wgpu::Queue, 553 + bytes: &[u8], 554 + label: &str, 555 + ) -> Result<Self, Box<dyn Error>> { 556 + let img = image::load_from_memory(bytes)?; 557 + Self::from_image(device, queue, &img, Some(label)) 558 + } 559 + 560 + pub fn from_image( 561 + device: &wgpu::Device, 562 + queue: &wgpu::Queue, 563 + img: &image::DynamicImage, 564 + label: Option<&str>, 565 + ) -> Result<Self, Box<dyn Error>> { 566 + let rgba = img.to_rgba8(); 567 + let dimensions = img.dimensions(); 568 + 569 + let size = wgpu::Extent3d { 570 + width: dimensions.0, 571 + height: dimensions.1, 572 + depth_or_array_layers: 1, 573 + }; 574 + let texture = device.create_texture(&wgpu::TextureDescriptor { 575 + label, 576 + size, 577 + mip_level_count: 1, 578 + sample_count: 1, 579 + dimension: wgpu::TextureDimension::D2, 580 + format: wgpu::TextureFormat::Rgba8UnormSrgb, 581 + usage: wgpu::TextureUsages::TEXTURE_BINDING | wgpu::TextureUsages::COPY_DST, 582 + view_formats: &[], 583 + }); 584 + 585 + queue.write_texture( 586 + wgpu::TexelCopyTextureInfo { 587 + aspect: wgpu::TextureAspect::All, 588 + texture: &texture, 589 + mip_level: 0, 590 + origin: wgpu::Origin3d::ZERO, 591 + }, 592 + &rgba, 593 + wgpu::TexelCopyBufferLayout { 594 + offset: 0, 595 + bytes_per_row: Some(4 * dimensions.0), 596 + rows_per_image: Some(dimensions.1), 597 + }, 598 + size, 599 + ); 600 + 601 + let view = texture.create_view(&wgpu::TextureViewDescriptor::default()); 602 + let sampler = device.create_sampler(&wgpu::SamplerDescriptor { 603 + address_mode_u: wgpu::AddressMode::ClampToEdge, 604 + address_mode_v: wgpu::AddressMode::ClampToEdge, 605 + address_mode_w: wgpu::AddressMode::ClampToEdge, 606 + mag_filter: wgpu::FilterMode::Linear, 607 + min_filter: wgpu::FilterMode::Nearest, 608 + mipmap_filter: wgpu::FilterMode::Nearest, 609 + ..Default::default() 610 + }); 611 + 612 + Ok(Self { 613 + texture, 614 + view, 615 + sampler, 616 + }) 617 + } 618 + 619 + pub const DEPTH_FORMAT: wgpu::TextureFormat = wgpu::TextureFormat::Depth32Float; // 1. 620 + 621 + pub fn create_depth_texture(device: &wgpu::Device, size: &UVec2, label: &str) -> Self { 622 + let size = wgpu::Extent3d { 623 + // 2. 624 + width: size.x.max(1), 625 + height: size.y.max(1), 626 + depth_or_array_layers: 1, 627 + }; 628 + let desc = wgpu::TextureDescriptor { 629 + label: Some(label), 630 + size, 631 + mip_level_count: 1, 632 + sample_count: 1, 633 + dimension: wgpu::TextureDimension::D2, 634 + format: Self::DEPTH_FORMAT, 635 + usage: wgpu::TextureUsages::RENDER_ATTACHMENT // 3. 636 + | wgpu::TextureUsages::TEXTURE_BINDING, 637 + view_formats: &[], 638 + }; 639 + let texture = device.create_texture(&desc); 640 + 641 + let view = texture.create_view(&wgpu::TextureViewDescriptor::default()); 642 + let sampler = device.create_sampler(&wgpu::SamplerDescriptor { 643 + // 4. 644 + address_mode_u: wgpu::AddressMode::ClampToEdge, 645 + address_mode_v: wgpu::AddressMode::ClampToEdge, 646 + address_mode_w: wgpu::AddressMode::ClampToEdge, 647 + mag_filter: wgpu::FilterMode::Linear, 648 + min_filter: wgpu::FilterMode::Linear, 649 + mipmap_filter: wgpu::FilterMode::Nearest, 650 + compare: Some(wgpu::CompareFunction::LessEqual), // 5. 651 + lod_min_clamp: 0.0, 652 + lod_max_clamp: 100.0, 653 + ..Default::default() 654 + }); 655 + 656 + Self { 657 + texture, 658 + view, 659 + sampler, 660 + } 661 + } 662 + 663 + pub fn create_texture(device: &wgpu::Device, size: &UVec2, label: &str) -> Self { 664 + let size = wgpu::Extent3d { 665 + // 2. 666 + width: size.x.max(1), 667 + height: size.y.max(1), 668 + depth_or_array_layers: 1, 669 + }; 670 + let desc = wgpu::TextureDescriptor { 671 + label: Some(label), 672 + size, 673 + mip_level_count: 1, 674 + sample_count: 1, 675 + dimension: wgpu::TextureDimension::D2, 676 + format: TextureFormat::Bgra8UnormSrgb, 677 + usage: wgpu::TextureUsages::RENDER_ATTACHMENT // 3. 678 + | wgpu::TextureUsages::TEXTURE_BINDING 679 + | wgpu::TextureUsages::COPY_SRC, 680 + view_formats: &[], 681 + }; 682 + let texture = device.create_texture(&desc); 683 + 684 + let view = texture.create_view(&wgpu::TextureViewDescriptor::default()); 685 + let sampler = device.create_sampler(&wgpu::SamplerDescriptor { 686 + // 4. 687 + address_mode_u: wgpu::AddressMode::MirrorRepeat, 688 + address_mode_v: wgpu::AddressMode::MirrorRepeat, 689 + address_mode_w: wgpu::AddressMode::MirrorRepeat, 690 + mag_filter: wgpu::FilterMode::Linear, 691 + min_filter: wgpu::FilterMode::Linear, 692 + mipmap_filter: wgpu::FilterMode::Nearest, 693 + lod_min_clamp: 0.0, 694 + lod_max_clamp: 100.0, 695 + ..Default::default() 696 + }); 697 + 698 + Self { 699 + texture, 700 + view, 701 + sampler, 702 + } 703 + } 704 + } 705 + }
+93
crates/vfl/src/draw/mod.rs
··· 1 + use crate::color::nx::ModulationIntent; 2 + use faceline::trivial_quad; 3 + use image::DynamicImage; 4 + use nalgebra as na; 5 + use render_2d::Model2d; 6 + use render_3d::GenericModel3d; 7 + 8 + #[cfg(feature = "draw")] 9 + pub mod render_2d; 10 + #[cfg(feature = "draw")] 11 + pub mod render_3d; 12 + #[cfg(feature = "draw")] 13 + pub mod wgpu_render; 14 + 15 + pub mod faceline; 16 + pub mod mask; 17 + 18 + pub const TEX_SCALE_X: f32 = 0.889_614_64; 19 + pub const TEX_SCALE_Y: f32 = 0.927_667_5; 20 + 21 + #[repr(C)] 22 + #[derive(Copy, Clone, Debug, bytemuck::Pod, bytemuck::Zeroable)] 23 + pub struct Vertex { 24 + pub position: [f32; 3], 25 + pub tex_coords: [f32; 2], 26 + pub normal: [f32; 3], 27 + } 28 + 29 + pub struct DrawableTexture { 30 + pub rendered_texture: DynamicImage, 31 + pub modulation: ModulationIntent, 32 + pub opaque: Option<[f32; 4]>, 33 + } 34 + impl DrawableTexture { 35 + #[must_use] 36 + pub fn model_2d(self) -> Model2d { 37 + let (vertices, indices) = trivial_quad(); 38 + 39 + let mvp_matrix = { 40 + let scale = na::Vector3::<f32>::new(-2.0, -2.0, 1.0); // IDK 41 + 42 + na::Matrix4::new_nonuniform_scaling(&scale) 43 + }; 44 + 45 + Model2d { 46 + vertices, 47 + indices, 48 + tex: self.rendered_texture, 49 + mvp_matrix, 50 + modulation: self.modulation, 51 + opaque: self.opaque, 52 + label: None, 53 + } 54 + } 55 + } 56 + 57 + pub trait AbstractRenderer { 58 + type DrawState; 59 + 60 + fn draw_texture<Rt, Cb>( 61 + &mut self, 62 + texture: DrawableTexture, 63 + render_target: Rt, 64 + command_buffer: Cb, 65 + ) { 66 + let (vertices, indices) = trivial_quad(); 67 + 68 + let mvp_matrix = { 69 + let scale = na::Vector3::<f32>::new(-2.0, -2.0, 1.0); // IDK 70 + 71 + na::Matrix4::new_nonuniform_scaling(&scale) 72 + }; 73 + 74 + let rendered_2d_shape = Model2d { 75 + vertices, 76 + indices, 77 + tex: texture.rendered_texture, 78 + mvp_matrix, 79 + modulation: texture.modulation, 80 + opaque: texture.opaque, 81 + label: None, 82 + }; 83 + 84 + self.draw_model_2d(rendered_2d_shape, render_target, command_buffer); 85 + } 86 + fn draw_model_2d<Rt, Cb>(&mut self, mesh: Model2d, render_target: Rt, command_buffer: Cb); 87 + fn draw_model_3d<Tex, Rt, Cb>( 88 + &mut self, 89 + mesh: GenericModel3d<Tex>, 90 + render_target: Rt, 91 + command_buffer: Cb, 92 + ); 93 + }
+18
crates/vfl/src/draw/render_2d.rs
··· 1 + use super::Vertex; 2 + use crate::color::nx::ModulationIntent; 3 + use image::DynamicImage; 4 + use nalgebra::Matrix4; 5 + 6 + type Color = [f32; 4]; 7 + 8 + const NON_REPLACEMENT: Color = [f32::NAN, f32::NAN, f32::NAN, f32::NAN]; 9 + #[derive(Debug)] 10 + pub struct Model2d { 11 + pub vertices: Vec<Vertex>, 12 + pub indices: Vec<u32>, 13 + pub tex: DynamicImage, 14 + pub mvp_matrix: Matrix4<f32>, 15 + pub modulation: ModulationIntent, 16 + pub opaque: Option<Color>, 17 + pub label: Option<String>, 18 + }
+13
crates/vfl/src/draw/render_3d.rs
··· 1 + use glam::{Vec3, Vec4}; 2 + 3 + use super::Vertex; 4 + 5 + #[derive(Default, Debug)] 6 + pub struct GenericModel3d<Tex> { 7 + pub vertices: Vec<Vertex>, 8 + pub indices: Vec<u32>, 9 + pub color: Vec4, 10 + pub texture: Option<Tex>, 11 + pub position: Vec3, 12 + pub scale: Vec3, 13 + }
+317
crates/vfl/src/draw/wgpu_render.rs
··· 1 + use super::TEX_SCALE_X; 2 + use super::TEX_SCALE_Y; 3 + use super::Vertex; 4 + use super::mask::{FacePart, ImageOrigin, MaskFaceParts}; 5 + use super::render_2d::Model2d; 6 + use crate::{ 7 + charinfo::nx::NxCharInfo, 8 + color::nx::{ColorModulated, modulate}, 9 + res::tex::nx::{ResourceTexture, TextureElement}, 10 + }; 11 + use glam::{UVec2, uvec2, vec3}; 12 + use nalgebra::Matrix4; 13 + 14 + pub const FACE_OUTPUT_SIZE: u16 = 512; 15 + pub use bytemuck::cast_slice; 16 + 17 + const NON_REPLACEMENT: [f32; 4] = [f32::NAN, f32::NAN, f32::NAN, f32::NAN]; 18 + 19 + pub struct RenderContext { 20 + size: UVec2, 21 + pub shape: Vec<Model2d>, 22 + } 23 + impl RenderContext { 24 + fn from_shapes(shape: Vec<Model2d>) -> RenderContext { 25 + RenderContext { 26 + size: uvec2(FACE_OUTPUT_SIZE.into(), FACE_OUTPUT_SIZE.into()), 27 + shape, 28 + } 29 + } 30 + } 31 + 32 + impl RenderContext { 33 + /// # Panics 34 + /// - Panics if image loading fails. 35 + pub fn new( 36 + char: &NxCharInfo, 37 + res_texture: &ResourceTexture, 38 + file_texture: &[u8], 39 + ) -> RenderContext { 40 + let mask = MaskFaceParts::init(char, 256.0); 41 + 42 + let make_shape = |part: FacePart, modulated: ColorModulated, tex_data: TextureElement| { 43 + let (vertices, indices, mtx) = quad( 44 + part.x, 45 + part.y, 46 + part.width, 47 + part.height, 48 + part.angle_deg, 49 + part.origin, 50 + 256.0, 51 + ); 52 + 53 + let tex = tex_data.get_image(file_texture).unwrap().unwrap(); 54 + 55 + Model2d { 56 + vertices, 57 + indices, 58 + tex: image::DynamicImage::ImageRgba8(tex), 59 + mvp_matrix: mtx, 60 + modulation: modulate(modulated, char), 61 + opaque: None, 62 + label: Some(format!("{modulated:?}")), 63 + } 64 + }; 65 + 66 + let left_eye = make_shape( 67 + mask.eye[0], 68 + ColorModulated::Eye, 69 + res_texture.eye[char.eye_type as usize], 70 + ); 71 + let right_eye = make_shape( 72 + mask.eye[1], 73 + ColorModulated::Eye, 74 + res_texture.eye[char.eye_type as usize], 75 + ); 76 + 77 + let left_brow = make_shape( 78 + mask.eyebrow[0], 79 + ColorModulated::Eyebrow, 80 + res_texture.eyebrow[char.eyebrow_type as usize], 81 + ); 82 + let right_brow = make_shape( 83 + mask.eyebrow[1], 84 + ColorModulated::Eyebrow, 85 + res_texture.eyebrow[char.eyebrow_type as usize], 86 + ); 87 + 88 + let mouth = make_shape( 89 + mask.mouth, 90 + ColorModulated::Mouth, 91 + res_texture.mouth[char.mouth_type as usize], 92 + ); 93 + 94 + RenderContext { 95 + size: uvec2(FACE_OUTPUT_SIZE.into(), FACE_OUTPUT_SIZE.into()), 96 + shape: vec![left_eye, right_eye, left_brow, right_brow, mouth], 97 + } 98 + } 99 + 100 + /// # Panics 101 + /// - Panics if image loading fails. 102 + pub fn new_faceline( 103 + char: &NxCharInfo, 104 + res_texture: &ResourceTexture, 105 + file_texture: &[u8], 106 + ) -> Self { 107 + let mask = MaskFaceParts::init(char, 256.0); 108 + 109 + let make_shape = |part: FacePart, modulated: ColorModulated, tex_data: TextureElement| { 110 + let (vertices, indices, mtx) = quad( 111 + part.x, 112 + part.y, 113 + part.width, 114 + part.height, 115 + part.angle_deg, 116 + part.origin, 117 + 256.0, 118 + ); 119 + 120 + let tex = tex_data.get_image(file_texture).unwrap().unwrap(); 121 + 122 + Model2d { 123 + vertices, 124 + indices, 125 + tex: image::DynamicImage::ImageRgba8(tex), 126 + mvp_matrix: mtx, 127 + modulation: modulate(modulated, char), 128 + opaque: None, 129 + label: Some(format!("{modulated:?}")), 130 + } 131 + }; 132 + 133 + let mouth = make_shape( 134 + mask.mouth, 135 + ColorModulated::Mouth, 136 + res_texture.mouth[char.mouth_type as usize], 137 + ); 138 + 139 + RenderContext { 140 + size: uvec2(FACE_OUTPUT_SIZE.into(), FACE_OUTPUT_SIZE.into()), 141 + shape: vec![mouth], 142 + } 143 + } 144 + } 145 + 146 + pub fn model_view_matrix( 147 + translation: mint::Vector3<f32>, 148 + scale: mint::Vector3<f32>, 149 + rot_z: f32, 150 + ) -> nalgebra::Matrix4<f32> { 151 + let scale = nalgebra::Vector3::<f32>::from(scale); 152 + let translation = nalgebra::Vector3::<f32>::from(translation); 153 + 154 + let mut mtx = nalgebra::Matrix4::identity(); 155 + mtx.append_nonuniform_scaling_mut(&scale); 156 + mtx *= nalgebra::Rotation3::from_euler_angles(0.0, 0.0, rot_z.to_radians()).to_homogeneous(); 157 + mtx.append_nonuniform_scaling_mut(&nalgebra::Vector3::new(TEX_SCALE_X, TEX_SCALE_Y, 1.0)); 158 + mtx.append_translation_mut(&translation); 159 + 160 + mtx 161 + } 162 + 163 + fn v2(x: f32, y: f32) -> [f32; 3] { 164 + [x, y, 0.0] 165 + } 166 + 167 + // https://github.com/SMGCommunity/Petari/blob/6e9ae741a99bb32e6ffbb230a88c976f539dde70/src/RVLFaceLib/RFL_MakeTex.c#L817 168 + /// # Panics 169 + /// Shouldn't panic! 170 + pub fn quad( 171 + x: f32, 172 + y: f32, 173 + width: f32, 174 + height: f32, 175 + rot_z: f32, 176 + origin: ImageOrigin, 177 + resolution: f32, 178 + ) -> (Vec<Vertex>, Vec<u32>, nalgebra::Matrix4<f32>) { 179 + let base_x: f32; 180 + let s0: f32; 181 + let s1: f32; 182 + 183 + let mv_mtx = model_view_matrix( 184 + vec3(x, resolution - y, 0.0).into(), 185 + vec3(width, height, 1.0).into(), 186 + rot_z, 187 + ); 188 + 189 + let p_mtx = Matrix4::new_orthographic(0.0, resolution, 0.0, resolution, -200.0, 200.0); 190 + let mut mvp_mtx = p_mtx * mv_mtx; 191 + 192 + *mvp_mtx 193 + .get_mut((1, 1)) 194 + .expect("That index is never going to be out of bounds") *= -1.0; 195 + 196 + match origin { 197 + ImageOrigin::Center => { 198 + base_x = -0.5; 199 + s0 = 1.0; 200 + s1 = 0.0; 201 + } 202 + ImageOrigin::Right => { 203 + base_x = -1.0; 204 + s0 = 1.0; 205 + s1 = 0.0; 206 + } 207 + ImageOrigin::Left | ImageOrigin::Ignore => { 208 + base_x = 0.0; 209 + s0 = 0.0; 210 + s1 = 1.0; 211 + } 212 + } 213 + 214 + ( 215 + vec![ 216 + Vertex { 217 + position: v2(1.0 + base_x, -0.5), 218 + tex_coords: [s0, 0.0], 219 + normal: [0.0, 0.0, 0.0], 220 + }, 221 + Vertex { 222 + position: v2(1.0 + base_x, 0.5), 223 + tex_coords: [s0, 1.0], 224 + normal: [0.0, 0.0, 0.0], 225 + }, 226 + Vertex { 227 + position: v2(base_x, 0.5), 228 + tex_coords: [s1, 1.0], 229 + normal: [0.0, 0.0, 0.0], 230 + }, 231 + Vertex { 232 + position: v2(base_x, -0.5), 233 + tex_coords: [s1, 0.0], 234 + normal: [0.0, 0.0, 0.0], 235 + }, 236 + ], 237 + vec![0, 1, 2, 0, 2, 3], 238 + mvp_mtx, 239 + ) 240 + } 241 + 242 + #[cfg(test)] 243 + mod tests { 244 + // use crate::draw::mask::MaskFaceParts; 245 + // use crate::res::shape::nx::{ResourceShape, SHAPE_MID_DAT}; 246 + // use crate::res::tex::nx::{ResourceTexture, TEXTURE_MID_SRGB_DAT}; 247 + // use binrw::BinRead; 248 + // use glam::uvec2; 249 + // use image_compare::Algorithm; 250 + 251 + // use super::*; 252 + // use std::{error::Error, fs::File, io::BufReader}; 253 + 254 + // type R = Result<(), Box<dyn Error>>; 255 + 256 + // #[test] 257 + // #[allow(clippy::too_many_lines)] 258 + // fn test_render() -> R { 259 + // let mut tex_file = BufReader::new(File::open(TEXTURE_MID_SRGB_DAT)?); 260 + // let mut tex_shape = BufReader::new(File::open(SHAPE_MID_DAT)?); 261 + 262 + // let mut char = 263 + // File::open(concat!(env!("CARGO_MANIFEST_DIR"), "/../Jasmine.charinfo")).unwrap(); 264 + // let char = NxCharInfo::read(&mut char).unwrap(); 265 + 266 + // let image = pollster::block_on(render_context_wgpu(RenderContext::new( 267 + // // &FaceParts::init(&char, 256.0), 268 + // &char, 269 + // (&mut tex_shape, &mut tex_file), 270 + // )?)); 271 + // let image = image.flipv(); 272 + 273 + // image.save(concat!( 274 + // env!("CARGO_MANIFEST_DIR"), 275 + // "/test_output/mask-rendered.png" 276 + // ))?; 277 + 278 + // let reference_image = image::open(concat!( 279 + // env!("CARGO_MANIFEST_DIR"), 280 + // "/test_data/jasmine-mask.png" 281 + // )) 282 + // .unwrap(); 283 + 284 + // let similarity = image_compare::rgb_hybrid_compare( 285 + // &image.clone().into_rgb8(), 286 + // &reference_image.clone().into_rgb8(), 287 + // ) 288 + // .expect("wrong size!"); 289 + 290 + // similarity 291 + // .image 292 + // .to_color_map() 293 + // .save(concat!( 294 + // env!("CARGO_MANIFEST_DIR"), 295 + // "/test_output/mask-similarity.png" 296 + // )) 297 + // .unwrap(); 298 + 299 + // let similarity = image_compare::gray_similarity_structure( 300 + // &Algorithm::MSSIMSimple, 301 + // &image.into_luma8(), 302 + // &reference_image.into_luma8(), 303 + // ) 304 + // .expect("wrong size!"); 305 + 306 + // similarity 307 + // .image 308 + // .to_color_map() 309 + // .save(concat!( 310 + // env!("CARGO_MANIFEST_DIR"), 311 + // "/test_output/mask-similarity-grey.png" 312 + // )) 313 + // .unwrap(); 314 + 315 + // Ok(()) 316 + // } 317 + }
+1
lightweight_viewer/Cargo.toml crates/lightweight_viewer/Cargo.toml
··· 8 8 wgpu = "25.0.0" 9 9 winit = { version = "0.30.11" } 10 10 vfl = { path = "../vfl", features = ["res", "draw"] } 11 + vee_wgpu = { path = "../vee_wgpu" } 11 12 glam = { version = "0.30.3", features = ["bytemuck"] } 12 13 bytemuck = "1.23.0" 13 14 image = "0.25.6"
lightweight_viewer/src/app.rs crates/lightweight_viewer/src/app.rs
+32 -36
lightweight_viewer/src/char_draw.rs crates/lightweight_viewer/src/char_draw.rs
··· 1 1 use crate::state::State; 2 2 use glam::{UVec2, Vec3, uvec2, vec3, vec4}; 3 3 use image::DynamicImage; 4 + use vee_wgpu::texture::TextureBundle; 5 + use vee_wgpu::{Model3d, ProgramState}; 4 6 use vfl::color::nx::ModulationIntent; 5 - use vfl::color::nx::linear::FACELINE_COLOR; 6 - use vfl::draw::render_3d::Rendered3dShape; 7 - use vfl::draw::wgpu_render::Vertex; 7 + use vfl::draw::render_3d::GenericModel3d; 8 + use vfl::draw::{DrawableTexture, Vertex}; 8 9 use vfl::res::shape::nx::ShapeData; 9 10 use vfl::res::tex::nx::{ResourceTexture, TextureElement}; 10 11 use vfl::{ 11 12 color::nx::{ColorModulated, modulate}, 12 - draw::{ 13 - render_2d::Rendered2dShape, 14 - wgpu_render::{RenderContext, texture}, 15 - }, 13 + draw::wgpu_render::RenderContext, 16 14 res::shape::nx::{GenericResourceShape, Shape}, 17 15 }; 18 16 use wgpu::{CommandEncoder, TextureView}; ··· 33 31 .unwrap(); 34 32 let tex = DynamicImage::ImageRgba8(tex); 35 33 36 - Rendered2dShape::render_texture_trivial( 37 - tex, 38 - modulate(ColorModulated::NoseLineShape, &st.char_info), 39 - None, 40 - st, 34 + st.draw_texture( 35 + DrawableTexture { 36 + rendered_texture: tex, 37 + modulation: modulate(ColorModulated::NoseLineShape, &st.char_info), 38 + opaque: None, 39 + }, 41 40 texture_view, 42 41 encoder, 43 - Some("noseline".to_owned()), 44 42 ); 45 43 } 46 44 47 45 pub(crate) fn draw_mask(st: &mut State, texture_view: &TextureView, encoder: &mut CommandEncoder) { 48 - let res_shape = &st.resources.shape_header; 49 46 let res_texture = &st.resources.texture_header; 50 47 let file_texture = &st.resources.texture_data; 51 48 52 - let render_context = 53 - RenderContext::new(&st.char_info.clone(), res_texture, res_shape, file_texture).unwrap(); 49 + let render_context = RenderContext::new(&st.char_info.clone(), res_texture, file_texture); 54 50 55 - for shape in render_context.shape { 56 - shape.render(st, texture_view, encoder); 51 + for mut shape in render_context.shape { 52 + st.draw_model_2d(&mut shape, texture_view, encoder); 57 53 } 58 54 } 59 55 ··· 110 106 111 107 let textures = get_faceline_textures(st, &res_texture); 112 108 113 - for (i, (rendered_texture, modulation)) in textures.iter().enumerate() { 109 + for (i, (rendered_texture, modulation)) in textures.into_iter().enumerate() { 114 110 // Check if we are the first to be rendered out, then add an opaque background. 115 111 // We don't want an opaque redraw happening over our other faceline textures. 116 112 let opaque = (i == 0).then_some( 117 113 vfl::color::nx::linear::FACELINE_COLOR[usize::from(st.char_info.faceline_color)], 118 114 ); 119 115 120 - Rendered2dShape::render_texture_trivial( 121 - rendered_texture.to_owned(), 122 - modulation.to_owned(), 123 - opaque, 124 - st, 116 + st.draw_texture( 117 + DrawableTexture { 118 + rendered_texture, 119 + modulation, 120 + opaque, 121 + }, 125 122 texture_view, 126 123 encoder, 127 - Some("faceline".to_owned()), 128 124 ); 129 125 } 130 126 } ··· 142 138 return; 143 139 }; 144 140 145 - Rendered2dShape::render_texture_trivial( 146 - rendered_texture, 147 - modulation, 148 - None, 149 - st, 141 + st.draw_texture( 142 + DrawableTexture { 143 + rendered_texture, 144 + modulation, 145 + opaque: None, 146 + }, 150 147 texture_view, 151 148 encoder, 152 - Some("Glasses".to_owned()), 153 149 ); 154 150 } 155 151 ··· 159 155 shape_color: u8, 160 156 st: &mut State, 161 157 encoder: &mut CommandEncoder, 162 - ) -> Option<Rendered3dShape> { 158 + ) -> Option<Model3d> { 163 159 let res_shape = &st.resources.shape_header; 164 160 165 161 let GenericResourceShape::FaceLineTransform(faceline_transform) = res_shape.index_by_shape( ··· 209 205 210 206 // Closure to reduce boilerplate for writing out textures. 211 207 let mut draw_tex = |func: fn(&mut State, &TextureView, &mut CommandEncoder), size: UVec2| { 212 - let texture = texture::Texture::create_texture( 208 + let texture = TextureBundle::create_texture( 213 209 &st.device, 214 210 &size, 215 211 &format!("projected texture {func:?}"), ··· 248 244 color: usize, 249 245 position: Vec3, 250 246 scale: Vec3, 251 - projected_texture: Option<texture::Texture>, 252 - ) -> Rendered3dShape { 247 + projected_texture: Option<TextureBundle>, 248 + ) -> Model3d { 253 249 let mut vertices: Vec<Vertex> = vec![]; 254 250 let tex_coords = d 255 251 .uvs ··· 266 262 267 263 let indices = d.indices.iter().map(|x| u32::from(*x)).collect(); 268 264 269 - Rendered3dShape { 265 + GenericModel3d { 270 266 vertices, 271 267 indices, 272 268 color: match shape {
+12 -9
lightweight_viewer/src/char_model.rs crates/lightweight_viewer/src/char_model.rs
··· 1 1 use crate::{char_draw::load_shape, state::State}; 2 - use vfl::{draw::render_3d::Rendered3dShape, res::shape::nx::Shape}; 2 + use vee_wgpu::{Model3d, ProgramState}; 3 + use vfl::res::shape::nx::Shape; 3 4 use wgpu::{CommandEncoder, TextureView}; 4 5 5 6 // I want to rename these things eventually... 6 - type Model = Rendered3dShape; 7 - type ModelOpt = Option<Rendered3dShape>; 7 + type Model = Model3d; 8 + type ModelOpt = Option<Model3d>; 8 9 9 10 /// A bundle of models that in totality represent a character. 10 11 #[derive(Debug)] ··· 35 36 texture_view: &TextureView, 36 37 encoder: &mut CommandEncoder, 37 38 ) { 38 - self.face_line.render(st, texture_view, encoder); 39 + st.draw_model_3d(&mut self.face_line, texture_view, encoder); 40 + 39 41 if let Some(hair) = self.hair.as_mut() { 40 - hair.render(st, texture_view, encoder); 42 + st.draw_model_3d(hair, texture_view, encoder); 41 43 } 42 - self.mask.render(st, texture_view, encoder); 44 + 45 + st.draw_model_3d(&mut self.mask, texture_view, encoder); 43 46 44 47 if let Some(nose) = self.nose.as_mut() { 45 - nose.render(st, texture_view, encoder); 48 + st.draw_model_3d(nose, texture_view, encoder); 46 49 } 47 50 48 - self.nose_line.render(st, texture_view, encoder); 51 + st.draw_model_3d(&mut self.nose_line, texture_view, encoder); 49 52 50 53 if let Some(glasses) = self.glasses.as_mut() { 51 - glasses.render(st, texture_view, encoder); 54 + st.draw_model_3d(glasses, texture_view, encoder); 52 55 } 53 56 } 54 57 }
lightweight_viewer/src/main.rs crates/lightweight_viewer/src/main.rs
lightweight_viewer/src/shader-face.wgsl crates/lightweight_viewer/src/shader-face.wgsl
lightweight_viewer/src/shader-texture.wgsl crates/lightweight_viewer/src/shader-texture.wgsl
lightweight_viewer/src/shader.wgsl crates/lightweight_viewer/src/shader.wgsl
+14 -9
lightweight_viewer/src/state.rs crates/lightweight_viewer/src/state.rs
··· 5 5 use nest_struct::nest_struct; 6 6 use std::sync::{Mutex, MutexGuard, OnceLock}; 7 7 use std::{f32::consts::FRAC_PI_2, fs::File, sync::Arc}; 8 + use vee_wgpu::ProgramState; 9 + use vee_wgpu::texture::TextureBundle; 8 10 use vfl::res::shape::nx::ResourceShape; 9 11 use vfl::res::tex::nx::ResourceTexture; 10 12 use vfl::{ 11 13 charinfo::nx::{BinRead, NxCharInfo}, 12 - draw::{render_3d::ProgramState, wgpu_render::texture}, 13 14 res::{shape::nx::SHAPE_MID_DAT, tex::nx::TEXTURE_MID_SRGB_DAT}, 14 15 }; 15 16 use wgpu::{Backends, util::DeviceExt}; ··· 58 59 pub(crate) camera_bind_group: wgpu::BindGroup, 59 60 pub(crate) camera_uniform: CameraUniform, 60 61 pub(crate) camera_bind_group_layout: wgpu::BindGroupLayout, 61 - pub(crate) depth_texture: texture::Texture, 62 + pub(crate) depth_texture: TextureBundle, 62 63 pub(crate) camera_rotations: usize, 63 64 pub(crate) resources: ResourceData! { 64 65 pub(crate) texture_header: ResourceTexture, ··· 91 92 let cap = surface.get_capabilities(&adapter); 92 93 let surface_format = cap.formats[0]; 93 94 94 - let depth_texture = texture::Texture::create_depth_texture(&device, &size, "depth_texture"); 95 + let depth_texture = TextureBundle::create_depth_texture(&device, &size, "depth_texture"); 95 96 96 - let mut char_info = 97 - File::open(format!("{}/../{}", env!("CARGO_MANIFEST_DIR"), FACES[0])).unwrap(); 97 + let mut char_info = File::open(format!( 98 + "{}/resources_here/{}", 99 + env!("CARGO_WORKSPACE_DIR"), 100 + FACES[0] 101 + )) 102 + .unwrap(); 98 103 let char_info = NxCharInfo::read(&mut char_info).unwrap(); 99 104 100 105 let camera = Camera { ··· 274 279 self.configure_surface(); 275 280 276 281 self.depth_texture = 277 - texture::Texture::create_depth_texture(&self.device, &self.size, "depth_texture"); 282 + TextureBundle::create_depth_texture(&self.device, &self.size, "depth_texture"); 278 283 } 279 284 280 285 pub fn update(&mut self) { ··· 296 301 self.camera_rotations += 1; 297 302 298 303 let mut char_info = File::open(format!( 299 - "{}/../{}", 300 - env!("CARGO_MANIFEST_DIR"), 304 + "{}/resources_here/{}", 305 + env!("CARGO_WORKSPACE_DIR"), 301 306 FACES[self.camera_rotations % FACES.len()] 302 307 )) 303 308 .unwrap(); ··· 340 345 self.surface_format 341 346 } 342 347 343 - fn depth_texture(&self) -> &vfl::draw::wgpu_render::texture::Texture { 348 + fn depth_texture(&self) -> &TextureBundle { 344 349 &self.depth_texture 345 350 } 346 351 }
-6450
vfl/Cargo.lock
··· 1 - # This file is automatically @generated by Cargo. 2 - # It is not intended for manual editing. 3 - version = 4 4 - 5 - [[package]] 6 - name = "ab_glyph" 7 - version = "0.2.29" 8 - source = "registry+https://github.com/rust-lang/crates.io-index" 9 - checksum = "ec3672c180e71eeaaac3a541fbbc5f5ad4def8b747c595ad30d674e43049f7b0" 10 - dependencies = [ 11 - "ab_glyph_rasterizer", 12 - "owned_ttf_parser", 13 - ] 14 - 15 - [[package]] 16 - name = "ab_glyph_rasterizer" 17 - version = "0.1.8" 18 - source = "registry+https://github.com/rust-lang/crates.io-index" 19 - checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" 20 - 21 - [[package]] 22 - name = "accesskit" 23 - version = "0.18.0" 24 - source = "registry+https://github.com/rust-lang/crates.io-index" 25 - checksum = "becf0eb5215b6ecb0a739c31c21bd83c4f326524c9b46b7e882d77559b60a529" 26 - 27 - [[package]] 28 - name = "accesskit_consumer" 29 - version = "0.27.0" 30 - source = "registry+https://github.com/rust-lang/crates.io-index" 31 - checksum = "d0bf66a7bf0b7ea4fd7742d50b64782a88f99217cf246b3f93b4162528dde520" 32 - dependencies = [ 33 - "accesskit", 34 - "hashbrown", 35 - "immutable-chunkmap", 36 - ] 37 - 38 - [[package]] 39 - name = "accesskit_macos" 40 - version = "0.19.0" 41 - source = "registry+https://github.com/rust-lang/crates.io-index" 42 - checksum = "09e230718177753b4e4ad9e1d9f6cfc2f4921212d4c1c480b253f526babb258d" 43 - dependencies = [ 44 - "accesskit", 45 - "accesskit_consumer", 46 - "hashbrown", 47 - "objc2 0.5.2", 48 - "objc2-app-kit 0.2.2", 49 - "objc2-foundation 0.2.2", 50 - ] 51 - 52 - [[package]] 53 - name = "accesskit_windows" 54 - version = "0.25.0" 55 - source = "registry+https://github.com/rust-lang/crates.io-index" 56 - checksum = "65178f3df98a51e4238e584fcb255cb1a4f9111820848eeddd37663be40a625f" 57 - dependencies = [ 58 - "accesskit", 59 - "accesskit_consumer", 60 - "hashbrown", 61 - "paste", 62 - "static_assertions", 63 - "windows 0.58.0", 64 - "windows-core 0.58.0", 65 - ] 66 - 67 - [[package]] 68 - name = "accesskit_winit" 69 - version = "0.25.0" 70 - source = "registry+https://github.com/rust-lang/crates.io-index" 71 - checksum = "34d941bb8c414caba6e206de669c7dc0dbeb305640ea890772ee422a40e6b89f" 72 - dependencies = [ 73 - "accesskit", 74 - "accesskit_macos", 75 - "accesskit_windows", 76 - "raw-window-handle", 77 - "winit", 78 - ] 79 - 80 - [[package]] 81 - name = "adler2" 82 - version = "2.0.0" 83 - source = "registry+https://github.com/rust-lang/crates.io-index" 84 - checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" 85 - 86 - [[package]] 87 - name = "ahash" 88 - version = "0.8.12" 89 - source = "registry+https://github.com/rust-lang/crates.io-index" 90 - checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" 91 - dependencies = [ 92 - "cfg-if", 93 - "getrandom 0.3.3", 94 - "once_cell", 95 - "version_check", 96 - "zerocopy", 97 - ] 98 - 99 - [[package]] 100 - name = "aho-corasick" 101 - version = "1.1.3" 102 - source = "registry+https://github.com/rust-lang/crates.io-index" 103 - checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 104 - dependencies = [ 105 - "memchr", 106 - ] 107 - 108 - [[package]] 109 - name = "aligned-vec" 110 - version = "0.5.0" 111 - source = "registry+https://github.com/rust-lang/crates.io-index" 112 - checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1" 113 - 114 - [[package]] 115 - name = "alsa" 116 - version = "0.9.1" 117 - source = "registry+https://github.com/rust-lang/crates.io-index" 118 - checksum = "ed7572b7ba83a31e20d1b48970ee402d2e3e0537dcfe0a3ff4d6eb7508617d43" 119 - dependencies = [ 120 - "alsa-sys", 121 - "bitflags 2.9.0", 122 - "cfg-if", 123 - "libc", 124 - ] 125 - 126 - [[package]] 127 - name = "alsa-sys" 128 - version = "0.3.1" 129 - source = "registry+https://github.com/rust-lang/crates.io-index" 130 - checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" 131 - dependencies = [ 132 - "libc", 133 - "pkg-config", 134 - ] 135 - 136 - [[package]] 137 - name = "android-activity" 138 - version = "0.6.0" 139 - source = "registry+https://github.com/rust-lang/crates.io-index" 140 - checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" 141 - dependencies = [ 142 - "android-properties", 143 - "bitflags 2.9.0", 144 - "cc", 145 - "cesu8", 146 - "jni", 147 - "jni-sys", 148 - "libc", 149 - "log", 150 - "ndk 0.9.0", 151 - "ndk-context", 152 - "ndk-sys 0.6.0+11769913", 153 - "num_enum", 154 - "thiserror 1.0.69", 155 - ] 156 - 157 - [[package]] 158 - name = "android-properties" 159 - version = "0.2.2" 160 - source = "registry+https://github.com/rust-lang/crates.io-index" 161 - checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" 162 - 163 - [[package]] 164 - name = "android_log-sys" 165 - version = "0.3.2" 166 - source = "registry+https://github.com/rust-lang/crates.io-index" 167 - checksum = "84521a3cf562bc62942e294181d9eef17eb38ceb8c68677bc49f144e4c3d4f8d" 168 - 169 - [[package]] 170 - name = "android_system_properties" 171 - version = "0.1.5" 172 - source = "registry+https://github.com/rust-lang/crates.io-index" 173 - checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 174 - dependencies = [ 175 - "libc", 176 - ] 177 - 178 - [[package]] 179 - name = "anyhow" 180 - version = "1.0.98" 181 - source = "registry+https://github.com/rust-lang/crates.io-index" 182 - checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" 183 - 184 - [[package]] 185 - name = "approx" 186 - version = "0.5.1" 187 - source = "registry+https://github.com/rust-lang/crates.io-index" 188 - checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" 189 - dependencies = [ 190 - "num-traits", 191 - ] 192 - 193 - [[package]] 194 - name = "arbitrary" 195 - version = "1.4.1" 196 - source = "registry+https://github.com/rust-lang/crates.io-index" 197 - checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" 198 - 199 - [[package]] 200 - name = "arboard" 201 - version = "3.5.0" 202 - source = "registry+https://github.com/rust-lang/crates.io-index" 203 - checksum = "c1df21f715862ede32a0c525ce2ca4d52626bb0007f8c18b87a384503ac33e70" 204 - dependencies = [ 205 - "clipboard-win", 206 - "image 0.25.6", 207 - "log", 208 - "objc2 0.6.1", 209 - "objc2-app-kit 0.3.1", 210 - "objc2-core-foundation", 211 - "objc2-core-graphics", 212 - "objc2-foundation 0.3.1", 213 - "parking_lot", 214 - "percent-encoding", 215 - "windows-sys 0.59.0", 216 - "x11rb", 217 - ] 218 - 219 - [[package]] 220 - name = "arg_enum_proc_macro" 221 - version = "0.3.4" 222 - source = "registry+https://github.com/rust-lang/crates.io-index" 223 - checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" 224 - dependencies = [ 225 - "proc-macro2", 226 - "quote", 227 - "syn 2.0.101", 228 - ] 229 - 230 - [[package]] 231 - name = "array-init" 232 - version = "2.1.0" 233 - source = "registry+https://github.com/rust-lang/crates.io-index" 234 - checksum = "3d62b7694a562cdf5a74227903507c56ab2cc8bdd1f781ed5cb4cf9c9f810bfc" 235 - 236 - [[package]] 237 - name = "arrayref" 238 - version = "0.3.9" 239 - source = "registry+https://github.com/rust-lang/crates.io-index" 240 - checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" 241 - 242 - [[package]] 243 - name = "arrayvec" 244 - version = "0.7.6" 245 - source = "registry+https://github.com/rust-lang/crates.io-index" 246 - checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" 247 - 248 - [[package]] 249 - name = "as-raw-xcb-connection" 250 - version = "1.0.1" 251 - source = "registry+https://github.com/rust-lang/crates.io-index" 252 - checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" 253 - 254 - [[package]] 255 - name = "ash" 256 - version = "0.38.0+1.3.281" 257 - source = "registry+https://github.com/rust-lang/crates.io-index" 258 - checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" 259 - dependencies = [ 260 - "libloading", 261 - ] 262 - 263 - [[package]] 264 - name = "assert_type_match" 265 - version = "0.1.1" 266 - source = "registry+https://github.com/rust-lang/crates.io-index" 267 - checksum = "f548ad2c4031f2902e3edc1f29c29e835829437de49562d8eb5dc5584d3a1043" 268 - dependencies = [ 269 - "proc-macro2", 270 - "quote", 271 - "syn 2.0.101", 272 - ] 273 - 274 - [[package]] 275 - name = "async-broadcast" 276 - version = "0.7.2" 277 - source = "registry+https://github.com/rust-lang/crates.io-index" 278 - checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" 279 - dependencies = [ 280 - "event-listener", 281 - "event-listener-strategy", 282 - "futures-core", 283 - "pin-project-lite", 284 - ] 285 - 286 - [[package]] 287 - name = "async-channel" 288 - version = "2.3.1" 289 - source = "registry+https://github.com/rust-lang/crates.io-index" 290 - checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" 291 - dependencies = [ 292 - "concurrent-queue", 293 - "event-listener-strategy", 294 - "futures-core", 295 - "pin-project-lite", 296 - ] 297 - 298 - [[package]] 299 - name = "async-executor" 300 - version = "1.13.2" 301 - source = "registry+https://github.com/rust-lang/crates.io-index" 302 - checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" 303 - dependencies = [ 304 - "async-task", 305 - "concurrent-queue", 306 - "fastrand", 307 - "futures-lite", 308 - "pin-project-lite", 309 - "slab", 310 - ] 311 - 312 - [[package]] 313 - name = "async-fs" 314 - version = "2.1.2" 315 - source = "registry+https://github.com/rust-lang/crates.io-index" 316 - checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" 317 - dependencies = [ 318 - "async-lock", 319 - "blocking", 320 - "futures-lite", 321 - ] 322 - 323 - [[package]] 324 - name = "async-lock" 325 - version = "3.4.0" 326 - source = "registry+https://github.com/rust-lang/crates.io-index" 327 - checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" 328 - dependencies = [ 329 - "event-listener", 330 - "event-listener-strategy", 331 - "pin-project-lite", 332 - ] 333 - 334 - [[package]] 335 - name = "async-task" 336 - version = "4.7.1" 337 - source = "registry+https://github.com/rust-lang/crates.io-index" 338 - checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" 339 - dependencies = [ 340 - "portable-atomic", 341 - ] 342 - 343 - [[package]] 344 - name = "atomic-waker" 345 - version = "1.1.2" 346 - source = "registry+https://github.com/rust-lang/crates.io-index" 347 - checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 348 - dependencies = [ 349 - "portable-atomic", 350 - ] 351 - 352 - [[package]] 353 - name = "atomicow" 354 - version = "1.1.0" 355 - source = "registry+https://github.com/rust-lang/crates.io-index" 356 - checksum = "f52e8890bb9844440d0c412fa74b67fd2f14e85248b6e00708059b6da9e5f8bf" 357 - dependencies = [ 358 - "portable-atomic", 359 - "portable-atomic-util", 360 - ] 361 - 362 - [[package]] 363 - name = "autocfg" 364 - version = "1.4.0" 365 - source = "registry+https://github.com/rust-lang/crates.io-index" 366 - checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" 367 - 368 - [[package]] 369 - name = "av1-grain" 370 - version = "0.2.3" 371 - source = "registry+https://github.com/rust-lang/crates.io-index" 372 - checksum = "6678909d8c5d46a42abcf571271e15fdbc0a225e3646cf23762cd415046c78bf" 373 - dependencies = [ 374 - "anyhow", 375 - "arrayvec", 376 - "log", 377 - "nom", 378 - "num-rational", 379 - "v_frame", 380 - ] 381 - 382 - [[package]] 383 - name = "avif-serialize" 384 - version = "0.8.3" 385 - source = "registry+https://github.com/rust-lang/crates.io-index" 386 - checksum = "98922d6a4cfbcb08820c69d8eeccc05bb1f29bfa06b4f5b1dbfe9a868bd7608e" 387 - dependencies = [ 388 - "arrayvec", 389 - ] 390 - 391 - [[package]] 392 - name = "base64" 393 - version = "0.13.1" 394 - source = "registry+https://github.com/rust-lang/crates.io-index" 395 - checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" 396 - 397 - [[package]] 398 - name = "base64" 399 - version = "0.21.7" 400 - source = "registry+https://github.com/rust-lang/crates.io-index" 401 - checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" 402 - 403 - [[package]] 404 - name = "base64" 405 - version = "0.22.1" 406 - source = "registry+https://github.com/rust-lang/crates.io-index" 407 - checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 408 - 409 - [[package]] 410 - name = "bevy" 411 - version = "0.16.0" 412 - source = "registry+https://github.com/rust-lang/crates.io-index" 413 - checksum = "2a5cd3b24a5adb7c7378da7b3eea47639877643d11b6b087fc8a8094f2528615" 414 - dependencies = [ 415 - "bevy_internal", 416 - ] 417 - 418 - [[package]] 419 - name = "bevy_a11y" 420 - version = "0.16.0" 421 - source = "registry+https://github.com/rust-lang/crates.io-index" 422 - checksum = "91ed969a58fbe449ef35ebec58ab19578302537f34ee8a35d04e5a038b3c40f5" 423 - dependencies = [ 424 - "accesskit", 425 - "bevy_app", 426 - "bevy_derive", 427 - "bevy_ecs", 428 - "bevy_reflect", 429 - ] 430 - 431 - [[package]] 432 - name = "bevy_animation" 433 - version = "0.16.0" 434 - source = "registry+https://github.com/rust-lang/crates.io-index" 435 - checksum = "3647b67c6bfd456922b2720ccef980dec01742d155d0eb454dc3d8fdc65e7aff" 436 - dependencies = [ 437 - "bevy_app", 438 - "bevy_asset", 439 - "bevy_color", 440 - "bevy_derive", 441 - "bevy_ecs", 442 - "bevy_log", 443 - "bevy_math", 444 - "bevy_mesh", 445 - "bevy_platform", 446 - "bevy_reflect", 447 - "bevy_render", 448 - "bevy_time", 449 - "bevy_transform", 450 - "bevy_utils", 451 - "blake3", 452 - "derive_more", 453 - "downcast-rs 2.0.1", 454 - "either", 455 - "petgraph", 456 - "ron", 457 - "serde", 458 - "smallvec", 459 - "thiserror 2.0.12", 460 - "thread_local", 461 - "tracing", 462 - "uuid", 463 - ] 464 - 465 - [[package]] 466 - name = "bevy_app" 467 - version = "0.16.0" 468 - source = "registry+https://github.com/rust-lang/crates.io-index" 469 - checksum = "a2b6267ac23a9947d5b2725ff047a1e1add70076d85fa9fb73d044ab9bea1f3c" 470 - dependencies = [ 471 - "bevy_derive", 472 - "bevy_ecs", 473 - "bevy_platform", 474 - "bevy_reflect", 475 - "bevy_tasks", 476 - "bevy_utils", 477 - "cfg-if", 478 - "console_error_panic_hook", 479 - "ctrlc", 480 - "downcast-rs 2.0.1", 481 - "log", 482 - "thiserror 2.0.12", 483 - "variadics_please", 484 - "wasm-bindgen", 485 - "web-sys", 486 - ] 487 - 488 - [[package]] 489 - name = "bevy_asset" 490 - version = "0.16.0" 491 - source = "registry+https://github.com/rust-lang/crates.io-index" 492 - checksum = "0698040d63199391ea77fd02e039630748e3e335c3070c6d932fd96cbf80f5d6" 493 - dependencies = [ 494 - "async-broadcast", 495 - "async-fs", 496 - "async-lock", 497 - "atomicow", 498 - "bevy_app", 499 - "bevy_asset_macros", 500 - "bevy_ecs", 501 - "bevy_platform", 502 - "bevy_reflect", 503 - "bevy_tasks", 504 - "bevy_utils", 505 - "bevy_window", 506 - "bitflags 2.9.0", 507 - "blake3", 508 - "crossbeam-channel", 509 - "derive_more", 510 - "disqualified", 511 - "downcast-rs 2.0.1", 512 - "either", 513 - "futures-io", 514 - "futures-lite", 515 - "js-sys", 516 - "parking_lot", 517 - "ron", 518 - "serde", 519 - "stackfuture", 520 - "thiserror 2.0.12", 521 - "tracing", 522 - "uuid", 523 - "wasm-bindgen", 524 - "wasm-bindgen-futures", 525 - "web-sys", 526 - ] 527 - 528 - [[package]] 529 - name = "bevy_asset_macros" 530 - version = "0.16.0" 531 - source = "registry+https://github.com/rust-lang/crates.io-index" 532 - checksum = "0bf8c00b5d532f8e5ac7b49af10602f9f7774a2d522cf0638323b5dfeee7b31c" 533 - dependencies = [ 534 - "bevy_macro_utils", 535 - "proc-macro2", 536 - "quote", 537 - "syn 2.0.101", 538 - ] 539 - 540 - [[package]] 541 - name = "bevy_audio" 542 - version = "0.16.0" 543 - source = "registry+https://github.com/rust-lang/crates.io-index" 544 - checksum = "74e54154e6369abdbaf5098e20424d59197c9b701d4f79fe8d0d2bde03d25f12" 545 - dependencies = [ 546 - "bevy_app", 547 - "bevy_asset", 548 - "bevy_derive", 549 - "bevy_ecs", 550 - "bevy_math", 551 - "bevy_reflect", 552 - "bevy_transform", 553 - "cpal", 554 - "rodio", 555 - "tracing", 556 - ] 557 - 558 - [[package]] 559 - name = "bevy_color" 560 - version = "0.16.1" 561 - source = "registry+https://github.com/rust-lang/crates.io-index" 562 - checksum = "ddf6a5ad35496bbc41713efbcf06ab72b9a310fabcab0f9db1debb56e8488c6e" 563 - dependencies = [ 564 - "bevy_math", 565 - "bevy_reflect", 566 - "bytemuck", 567 - "derive_more", 568 - "encase", 569 - "serde", 570 - "thiserror 2.0.12", 571 - "wgpu-types", 572 - ] 573 - 574 - [[package]] 575 - name = "bevy_core_pipeline" 576 - version = "0.16.0" 577 - source = "registry+https://github.com/rust-lang/crates.io-index" 578 - checksum = "55c2310717b9794e4a45513ee5946a7be0838852a4c1e185884195e1a8688ff3" 579 - dependencies = [ 580 - "bevy_app", 581 - "bevy_asset", 582 - "bevy_color", 583 - "bevy_derive", 584 - "bevy_diagnostic", 585 - "bevy_ecs", 586 - "bevy_image", 587 - "bevy_math", 588 - "bevy_platform", 589 - "bevy_reflect", 590 - "bevy_render", 591 - "bevy_transform", 592 - "bevy_utils", 593 - "bevy_window", 594 - "bitflags 2.9.0", 595 - "bytemuck", 596 - "nonmax", 597 - "radsort", 598 - "serde", 599 - "smallvec", 600 - "thiserror 2.0.12", 601 - "tracing", 602 - ] 603 - 604 - [[package]] 605 - name = "bevy_derive" 606 - version = "0.16.0" 607 - source = "registry+https://github.com/rust-lang/crates.io-index" 608 - checksum = "f626531b9c05c25a758ede228727bd11c2c2c8498ecbed9925044386d525a2a3" 609 - dependencies = [ 610 - "bevy_macro_utils", 611 - "quote", 612 - "syn 2.0.101", 613 - ] 614 - 615 - [[package]] 616 - name = "bevy_diagnostic" 617 - version = "0.16.0" 618 - source = "registry+https://github.com/rust-lang/crates.io-index" 619 - checksum = "048a1ff3944a534b8472516866284181eef0a75b6dd4d39b6e5925715e350766" 620 - dependencies = [ 621 - "bevy_app", 622 - "bevy_ecs", 623 - "bevy_platform", 624 - "bevy_tasks", 625 - "bevy_time", 626 - "bevy_utils", 627 - "const-fnv1a-hash", 628 - "log", 629 - "serde", 630 - "sysinfo", 631 - ] 632 - 633 - [[package]] 634 - name = "bevy_ecs" 635 - version = "0.16.0" 636 - source = "registry+https://github.com/rust-lang/crates.io-index" 637 - checksum = "d9e807b5d9aab3bb8dfe47e7a44c9ff088bad2ceefe299b80ac77609a87fe9d4" 638 - dependencies = [ 639 - "arrayvec", 640 - "bevy_ecs_macros", 641 - "bevy_platform", 642 - "bevy_ptr", 643 - "bevy_reflect", 644 - "bevy_tasks", 645 - "bevy_utils", 646 - "bitflags 2.9.0", 647 - "bumpalo", 648 - "concurrent-queue", 649 - "derive_more", 650 - "disqualified", 651 - "fixedbitset", 652 - "indexmap", 653 - "log", 654 - "nonmax", 655 - "serde", 656 - "smallvec", 657 - "thiserror 2.0.12", 658 - "variadics_please", 659 - ] 660 - 661 - [[package]] 662 - name = "bevy_ecs_macros" 663 - version = "0.16.0" 664 - source = "registry+https://github.com/rust-lang/crates.io-index" 665 - checksum = "467d7bb98aeb8dd30f36e6a773000c12a891d4f1bee2adc3841ec89cc8eaf54e" 666 - dependencies = [ 667 - "bevy_macro_utils", 668 - "proc-macro2", 669 - "quote", 670 - "syn 2.0.101", 671 - ] 672 - 673 - [[package]] 674 - name = "bevy_egui" 675 - version = "0.34.1" 676 - source = "registry+https://github.com/rust-lang/crates.io-index" 677 - checksum = "3a3d58a8afdb6100bca50251043a85320391742cae125d559f6cca3a16b84cdd" 678 - dependencies = [ 679 - "arboard", 680 - "bevy_app", 681 - "bevy_asset", 682 - "bevy_derive", 683 - "bevy_ecs", 684 - "bevy_image", 685 - "bevy_input", 686 - "bevy_log", 687 - "bevy_math", 688 - "bevy_picking", 689 - "bevy_platform", 690 - "bevy_reflect", 691 - "bevy_render", 692 - "bevy_time", 693 - "bevy_window", 694 - "bevy_winit", 695 - "bytemuck", 696 - "crossbeam-channel", 697 - "egui", 698 - "encase", 699 - "image 0.25.6", 700 - "js-sys", 701 - "thread_local", 702 - "wasm-bindgen", 703 - "wasm-bindgen-futures", 704 - "web-sys", 705 - "webbrowser", 706 - "wgpu-types", 707 - "winit", 708 - ] 709 - 710 - [[package]] 711 - name = "bevy_encase_derive" 712 - version = "0.16.0" 713 - source = "registry+https://github.com/rust-lang/crates.io-index" 714 - checksum = "b8bb31dc1090c6f8fabbf6b21994d19a12766e786885ee48ffc547f0f1fa7863" 715 - dependencies = [ 716 - "bevy_macro_utils", 717 - "encase_derive_impl", 718 - ] 719 - 720 - [[package]] 721 - name = "bevy_gilrs" 722 - version = "0.16.0" 723 - source = "registry+https://github.com/rust-lang/crates.io-index" 724 - checksum = "950c84596dbff8a9691a050c37bb610ef9398af56369c2c2dd6dc41ef7b717a5" 725 - dependencies = [ 726 - "bevy_app", 727 - "bevy_ecs", 728 - "bevy_input", 729 - "bevy_platform", 730 - "bevy_time", 731 - "bevy_utils", 732 - "gilrs", 733 - "thiserror 2.0.12", 734 - "tracing", 735 - ] 736 - 737 - [[package]] 738 - name = "bevy_gizmos" 739 - version = "0.16.0" 740 - source = "registry+https://github.com/rust-lang/crates.io-index" 741 - checksum = "54af8145b35ab2a830a6dd1058e23c1e1ddc4b893db79d295259ef82f51c7520" 742 - dependencies = [ 743 - "bevy_app", 744 - "bevy_asset", 745 - "bevy_color", 746 - "bevy_core_pipeline", 747 - "bevy_ecs", 748 - "bevy_gizmos_macros", 749 - "bevy_image", 750 - "bevy_math", 751 - "bevy_pbr", 752 - "bevy_reflect", 753 - "bevy_render", 754 - "bevy_sprite", 755 - "bevy_time", 756 - "bevy_transform", 757 - "bevy_utils", 758 - "bytemuck", 759 - "tracing", 760 - ] 761 - 762 - [[package]] 763 - name = "bevy_gizmos_macros" 764 - version = "0.16.0" 765 - source = "registry+https://github.com/rust-lang/crates.io-index" 766 - checksum = "40137ace61f092b7a09eba41d7d1e6aef941f53a7818b06ef86dcce7b6a1fd3f" 767 - dependencies = [ 768 - "bevy_macro_utils", 769 - "proc-macro2", 770 - "quote", 771 - "syn 2.0.101", 772 - ] 773 - 774 - [[package]] 775 - name = "bevy_gltf" 776 - version = "0.16.0" 777 - source = "registry+https://github.com/rust-lang/crates.io-index" 778 - checksum = "aa25b809ee024ef2682bafc1ca22ca8275552edb549dc6f69a030fdffd976c63" 779 - dependencies = [ 780 - "base64 0.22.1", 781 - "bevy_animation", 782 - "bevy_app", 783 - "bevy_asset", 784 - "bevy_color", 785 - "bevy_core_pipeline", 786 - "bevy_ecs", 787 - "bevy_image", 788 - "bevy_math", 789 - "bevy_mesh", 790 - "bevy_pbr", 791 - "bevy_platform", 792 - "bevy_reflect", 793 - "bevy_render", 794 - "bevy_scene", 795 - "bevy_tasks", 796 - "bevy_transform", 797 - "bevy_utils", 798 - "fixedbitset", 799 - "gltf", 800 - "itertools 0.14.0", 801 - "percent-encoding", 802 - "serde", 803 - "serde_json", 804 - "smallvec", 805 - "thiserror 2.0.12", 806 - "tracing", 807 - ] 808 - 809 - [[package]] 810 - name = "bevy_image" 811 - version = "0.16.0" 812 - source = "registry+https://github.com/rust-lang/crates.io-index" 813 - checksum = "840b25f7f58894c641739f756959028a04f519c448db7e2cd3e2e29fc5fd188d" 814 - dependencies = [ 815 - "bevy_app", 816 - "bevy_asset", 817 - "bevy_color", 818 - "bevy_math", 819 - "bevy_platform", 820 - "bevy_reflect", 821 - "bevy_utils", 822 - "bitflags 2.9.0", 823 - "bytemuck", 824 - "futures-lite", 825 - "guillotiere", 826 - "half", 827 - "image 0.25.6", 828 - "ktx2", 829 - "rectangle-pack", 830 - "ruzstd", 831 - "serde", 832 - "thiserror 2.0.12", 833 - "tracing", 834 - "wgpu-types", 835 - ] 836 - 837 - [[package]] 838 - name = "bevy_input" 839 - version = "0.16.0" 840 - source = "registry+https://github.com/rust-lang/crates.io-index" 841 - checksum = "763410715714f3d4d2dcdf077af276e2e4ea93fd8081b183d446d060ea95baaa" 842 - dependencies = [ 843 - "bevy_app", 844 - "bevy_ecs", 845 - "bevy_math", 846 - "bevy_platform", 847 - "bevy_reflect", 848 - "bevy_utils", 849 - "derive_more", 850 - "log", 851 - "smol_str", 852 - "thiserror 2.0.12", 853 - ] 854 - 855 - [[package]] 856 - name = "bevy_input_focus" 857 - version = "0.16.0" 858 - source = "registry+https://github.com/rust-lang/crates.io-index" 859 - checksum = "d7e7b4ed65e10927a39a987cf85ef98727dd319aafb6e6835f2cb05b883c6d66" 860 - dependencies = [ 861 - "bevy_app", 862 - "bevy_ecs", 863 - "bevy_input", 864 - "bevy_math", 865 - "bevy_reflect", 866 - "bevy_window", 867 - "log", 868 - "thiserror 2.0.12", 869 - ] 870 - 871 - [[package]] 872 - name = "bevy_internal" 873 - version = "0.16.0" 874 - source = "registry+https://github.com/rust-lang/crates.io-index" 875 - checksum = "526ffd64c58004cb97308826e896c07d0e23dc056c243b97492e31cdf72e2830" 876 - dependencies = [ 877 - "bevy_a11y", 878 - "bevy_animation", 879 - "bevy_app", 880 - "bevy_asset", 881 - "bevy_audio", 882 - "bevy_color", 883 - "bevy_core_pipeline", 884 - "bevy_derive", 885 - "bevy_diagnostic", 886 - "bevy_ecs", 887 - "bevy_gilrs", 888 - "bevy_gizmos", 889 - "bevy_gltf", 890 - "bevy_image", 891 - "bevy_input", 892 - "bevy_input_focus", 893 - "bevy_log", 894 - "bevy_math", 895 - "bevy_pbr", 896 - "bevy_picking", 897 - "bevy_platform", 898 - "bevy_ptr", 899 - "bevy_reflect", 900 - "bevy_render", 901 - "bevy_scene", 902 - "bevy_sprite", 903 - "bevy_state", 904 - "bevy_tasks", 905 - "bevy_text", 906 - "bevy_time", 907 - "bevy_transform", 908 - "bevy_ui", 909 - "bevy_utils", 910 - "bevy_window", 911 - "bevy_winit", 912 - ] 913 - 914 - [[package]] 915 - name = "bevy_log" 916 - version = "0.16.0" 917 - source = "registry+https://github.com/rust-lang/crates.io-index" 918 - checksum = "7156df8d2f11135cf71c03eb4c11132b65201fd4f51648571e59e39c9c9ee2f6" 919 - dependencies = [ 920 - "android_log-sys", 921 - "bevy_app", 922 - "bevy_ecs", 923 - "bevy_utils", 924 - "tracing", 925 - "tracing-log", 926 - "tracing-oslog", 927 - "tracing-subscriber", 928 - "tracing-wasm", 929 - ] 930 - 931 - [[package]] 932 - name = "bevy_macro_utils" 933 - version = "0.16.0" 934 - source = "registry+https://github.com/rust-lang/crates.io-index" 935 - checksum = "7a2473db70d8785b5c75d6dd951a2e51e9be2c2311122db9692c79c9d887517b" 936 - dependencies = [ 937 - "parking_lot", 938 - "proc-macro2", 939 - "quote", 940 - "syn 2.0.101", 941 - "toml_edit", 942 - ] 943 - 944 - [[package]] 945 - name = "bevy_math" 946 - version = "0.16.0" 947 - source = "registry+https://github.com/rust-lang/crates.io-index" 948 - checksum = "f1a3a926d02dc501c6156a047510bdb538dcb1fa744eeba13c824b73ba88de55" 949 - dependencies = [ 950 - "approx", 951 - "bevy_reflect", 952 - "derive_more", 953 - "glam 0.29.3", 954 - "itertools 0.14.0", 955 - "libm", 956 - "rand", 957 - "rand_distr", 958 - "serde", 959 - "smallvec", 960 - "thiserror 2.0.12", 961 - "variadics_please", 962 - ] 963 - 964 - [[package]] 965 - name = "bevy_mesh" 966 - version = "0.16.0" 967 - source = "registry+https://github.com/rust-lang/crates.io-index" 968 - checksum = "12af58280c7453e32e2f083d86eaa4c9b9d03ea8683977108ded8f1930c539f2" 969 - dependencies = [ 970 - "bevy_asset", 971 - "bevy_derive", 972 - "bevy_ecs", 973 - "bevy_image", 974 - "bevy_math", 975 - "bevy_mikktspace", 976 - "bevy_platform", 977 - "bevy_reflect", 978 - "bevy_transform", 979 - "bevy_utils", 980 - "bitflags 2.9.0", 981 - "bytemuck", 982 - "hexasphere", 983 - "serde", 984 - "thiserror 2.0.12", 985 - "tracing", 986 - "wgpu-types", 987 - ] 988 - 989 - [[package]] 990 - name = "bevy_mikktspace" 991 - version = "0.16.0" 992 - source = "registry+https://github.com/rust-lang/crates.io-index" 993 - checksum = "75e0258423c689f764556e36b5d9eebdbf624b29a1fd5b33cd9f6c42dcc4d5f3" 994 - dependencies = [ 995 - "glam 0.29.3", 996 - ] 997 - 998 - [[package]] 999 - name = "bevy_pbr" 1000 - version = "0.16.0" 1001 - source = "registry+https://github.com/rust-lang/crates.io-index" 1002 - checksum = "d9fe0de43b68bf9e5090a33efc963f125e9d3f9d97be9ebece7bcfdde1b6da80" 1003 - dependencies = [ 1004 - "bevy_app", 1005 - "bevy_asset", 1006 - "bevy_color", 1007 - "bevy_core_pipeline", 1008 - "bevy_derive", 1009 - "bevy_diagnostic", 1010 - "bevy_ecs", 1011 - "bevy_image", 1012 - "bevy_math", 1013 - "bevy_platform", 1014 - "bevy_reflect", 1015 - "bevy_render", 1016 - "bevy_transform", 1017 - "bevy_utils", 1018 - "bevy_window", 1019 - "bitflags 2.9.0", 1020 - "bytemuck", 1021 - "derive_more", 1022 - "fixedbitset", 1023 - "nonmax", 1024 - "offset-allocator", 1025 - "radsort", 1026 - "smallvec", 1027 - "static_assertions", 1028 - "thiserror 2.0.12", 1029 - "tracing", 1030 - ] 1031 - 1032 - [[package]] 1033 - name = "bevy_picking" 1034 - version = "0.16.0" 1035 - source = "registry+https://github.com/rust-lang/crates.io-index" 1036 - checksum = "f73674f62b1033006bd75c89033f5d3516386cfd7d43bb9f7665012c0ab14d22" 1037 - dependencies = [ 1038 - "bevy_app", 1039 - "bevy_asset", 1040 - "bevy_derive", 1041 - "bevy_ecs", 1042 - "bevy_input", 1043 - "bevy_math", 1044 - "bevy_mesh", 1045 - "bevy_platform", 1046 - "bevy_reflect", 1047 - "bevy_render", 1048 - "bevy_time", 1049 - "bevy_transform", 1050 - "bevy_utils", 1051 - "bevy_window", 1052 - "crossbeam-channel", 1053 - "tracing", 1054 - "uuid", 1055 - ] 1056 - 1057 - [[package]] 1058 - name = "bevy_platform" 1059 - version = "0.16.0" 1060 - source = "registry+https://github.com/rust-lang/crates.io-index" 1061 - checksum = "704db2c11b7bc31093df4fbbdd3769f9606a6a5287149f4b51f2680f25834ebc" 1062 - dependencies = [ 1063 - "cfg-if", 1064 - "critical-section", 1065 - "foldhash", 1066 - "getrandom 0.2.16", 1067 - "hashbrown", 1068 - "portable-atomic", 1069 - "portable-atomic-util", 1070 - "serde", 1071 - "spin", 1072 - "web-time", 1073 - ] 1074 - 1075 - [[package]] 1076 - name = "bevy_ptr" 1077 - version = "0.16.0" 1078 - source = "registry+https://github.com/rust-lang/crates.io-index" 1079 - checksum = "86f1275dfb4cfef4ffc90c3fa75408964864facf833acc932413d52aa5364ba4" 1080 - 1081 - [[package]] 1082 - name = "bevy_reflect" 1083 - version = "0.16.0" 1084 - source = "registry+https://github.com/rust-lang/crates.io-index" 1085 - checksum = "607ebacc31029cf2f39ac330eabf1d4bc411b159528ec08dbe6b0593eaccfd41" 1086 - dependencies = [ 1087 - "assert_type_match", 1088 - "bevy_platform", 1089 - "bevy_ptr", 1090 - "bevy_reflect_derive", 1091 - "bevy_utils", 1092 - "derive_more", 1093 - "disqualified", 1094 - "downcast-rs 2.0.1", 1095 - "erased-serde", 1096 - "foldhash", 1097 - "glam 0.29.3", 1098 - "petgraph", 1099 - "serde", 1100 - "smallvec", 1101 - "smol_str", 1102 - "thiserror 2.0.12", 1103 - "uuid", 1104 - "variadics_please", 1105 - "wgpu-types", 1106 - ] 1107 - 1108 - [[package]] 1109 - name = "bevy_reflect_derive" 1110 - version = "0.16.0" 1111 - source = "registry+https://github.com/rust-lang/crates.io-index" 1112 - checksum = "cf35e45e4eb239018369f63f2adc2107a54c329f9276d020e01eee1625b0238b" 1113 - dependencies = [ 1114 - "bevy_macro_utils", 1115 - "proc-macro2", 1116 - "quote", 1117 - "syn 2.0.101", 1118 - "uuid", 1119 - ] 1120 - 1121 - [[package]] 1122 - name = "bevy_render" 1123 - version = "0.16.0" 1124 - source = "registry+https://github.com/rust-lang/crates.io-index" 1125 - checksum = "85a7306235b3343b032801504f3e884b93abfb7ba58179fc555c479df509f349" 1126 - dependencies = [ 1127 - "async-channel", 1128 - "bevy_app", 1129 - "bevy_asset", 1130 - "bevy_color", 1131 - "bevy_derive", 1132 - "bevy_diagnostic", 1133 - "bevy_ecs", 1134 - "bevy_encase_derive", 1135 - "bevy_image", 1136 - "bevy_math", 1137 - "bevy_mesh", 1138 - "bevy_platform", 1139 - "bevy_reflect", 1140 - "bevy_render_macros", 1141 - "bevy_tasks", 1142 - "bevy_time", 1143 - "bevy_transform", 1144 - "bevy_utils", 1145 - "bevy_window", 1146 - "bitflags 2.9.0", 1147 - "bytemuck", 1148 - "codespan-reporting", 1149 - "derive_more", 1150 - "downcast-rs 2.0.1", 1151 - "encase", 1152 - "fixedbitset", 1153 - "futures-lite", 1154 - "image 0.25.6", 1155 - "indexmap", 1156 - "js-sys", 1157 - "ktx2", 1158 - "naga", 1159 - "naga_oil", 1160 - "nonmax", 1161 - "offset-allocator", 1162 - "send_wrapper", 1163 - "serde", 1164 - "smallvec", 1165 - "thiserror 2.0.12", 1166 - "tracing", 1167 - "variadics_please", 1168 - "wasm-bindgen", 1169 - "web-sys", 1170 - "wgpu", 1171 - ] 1172 - 1173 - [[package]] 1174 - name = "bevy_render_macros" 1175 - version = "0.16.0" 1176 - source = "registry+https://github.com/rust-lang/crates.io-index" 1177 - checksum = "b85c4fb26b66d3a257b655485d11b9b6df9d3c85026493ba8092767a5edfc1b2" 1178 - dependencies = [ 1179 - "bevy_macro_utils", 1180 - "proc-macro2", 1181 - "quote", 1182 - "syn 2.0.101", 1183 - ] 1184 - 1185 - [[package]] 1186 - name = "bevy_scene" 1187 - version = "0.16.0" 1188 - source = "registry+https://github.com/rust-lang/crates.io-index" 1189 - checksum = "e7b628f560f2d2fe9f35ecd4526627ba3992f082de03fd745536e4053a0266fe" 1190 - dependencies = [ 1191 - "bevy_app", 1192 - "bevy_asset", 1193 - "bevy_derive", 1194 - "bevy_ecs", 1195 - "bevy_platform", 1196 - "bevy_reflect", 1197 - "bevy_render", 1198 - "bevy_transform", 1199 - "bevy_utils", 1200 - "derive_more", 1201 - "serde", 1202 - "thiserror 2.0.12", 1203 - "uuid", 1204 - ] 1205 - 1206 - [[package]] 1207 - name = "bevy_sprite" 1208 - version = "0.16.0" 1209 - source = "registry+https://github.com/rust-lang/crates.io-index" 1210 - checksum = "01f97bf54fb1c37a1077139b59bb32bc77f7ca53149cfcaa512adbb69a2d492c" 1211 - dependencies = [ 1212 - "bevy_app", 1213 - "bevy_asset", 1214 - "bevy_color", 1215 - "bevy_core_pipeline", 1216 - "bevy_derive", 1217 - "bevy_ecs", 1218 - "bevy_image", 1219 - "bevy_math", 1220 - "bevy_picking", 1221 - "bevy_platform", 1222 - "bevy_reflect", 1223 - "bevy_render", 1224 - "bevy_transform", 1225 - "bevy_utils", 1226 - "bevy_window", 1227 - "bitflags 2.9.0", 1228 - "bytemuck", 1229 - "derive_more", 1230 - "fixedbitset", 1231 - "nonmax", 1232 - "radsort", 1233 - "tracing", 1234 - ] 1235 - 1236 - [[package]] 1237 - name = "bevy_state" 1238 - version = "0.16.0" 1239 - source = "registry+https://github.com/rust-lang/crates.io-index" 1240 - checksum = "682c343c354b191fe6669823bce3b0695ee1ae4ac36f582e29c436a72b67cdd5" 1241 - dependencies = [ 1242 - "bevy_app", 1243 - "bevy_ecs", 1244 - "bevy_platform", 1245 - "bevy_reflect", 1246 - "bevy_state_macros", 1247 - "bevy_utils", 1248 - "log", 1249 - "variadics_please", 1250 - ] 1251 - 1252 - [[package]] 1253 - name = "bevy_state_macros" 1254 - version = "0.16.0" 1255 - source = "registry+https://github.com/rust-lang/crates.io-index" 1256 - checksum = "55b4bf3970c4f0e60572901df4641656722172c222d71a80c430d36b0e31426c" 1257 - dependencies = [ 1258 - "bevy_macro_utils", 1259 - "proc-macro2", 1260 - "quote", 1261 - "syn 2.0.101", 1262 - ] 1263 - 1264 - [[package]] 1265 - name = "bevy_tasks" 1266 - version = "0.16.0" 1267 - source = "registry+https://github.com/rust-lang/crates.io-index" 1268 - checksum = "444c450b65e108855f42ecb6db0c041a56ea7d7f10cc6222f0ca95e9536a7d19" 1269 - dependencies = [ 1270 - "async-channel", 1271 - "async-executor", 1272 - "async-task", 1273 - "atomic-waker", 1274 - "bevy_platform", 1275 - "cfg-if", 1276 - "concurrent-queue", 1277 - "crossbeam-queue", 1278 - "derive_more", 1279 - "futures-channel", 1280 - "futures-lite", 1281 - "heapless", 1282 - "pin-project", 1283 - "wasm-bindgen-futures", 1284 - ] 1285 - 1286 - [[package]] 1287 - name = "bevy_text" 1288 - version = "0.16.0" 1289 - source = "registry+https://github.com/rust-lang/crates.io-index" 1290 - checksum = "8ef071262c5a9afbc39caba4c0b282c7d045fbb5cf33bdab1924bd2343403833" 1291 - dependencies = [ 1292 - "bevy_app", 1293 - "bevy_asset", 1294 - "bevy_color", 1295 - "bevy_derive", 1296 - "bevy_ecs", 1297 - "bevy_image", 1298 - "bevy_log", 1299 - "bevy_math", 1300 - "bevy_platform", 1301 - "bevy_reflect", 1302 - "bevy_render", 1303 - "bevy_sprite", 1304 - "bevy_transform", 1305 - "bevy_utils", 1306 - "bevy_window", 1307 - "cosmic-text", 1308 - "serde", 1309 - "smallvec", 1310 - "sys-locale", 1311 - "thiserror 2.0.12", 1312 - "tracing", 1313 - "unicode-bidi", 1314 - ] 1315 - 1316 - [[package]] 1317 - name = "bevy_time" 1318 - version = "0.16.0" 1319 - source = "registry+https://github.com/rust-lang/crates.io-index" 1320 - checksum = "456369ca10f8e039aaf273332744674844827854833ee29e28f9e161702f2f55" 1321 - dependencies = [ 1322 - "bevy_app", 1323 - "bevy_ecs", 1324 - "bevy_platform", 1325 - "bevy_reflect", 1326 - "crossbeam-channel", 1327 - "log", 1328 - "serde", 1329 - ] 1330 - 1331 - [[package]] 1332 - name = "bevy_transform" 1333 - version = "0.16.0" 1334 - source = "registry+https://github.com/rust-lang/crates.io-index" 1335 - checksum = "8479cdd5461246943956a7c8347e4e5d6ff857e57add889fb50eee0b5c26ab48" 1336 - dependencies = [ 1337 - "bevy_app", 1338 - "bevy_ecs", 1339 - "bevy_log", 1340 - "bevy_math", 1341 - "bevy_reflect", 1342 - "bevy_tasks", 1343 - "bevy_utils", 1344 - "derive_more", 1345 - "serde", 1346 - "thiserror 2.0.12", 1347 - ] 1348 - 1349 - [[package]] 1350 - name = "bevy_ui" 1351 - version = "0.16.0" 1352 - source = "registry+https://github.com/rust-lang/crates.io-index" 1353 - checksum = "110dc5d0059f112263512be8cd7bfe0466dfb7c26b9bf4c74529355249fd23f9" 1354 - dependencies = [ 1355 - "accesskit", 1356 - "bevy_a11y", 1357 - "bevy_app", 1358 - "bevy_asset", 1359 - "bevy_color", 1360 - "bevy_core_pipeline", 1361 - "bevy_derive", 1362 - "bevy_ecs", 1363 - "bevy_image", 1364 - "bevy_input", 1365 - "bevy_math", 1366 - "bevy_picking", 1367 - "bevy_platform", 1368 - "bevy_reflect", 1369 - "bevy_render", 1370 - "bevy_sprite", 1371 - "bevy_text", 1372 - "bevy_transform", 1373 - "bevy_utils", 1374 - "bevy_window", 1375 - "bytemuck", 1376 - "derive_more", 1377 - "nonmax", 1378 - "smallvec", 1379 - "taffy", 1380 - "thiserror 2.0.12", 1381 - "tracing", 1382 - ] 1383 - 1384 - [[package]] 1385 - name = "bevy_utils" 1386 - version = "0.16.0" 1387 - source = "registry+https://github.com/rust-lang/crates.io-index" 1388 - checksum = "ac2da3b3c1f94dadefcbe837aaa4aa119fcea37f7bdc5307eb05b4ede1921e24" 1389 - dependencies = [ 1390 - "bevy_platform", 1391 - "thread_local", 1392 - ] 1393 - 1394 - [[package]] 1395 - name = "bevy_window" 1396 - version = "0.16.0" 1397 - source = "registry+https://github.com/rust-lang/crates.io-index" 1398 - checksum = "0d83327cc5584da463d12b7a88ddb97f9e006828832287e1564531171fffdeb4" 1399 - dependencies = [ 1400 - "android-activity", 1401 - "bevy_app", 1402 - "bevy_ecs", 1403 - "bevy_input", 1404 - "bevy_math", 1405 - "bevy_platform", 1406 - "bevy_reflect", 1407 - "bevy_utils", 1408 - "log", 1409 - "raw-window-handle", 1410 - "serde", 1411 - "smol_str", 1412 - ] 1413 - 1414 - [[package]] 1415 - name = "bevy_winit" 1416 - version = "0.16.0" 1417 - source = "registry+https://github.com/rust-lang/crates.io-index" 1418 - checksum = "57b14928923ae4274f4b867dce3d0e7b2c8a31bebcb0f6e65a4261c3e0765064" 1419 - dependencies = [ 1420 - "accesskit", 1421 - "accesskit_winit", 1422 - "approx", 1423 - "bevy_a11y", 1424 - "bevy_app", 1425 - "bevy_asset", 1426 - "bevy_derive", 1427 - "bevy_ecs", 1428 - "bevy_image", 1429 - "bevy_input", 1430 - "bevy_input_focus", 1431 - "bevy_log", 1432 - "bevy_math", 1433 - "bevy_platform", 1434 - "bevy_reflect", 1435 - "bevy_tasks", 1436 - "bevy_utils", 1437 - "bevy_window", 1438 - "bytemuck", 1439 - "cfg-if", 1440 - "crossbeam-channel", 1441 - "raw-window-handle", 1442 - "tracing", 1443 - "wasm-bindgen", 1444 - "web-sys", 1445 - "wgpu-types", 1446 - "winit", 1447 - ] 1448 - 1449 - [[package]] 1450 - name = "bindgen" 1451 - version = "0.70.1" 1452 - source = "registry+https://github.com/rust-lang/crates.io-index" 1453 - checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" 1454 - dependencies = [ 1455 - "bitflags 2.9.0", 1456 - "cexpr", 1457 - "clang-sys", 1458 - "itertools 0.13.0", 1459 - "log", 1460 - "prettyplease", 1461 - "proc-macro2", 1462 - "quote", 1463 - "regex", 1464 - "rustc-hash", 1465 - "shlex", 1466 - "syn 2.0.101", 1467 - ] 1468 - 1469 - [[package]] 1470 - name = "binrw" 1471 - version = "0.15.0" 1472 - source = "registry+https://github.com/rust-lang/crates.io-index" 1473 - checksum = "81419ff39e6ed10a92a7f125290859776ced35d9a08a665ae40b23e7ca702f30" 1474 - dependencies = [ 1475 - "array-init", 1476 - "binrw_derive", 1477 - "bytemuck", 1478 - ] 1479 - 1480 - [[package]] 1481 - name = "binrw_derive" 1482 - version = "0.15.0" 1483 - source = "registry+https://github.com/rust-lang/crates.io-index" 1484 - checksum = "376404e55ec40d0d6f8b4b7df3f87b87954bd987f0cf9a7207ea3b6ea5c9add4" 1485 - dependencies = [ 1486 - "either", 1487 - "owo-colors", 1488 - "proc-macro2", 1489 - "quote", 1490 - "syn 2.0.101", 1491 - ] 1492 - 1493 - [[package]] 1494 - name = "bit-set" 1495 - version = "0.5.3" 1496 - source = "registry+https://github.com/rust-lang/crates.io-index" 1497 - checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" 1498 - dependencies = [ 1499 - "bit-vec 0.6.3", 1500 - ] 1501 - 1502 - [[package]] 1503 - name = "bit-set" 1504 - version = "0.8.0" 1505 - source = "registry+https://github.com/rust-lang/crates.io-index" 1506 - checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" 1507 - dependencies = [ 1508 - "bit-vec 0.8.0", 1509 - ] 1510 - 1511 - [[package]] 1512 - name = "bit-vec" 1513 - version = "0.6.3" 1514 - source = "registry+https://github.com/rust-lang/crates.io-index" 1515 - checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" 1516 - 1517 - [[package]] 1518 - name = "bit-vec" 1519 - version = "0.8.0" 1520 - source = "registry+https://github.com/rust-lang/crates.io-index" 1521 - checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" 1522 - 1523 - [[package]] 1524 - name = "bit_field" 1525 - version = "0.10.2" 1526 - source = "registry+https://github.com/rust-lang/crates.io-index" 1527 - checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" 1528 - 1529 - [[package]] 1530 - name = "bitflags" 1531 - version = "1.3.2" 1532 - source = "registry+https://github.com/rust-lang/crates.io-index" 1533 - checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 1534 - 1535 - [[package]] 1536 - name = "bitflags" 1537 - version = "2.9.0" 1538 - source = "registry+https://github.com/rust-lang/crates.io-index" 1539 - checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" 1540 - dependencies = [ 1541 - "serde", 1542 - ] 1543 - 1544 - [[package]] 1545 - name = "bitstream-io" 1546 - version = "2.6.0" 1547 - source = "registry+https://github.com/rust-lang/crates.io-index" 1548 - checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2" 1549 - 1550 - [[package]] 1551 - name = "blake3" 1552 - version = "1.8.2" 1553 - source = "registry+https://github.com/rust-lang/crates.io-index" 1554 - checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" 1555 - dependencies = [ 1556 - "arrayref", 1557 - "arrayvec", 1558 - "cc", 1559 - "cfg-if", 1560 - "constant_time_eq", 1561 - ] 1562 - 1563 - [[package]] 1564 - name = "block" 1565 - version = "0.1.6" 1566 - source = "registry+https://github.com/rust-lang/crates.io-index" 1567 - checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 1568 - 1569 - [[package]] 1570 - name = "block2" 1571 - version = "0.5.1" 1572 - source = "registry+https://github.com/rust-lang/crates.io-index" 1573 - checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" 1574 - dependencies = [ 1575 - "objc2 0.5.2", 1576 - ] 1577 - 1578 - [[package]] 1579 - name = "blocking" 1580 - version = "1.6.1" 1581 - source = "registry+https://github.com/rust-lang/crates.io-index" 1582 - checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" 1583 - dependencies = [ 1584 - "async-channel", 1585 - "async-task", 1586 - "futures-io", 1587 - "futures-lite", 1588 - "piper", 1589 - ] 1590 - 1591 - [[package]] 1592 - name = "built" 1593 - version = "0.7.7" 1594 - source = "registry+https://github.com/rust-lang/crates.io-index" 1595 - checksum = "56ed6191a7e78c36abdb16ab65341eefd73d64d303fffccdbb00d51e4205967b" 1596 - 1597 - [[package]] 1598 - name = "bumpalo" 1599 - version = "3.17.0" 1600 - source = "registry+https://github.com/rust-lang/crates.io-index" 1601 - checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" 1602 - 1603 - [[package]] 1604 - name = "bytemuck" 1605 - version = "1.23.0" 1606 - source = "registry+https://github.com/rust-lang/crates.io-index" 1607 - checksum = "9134a6ef01ce4b366b50689c94f82c14bc72bc5d0386829828a2e2752ef7958c" 1608 - dependencies = [ 1609 - "bytemuck_derive", 1610 - ] 1611 - 1612 - [[package]] 1613 - name = "bytemuck_derive" 1614 - version = "1.9.3" 1615 - source = "registry+https://github.com/rust-lang/crates.io-index" 1616 - checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1" 1617 - dependencies = [ 1618 - "proc-macro2", 1619 - "quote", 1620 - "syn 2.0.101", 1621 - ] 1622 - 1623 - [[package]] 1624 - name = "byteorder" 1625 - version = "1.5.0" 1626 - source = "registry+https://github.com/rust-lang/crates.io-index" 1627 - checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 1628 - 1629 - [[package]] 1630 - name = "byteorder-lite" 1631 - version = "0.1.0" 1632 - source = "registry+https://github.com/rust-lang/crates.io-index" 1633 - checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" 1634 - 1635 - [[package]] 1636 - name = "bytes" 1637 - version = "1.10.1" 1638 - source = "registry+https://github.com/rust-lang/crates.io-index" 1639 - checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" 1640 - 1641 - [[package]] 1642 - name = "calloop" 1643 - version = "0.13.0" 1644 - source = "registry+https://github.com/rust-lang/crates.io-index" 1645 - checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" 1646 - dependencies = [ 1647 - "bitflags 2.9.0", 1648 - "log", 1649 - "polling", 1650 - "rustix", 1651 - "slab", 1652 - "thiserror 1.0.69", 1653 - ] 1654 - 1655 - [[package]] 1656 - name = "calloop-wayland-source" 1657 - version = "0.3.0" 1658 - source = "registry+https://github.com/rust-lang/crates.io-index" 1659 - checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" 1660 - dependencies = [ 1661 - "calloop", 1662 - "rustix", 1663 - "wayland-backend", 1664 - "wayland-client", 1665 - ] 1666 - 1667 - [[package]] 1668 - name = "cc" 1669 - version = "1.2.22" 1670 - source = "registry+https://github.com/rust-lang/crates.io-index" 1671 - checksum = "32db95edf998450acc7881c932f94cd9b05c87b4b2599e8bab064753da4acfd1" 1672 - dependencies = [ 1673 - "jobserver", 1674 - "libc", 1675 - "shlex", 1676 - ] 1677 - 1678 - [[package]] 1679 - name = "cesu8" 1680 - version = "1.1.0" 1681 - source = "registry+https://github.com/rust-lang/crates.io-index" 1682 - checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 1683 - 1684 - [[package]] 1685 - name = "cexpr" 1686 - version = "0.6.0" 1687 - source = "registry+https://github.com/rust-lang/crates.io-index" 1688 - checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" 1689 - dependencies = [ 1690 - "nom", 1691 - ] 1692 - 1693 - [[package]] 1694 - name = "cfg-expr" 1695 - version = "0.15.8" 1696 - source = "registry+https://github.com/rust-lang/crates.io-index" 1697 - checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" 1698 - dependencies = [ 1699 - "smallvec", 1700 - "target-lexicon", 1701 - ] 1702 - 1703 - [[package]] 1704 - name = "cfg-if" 1705 - version = "1.0.0" 1706 - source = "registry+https://github.com/rust-lang/crates.io-index" 1707 - checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 1708 - 1709 - [[package]] 1710 - name = "cfg_aliases" 1711 - version = "0.2.1" 1712 - source = "registry+https://github.com/rust-lang/crates.io-index" 1713 - checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 1714 - 1715 - [[package]] 1716 - name = "clang-sys" 1717 - version = "1.8.1" 1718 - source = "registry+https://github.com/rust-lang/crates.io-index" 1719 - checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" 1720 - dependencies = [ 1721 - "glob", 1722 - "libc", 1723 - "libloading", 1724 - ] 1725 - 1726 - [[package]] 1727 - name = "clipboard-win" 1728 - version = "5.4.0" 1729 - source = "registry+https://github.com/rust-lang/crates.io-index" 1730 - checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" 1731 - dependencies = [ 1732 - "error-code", 1733 - ] 1734 - 1735 - [[package]] 1736 - name = "codespan-reporting" 1737 - version = "0.11.1" 1738 - source = "registry+https://github.com/rust-lang/crates.io-index" 1739 - checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" 1740 - dependencies = [ 1741 - "termcolor", 1742 - "unicode-width", 1743 - ] 1744 - 1745 - [[package]] 1746 - name = "color_quant" 1747 - version = "1.1.0" 1748 - source = "registry+https://github.com/rust-lang/crates.io-index" 1749 - checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" 1750 - 1751 - [[package]] 1752 - name = "combine" 1753 - version = "4.6.7" 1754 - source = "registry+https://github.com/rust-lang/crates.io-index" 1755 - checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" 1756 - dependencies = [ 1757 - "bytes", 1758 - "memchr", 1759 - ] 1760 - 1761 - [[package]] 1762 - name = "concurrent-queue" 1763 - version = "2.5.0" 1764 - source = "registry+https://github.com/rust-lang/crates.io-index" 1765 - checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" 1766 - dependencies = [ 1767 - "crossbeam-utils", 1768 - "portable-atomic", 1769 - ] 1770 - 1771 - [[package]] 1772 - name = "console_error_panic_hook" 1773 - version = "0.1.7" 1774 - source = "registry+https://github.com/rust-lang/crates.io-index" 1775 - checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" 1776 - dependencies = [ 1777 - "cfg-if", 1778 - "wasm-bindgen", 1779 - ] 1780 - 1781 - [[package]] 1782 - name = "const-fnv1a-hash" 1783 - version = "1.1.0" 1784 - source = "registry+https://github.com/rust-lang/crates.io-index" 1785 - checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" 1786 - 1787 - [[package]] 1788 - name = "const_panic" 1789 - version = "0.2.12" 1790 - source = "registry+https://github.com/rust-lang/crates.io-index" 1791 - checksum = "2459fc9262a1aa204eb4b5764ad4f189caec88aea9634389c0a25f8be7f6265e" 1792 - 1793 - [[package]] 1794 - name = "const_soft_float" 1795 - version = "0.1.4" 1796 - source = "registry+https://github.com/rust-lang/crates.io-index" 1797 - checksum = "87ca1caa64ef4ed453e68bb3db612e51cf1b2f5b871337f0fcab1c8f87cc3dff" 1798 - 1799 - [[package]] 1800 - name = "constant_time_eq" 1801 - version = "0.3.1" 1802 - source = "registry+https://github.com/rust-lang/crates.io-index" 1803 - checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" 1804 - 1805 - [[package]] 1806 - name = "constgebra" 1807 - version = "0.1.4" 1808 - source = "registry+https://github.com/rust-lang/crates.io-index" 1809 - checksum = "e1aaf9b65849a68662ac6c0810c8893a765c960b907dd7cfab9c4a50bf764fbc" 1810 - dependencies = [ 1811 - "const_soft_float", 1812 - ] 1813 - 1814 - [[package]] 1815 - name = "core-foundation" 1816 - version = "0.9.4" 1817 - source = "registry+https://github.com/rust-lang/crates.io-index" 1818 - checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 1819 - dependencies = [ 1820 - "core-foundation-sys", 1821 - "libc", 1822 - ] 1823 - 1824 - [[package]] 1825 - name = "core-foundation" 1826 - version = "0.10.0" 1827 - source = "registry+https://github.com/rust-lang/crates.io-index" 1828 - checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" 1829 - dependencies = [ 1830 - "core-foundation-sys", 1831 - "libc", 1832 - ] 1833 - 1834 - [[package]] 1835 - name = "core-foundation-sys" 1836 - version = "0.8.7" 1837 - source = "registry+https://github.com/rust-lang/crates.io-index" 1838 - checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 1839 - 1840 - [[package]] 1841 - name = "core-graphics" 1842 - version = "0.23.2" 1843 - source = "registry+https://github.com/rust-lang/crates.io-index" 1844 - checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" 1845 - dependencies = [ 1846 - "bitflags 1.3.2", 1847 - "core-foundation 0.9.4", 1848 - "core-graphics-types", 1849 - "foreign-types", 1850 - "libc", 1851 - ] 1852 - 1853 - [[package]] 1854 - name = "core-graphics-types" 1855 - version = "0.1.3" 1856 - source = "registry+https://github.com/rust-lang/crates.io-index" 1857 - checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" 1858 - dependencies = [ 1859 - "bitflags 1.3.2", 1860 - "core-foundation 0.9.4", 1861 - "libc", 1862 - ] 1863 - 1864 - [[package]] 1865 - name = "coreaudio-rs" 1866 - version = "0.11.3" 1867 - source = "registry+https://github.com/rust-lang/crates.io-index" 1868 - checksum = "321077172d79c662f64f5071a03120748d5bb652f5231570141be24cfcd2bace" 1869 - dependencies = [ 1870 - "bitflags 1.3.2", 1871 - "core-foundation-sys", 1872 - "coreaudio-sys", 1873 - ] 1874 - 1875 - [[package]] 1876 - name = "coreaudio-sys" 1877 - version = "0.2.16" 1878 - source = "registry+https://github.com/rust-lang/crates.io-index" 1879 - checksum = "2ce857aa0b77d77287acc1ac3e37a05a8c95a2af3647d23b15f263bdaeb7562b" 1880 - dependencies = [ 1881 - "bindgen", 1882 - ] 1883 - 1884 - [[package]] 1885 - name = "cosmic-text" 1886 - version = "0.13.2" 1887 - source = "registry+https://github.com/rust-lang/crates.io-index" 1888 - checksum = "e418dd4f5128c3e93eab12246391c54a20c496811131f85754dc8152ee207892" 1889 - dependencies = [ 1890 - "bitflags 2.9.0", 1891 - "fontdb", 1892 - "log", 1893 - "rangemap", 1894 - "rustc-hash", 1895 - "rustybuzz", 1896 - "self_cell", 1897 - "smol_str", 1898 - "swash", 1899 - "sys-locale", 1900 - "ttf-parser 0.21.1", 1901 - "unicode-bidi", 1902 - "unicode-linebreak", 1903 - "unicode-script", 1904 - "unicode-segmentation", 1905 - ] 1906 - 1907 - [[package]] 1908 - name = "cpal" 1909 - version = "0.15.3" 1910 - source = "registry+https://github.com/rust-lang/crates.io-index" 1911 - checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779" 1912 - dependencies = [ 1913 - "alsa", 1914 - "core-foundation-sys", 1915 - "coreaudio-rs", 1916 - "dasp_sample", 1917 - "jni", 1918 - "js-sys", 1919 - "libc", 1920 - "mach2", 1921 - "ndk 0.8.0", 1922 - "ndk-context", 1923 - "oboe", 1924 - "wasm-bindgen", 1925 - "wasm-bindgen-futures", 1926 - "web-sys", 1927 - "windows 0.54.0", 1928 - ] 1929 - 1930 - [[package]] 1931 - name = "crc32fast" 1932 - version = "1.4.2" 1933 - source = "registry+https://github.com/rust-lang/crates.io-index" 1934 - checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" 1935 - dependencies = [ 1936 - "cfg-if", 1937 - ] 1938 - 1939 - [[package]] 1940 - name = "critical-section" 1941 - version = "1.2.0" 1942 - source = "registry+https://github.com/rust-lang/crates.io-index" 1943 - checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" 1944 - 1945 - [[package]] 1946 - name = "crossbeam-channel" 1947 - version = "0.5.15" 1948 - source = "registry+https://github.com/rust-lang/crates.io-index" 1949 - checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" 1950 - dependencies = [ 1951 - "crossbeam-utils", 1952 - ] 1953 - 1954 - [[package]] 1955 - name = "crossbeam-deque" 1956 - version = "0.8.6" 1957 - source = "registry+https://github.com/rust-lang/crates.io-index" 1958 - checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" 1959 - dependencies = [ 1960 - "crossbeam-epoch", 1961 - "crossbeam-utils", 1962 - ] 1963 - 1964 - [[package]] 1965 - name = "crossbeam-epoch" 1966 - version = "0.9.18" 1967 - source = "registry+https://github.com/rust-lang/crates.io-index" 1968 - checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 1969 - dependencies = [ 1970 - "crossbeam-utils", 1971 - ] 1972 - 1973 - [[package]] 1974 - name = "crossbeam-queue" 1975 - version = "0.3.12" 1976 - source = "registry+https://github.com/rust-lang/crates.io-index" 1977 - checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" 1978 - dependencies = [ 1979 - "crossbeam-utils", 1980 - ] 1981 - 1982 - [[package]] 1983 - name = "crossbeam-utils" 1984 - version = "0.8.21" 1985 - source = "registry+https://github.com/rust-lang/crates.io-index" 1986 - checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 1987 - 1988 - [[package]] 1989 - name = "crunchy" 1990 - version = "0.2.3" 1991 - source = "registry+https://github.com/rust-lang/crates.io-index" 1992 - checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" 1993 - 1994 - [[package]] 1995 - name = "ctrlc" 1996 - version = "3.4.6" 1997 - source = "registry+https://github.com/rust-lang/crates.io-index" 1998 - checksum = "697b5419f348fd5ae2478e8018cb016c00a5881c7f46c717de98ffd135a5651c" 1999 - dependencies = [ 2000 - "nix", 2001 - "windows-sys 0.59.0", 2002 - ] 2003 - 2004 - [[package]] 2005 - name = "cursor-icon" 2006 - version = "1.1.0" 2007 - source = "registry+https://github.com/rust-lang/crates.io-index" 2008 - checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" 2009 - 2010 - [[package]] 2011 - name = "dasp_sample" 2012 - version = "0.11.0" 2013 - source = "registry+https://github.com/rust-lang/crates.io-index" 2014 - checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" 2015 - 2016 - [[package]] 2017 - name = "data-encoding" 2018 - version = "2.9.0" 2019 - source = "registry+https://github.com/rust-lang/crates.io-index" 2020 - checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" 2021 - 2022 - [[package]] 2023 - name = "derive_more" 2024 - version = "1.0.0" 2025 - source = "registry+https://github.com/rust-lang/crates.io-index" 2026 - checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" 2027 - dependencies = [ 2028 - "derive_more-impl", 2029 - ] 2030 - 2031 - [[package]] 2032 - name = "derive_more-impl" 2033 - version = "1.0.0" 2034 - source = "registry+https://github.com/rust-lang/crates.io-index" 2035 - checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" 2036 - dependencies = [ 2037 - "proc-macro2", 2038 - "quote", 2039 - "syn 2.0.101", 2040 - "unicode-xid", 2041 - ] 2042 - 2043 - [[package]] 2044 - name = "dispatch" 2045 - version = "0.2.0" 2046 - source = "registry+https://github.com/rust-lang/crates.io-index" 2047 - checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 2048 - 2049 - [[package]] 2050 - name = "dispatch2" 2051 - version = "0.3.0" 2052 - source = "registry+https://github.com/rust-lang/crates.io-index" 2053 - checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" 2054 - dependencies = [ 2055 - "bitflags 2.9.0", 2056 - "objc2 0.6.1", 2057 - ] 2058 - 2059 - [[package]] 2060 - name = "displaydoc" 2061 - version = "0.2.5" 2062 - source = "registry+https://github.com/rust-lang/crates.io-index" 2063 - checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 2064 - dependencies = [ 2065 - "proc-macro2", 2066 - "quote", 2067 - "syn 2.0.101", 2068 - ] 2069 - 2070 - [[package]] 2071 - name = "disqualified" 2072 - version = "1.0.0" 2073 - source = "registry+https://github.com/rust-lang/crates.io-index" 2074 - checksum = "c9c272297e804878a2a4b707cfcfc6d2328b5bb936944613b4fdf2b9269afdfd" 2075 - 2076 - [[package]] 2077 - name = "dlib" 2078 - version = "0.5.2" 2079 - source = "registry+https://github.com/rust-lang/crates.io-index" 2080 - checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" 2081 - dependencies = [ 2082 - "libloading", 2083 - ] 2084 - 2085 - [[package]] 2086 - name = "document-features" 2087 - version = "0.2.11" 2088 - source = "registry+https://github.com/rust-lang/crates.io-index" 2089 - checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" 2090 - dependencies = [ 2091 - "litrs", 2092 - ] 2093 - 2094 - [[package]] 2095 - name = "downcast-rs" 2096 - version = "1.2.1" 2097 - source = "registry+https://github.com/rust-lang/crates.io-index" 2098 - checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" 2099 - 2100 - [[package]] 2101 - name = "downcast-rs" 2102 - version = "2.0.1" 2103 - source = "registry+https://github.com/rust-lang/crates.io-index" 2104 - checksum = "ea8a8b81cacc08888170eef4d13b775126db426d0b348bee9d18c2c1eaf123cf" 2105 - 2106 - [[package]] 2107 - name = "dpi" 2108 - version = "0.1.2" 2109 - source = "registry+https://github.com/rust-lang/crates.io-index" 2110 - checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" 2111 - 2112 - [[package]] 2113 - name = "ecolor" 2114 - version = "0.31.1" 2115 - source = "registry+https://github.com/rust-lang/crates.io-index" 2116 - checksum = "bc4feb366740ded31a004a0e4452fbf84e80ef432ecf8314c485210229672fd1" 2117 - dependencies = [ 2118 - "bytemuck", 2119 - "emath", 2120 - ] 2121 - 2122 - [[package]] 2123 - name = "egui" 2124 - version = "0.31.1" 2125 - source = "registry+https://github.com/rust-lang/crates.io-index" 2126 - checksum = "25dd34cec49ab55d85ebf70139cb1ccd29c977ef6b6ba4fe85489d6877ee9ef3" 2127 - dependencies = [ 2128 - "ahash", 2129 - "bitflags 2.9.0", 2130 - "emath", 2131 - "epaint", 2132 - "nohash-hasher", 2133 - "profiling", 2134 - ] 2135 - 2136 - [[package]] 2137 - name = "either" 2138 - version = "1.15.0" 2139 - source = "registry+https://github.com/rust-lang/crates.io-index" 2140 - checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" 2141 - 2142 - [[package]] 2143 - name = "emath" 2144 - version = "0.31.1" 2145 - source = "registry+https://github.com/rust-lang/crates.io-index" 2146 - checksum = "9e4cadcff7a5353ba72b7fea76bf2122b5ebdbc68e8155aa56dfdea90083fe1b" 2147 - dependencies = [ 2148 - "bytemuck", 2149 - ] 2150 - 2151 - [[package]] 2152 - name = "encase" 2153 - version = "0.10.0" 2154 - source = "registry+https://github.com/rust-lang/crates.io-index" 2155 - checksum = "b0a05902cf601ed11d564128448097b98ebe3c6574bd7b6a653a3d56d54aa020" 2156 - dependencies = [ 2157 - "const_panic", 2158 - "encase_derive", 2159 - "glam 0.29.3", 2160 - "thiserror 1.0.69", 2161 - ] 2162 - 2163 - [[package]] 2164 - name = "encase_derive" 2165 - version = "0.10.0" 2166 - source = "registry+https://github.com/rust-lang/crates.io-index" 2167 - checksum = "181d475b694e2dd56ae919ce7699d344d1fd259292d590c723a50d1189a2ea85" 2168 - dependencies = [ 2169 - "encase_derive_impl", 2170 - ] 2171 - 2172 - [[package]] 2173 - name = "encase_derive_impl" 2174 - version = "0.10.0" 2175 - source = "registry+https://github.com/rust-lang/crates.io-index" 2176 - checksum = "f97b51c5cc57ef7c5f7a0c57c250251c49ee4c28f819f87ac32f4aceabc36792" 2177 - dependencies = [ 2178 - "proc-macro2", 2179 - "quote", 2180 - "syn 2.0.101", 2181 - ] 2182 - 2183 - [[package]] 2184 - name = "epaint" 2185 - version = "0.31.1" 2186 - source = "registry+https://github.com/rust-lang/crates.io-index" 2187 - checksum = "41fcc0f5a7c613afd2dee5e4b30c3e6acafb8ad6f0edb06068811f708a67c562" 2188 - dependencies = [ 2189 - "ab_glyph", 2190 - "ahash", 2191 - "bytemuck", 2192 - "ecolor", 2193 - "emath", 2194 - "epaint_default_fonts", 2195 - "nohash-hasher", 2196 - "parking_lot", 2197 - "profiling", 2198 - ] 2199 - 2200 - [[package]] 2201 - name = "epaint_default_fonts" 2202 - version = "0.31.1" 2203 - source = "registry+https://github.com/rust-lang/crates.io-index" 2204 - checksum = "fc7e7a64c02cf7a5b51e745a9e45f60660a286f151c238b9d397b3e923f5082f" 2205 - 2206 - [[package]] 2207 - name = "equivalent" 2208 - version = "1.0.2" 2209 - source = "registry+https://github.com/rust-lang/crates.io-index" 2210 - checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 2211 - 2212 - [[package]] 2213 - name = "erased-serde" 2214 - version = "0.4.6" 2215 - source = "registry+https://github.com/rust-lang/crates.io-index" 2216 - checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" 2217 - dependencies = [ 2218 - "serde", 2219 - "typeid", 2220 - ] 2221 - 2222 - [[package]] 2223 - name = "errno" 2224 - version = "0.3.11" 2225 - source = "registry+https://github.com/rust-lang/crates.io-index" 2226 - checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" 2227 - dependencies = [ 2228 - "libc", 2229 - "windows-sys 0.59.0", 2230 - ] 2231 - 2232 - [[package]] 2233 - name = "error-code" 2234 - version = "3.3.2" 2235 - source = "registry+https://github.com/rust-lang/crates.io-index" 2236 - checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" 2237 - 2238 - [[package]] 2239 - name = "euclid" 2240 - version = "0.22.11" 2241 - source = "registry+https://github.com/rust-lang/crates.io-index" 2242 - checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" 2243 - dependencies = [ 2244 - "num-traits", 2245 - ] 2246 - 2247 - [[package]] 2248 - name = "event-listener" 2249 - version = "5.4.0" 2250 - source = "registry+https://github.com/rust-lang/crates.io-index" 2251 - checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" 2252 - dependencies = [ 2253 - "concurrent-queue", 2254 - "parking", 2255 - "pin-project-lite", 2256 - ] 2257 - 2258 - [[package]] 2259 - name = "event-listener-strategy" 2260 - version = "0.5.4" 2261 - source = "registry+https://github.com/rust-lang/crates.io-index" 2262 - checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" 2263 - dependencies = [ 2264 - "event-listener", 2265 - "pin-project-lite", 2266 - ] 2267 - 2268 - [[package]] 2269 - name = "exr" 2270 - version = "1.73.0" 2271 - source = "registry+https://github.com/rust-lang/crates.io-index" 2272 - checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0" 2273 - dependencies = [ 2274 - "bit_field", 2275 - "half", 2276 - "lebe", 2277 - "miniz_oxide", 2278 - "rayon-core", 2279 - "smallvec", 2280 - "zune-inflate", 2281 - ] 2282 - 2283 - [[package]] 2284 - name = "fastrand" 2285 - version = "2.3.0" 2286 - source = "registry+https://github.com/rust-lang/crates.io-index" 2287 - checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 2288 - 2289 - [[package]] 2290 - name = "fdeflate" 2291 - version = "0.3.7" 2292 - source = "registry+https://github.com/rust-lang/crates.io-index" 2293 - checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" 2294 - dependencies = [ 2295 - "simd-adler32", 2296 - ] 2297 - 2298 - [[package]] 2299 - name = "fixedbitset" 2300 - version = "0.5.7" 2301 - source = "registry+https://github.com/rust-lang/crates.io-index" 2302 - checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" 2303 - 2304 - [[package]] 2305 - name = "flate2" 2306 - version = "1.1.1" 2307 - source = "registry+https://github.com/rust-lang/crates.io-index" 2308 - checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" 2309 - dependencies = [ 2310 - "crc32fast", 2311 - "libz-rs-sys", 2312 - "miniz_oxide", 2313 - ] 2314 - 2315 - [[package]] 2316 - name = "fnv" 2317 - version = "1.0.7" 2318 - source = "registry+https://github.com/rust-lang/crates.io-index" 2319 - checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 2320 - 2321 - [[package]] 2322 - name = "foldhash" 2323 - version = "0.1.5" 2324 - source = "registry+https://github.com/rust-lang/crates.io-index" 2325 - checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" 2326 - 2327 - [[package]] 2328 - name = "font-types" 2329 - version = "0.9.0" 2330 - source = "registry+https://github.com/rust-lang/crates.io-index" 2331 - checksum = "02a596f5713680923a2080d86de50fe472fb290693cf0f701187a1c8b36996b7" 2332 - dependencies = [ 2333 - "bytemuck", 2334 - ] 2335 - 2336 - [[package]] 2337 - name = "fontconfig-parser" 2338 - version = "0.5.7" 2339 - source = "registry+https://github.com/rust-lang/crates.io-index" 2340 - checksum = "c1fcfcd44ca6e90c921fee9fa665d530b21ef1327a4c1a6c5250ea44b776ada7" 2341 - dependencies = [ 2342 - "roxmltree", 2343 - ] 2344 - 2345 - [[package]] 2346 - name = "fontdb" 2347 - version = "0.16.2" 2348 - source = "registry+https://github.com/rust-lang/crates.io-index" 2349 - checksum = "b0299020c3ef3f60f526a4f64ab4a3d4ce116b1acbf24cdd22da0068e5d81dc3" 2350 - dependencies = [ 2351 - "fontconfig-parser", 2352 - "log", 2353 - "memmap2", 2354 - "slotmap", 2355 - "tinyvec", 2356 - "ttf-parser 0.20.0", 2357 - ] 2358 - 2359 - [[package]] 2360 - name = "foreign-types" 2361 - version = "0.5.0" 2362 - source = "registry+https://github.com/rust-lang/crates.io-index" 2363 - checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" 2364 - dependencies = [ 2365 - "foreign-types-macros", 2366 - "foreign-types-shared", 2367 - ] 2368 - 2369 - [[package]] 2370 - name = "foreign-types-macros" 2371 - version = "0.2.3" 2372 - source = "registry+https://github.com/rust-lang/crates.io-index" 2373 - checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" 2374 - dependencies = [ 2375 - "proc-macro2", 2376 - "quote", 2377 - "syn 2.0.101", 2378 - ] 2379 - 2380 - [[package]] 2381 - name = "foreign-types-shared" 2382 - version = "0.3.1" 2383 - source = "registry+https://github.com/rust-lang/crates.io-index" 2384 - checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" 2385 - 2386 - [[package]] 2387 - name = "form_urlencoded" 2388 - version = "1.2.1" 2389 - source = "registry+https://github.com/rust-lang/crates.io-index" 2390 - checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 2391 - dependencies = [ 2392 - "percent-encoding", 2393 - ] 2394 - 2395 - [[package]] 2396 - name = "futures-channel" 2397 - version = "0.3.31" 2398 - source = "registry+https://github.com/rust-lang/crates.io-index" 2399 - checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" 2400 - dependencies = [ 2401 - "futures-core", 2402 - ] 2403 - 2404 - [[package]] 2405 - name = "futures-core" 2406 - version = "0.3.31" 2407 - source = "registry+https://github.com/rust-lang/crates.io-index" 2408 - checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 2409 - 2410 - [[package]] 2411 - name = "futures-io" 2412 - version = "0.3.31" 2413 - source = "registry+https://github.com/rust-lang/crates.io-index" 2414 - checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" 2415 - 2416 - [[package]] 2417 - name = "futures-lite" 2418 - version = "2.6.0" 2419 - source = "registry+https://github.com/rust-lang/crates.io-index" 2420 - checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" 2421 - dependencies = [ 2422 - "fastrand", 2423 - "futures-core", 2424 - "futures-io", 2425 - "parking", 2426 - "pin-project-lite", 2427 - ] 2428 - 2429 - [[package]] 2430 - name = "gethostname" 2431 - version = "0.4.3" 2432 - source = "registry+https://github.com/rust-lang/crates.io-index" 2433 - checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" 2434 - dependencies = [ 2435 - "libc", 2436 - "windows-targets 0.48.5", 2437 - ] 2438 - 2439 - [[package]] 2440 - name = "getrandom" 2441 - version = "0.2.16" 2442 - source = "registry+https://github.com/rust-lang/crates.io-index" 2443 - checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" 2444 - dependencies = [ 2445 - "cfg-if", 2446 - "js-sys", 2447 - "libc", 2448 - "wasi 0.11.0+wasi-snapshot-preview1", 2449 - "wasm-bindgen", 2450 - ] 2451 - 2452 - [[package]] 2453 - name = "getrandom" 2454 - version = "0.3.3" 2455 - source = "registry+https://github.com/rust-lang/crates.io-index" 2456 - checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" 2457 - dependencies = [ 2458 - "cfg-if", 2459 - "libc", 2460 - "r-efi", 2461 - "wasi 0.14.2+wasi-0.2.4", 2462 - ] 2463 - 2464 - [[package]] 2465 - name = "gif" 2466 - version = "0.13.1" 2467 - source = "registry+https://github.com/rust-lang/crates.io-index" 2468 - checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" 2469 - dependencies = [ 2470 - "color_quant", 2471 - "weezl", 2472 - ] 2473 - 2474 - [[package]] 2475 - name = "gilrs" 2476 - version = "0.11.0" 2477 - source = "registry+https://github.com/rust-lang/crates.io-index" 2478 - checksum = "bbb2c998745a3c1ac90f64f4f7b3a54219fd3612d7705e7798212935641ed18f" 2479 - dependencies = [ 2480 - "fnv", 2481 - "gilrs-core", 2482 - "log", 2483 - "uuid", 2484 - "vec_map", 2485 - ] 2486 - 2487 - [[package]] 2488 - name = "gilrs-core" 2489 - version = "0.6.4" 2490 - source = "registry+https://github.com/rust-lang/crates.io-index" 2491 - checksum = "a6d95ae10ce5aa99543a28cf74e41c11f3b9e3c14f0452bbde46024753cd683e" 2492 - dependencies = [ 2493 - "core-foundation 0.10.0", 2494 - "inotify", 2495 - "io-kit-sys", 2496 - "js-sys", 2497 - "libc", 2498 - "libudev-sys", 2499 - "log", 2500 - "nix", 2501 - "uuid", 2502 - "vec_map", 2503 - "wasm-bindgen", 2504 - "web-sys", 2505 - "windows 0.61.1", 2506 - ] 2507 - 2508 - [[package]] 2509 - name = "gl_generator" 2510 - version = "0.14.0" 2511 - source = "registry+https://github.com/rust-lang/crates.io-index" 2512 - checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" 2513 - dependencies = [ 2514 - "khronos_api", 2515 - "log", 2516 - "xml-rs", 2517 - ] 2518 - 2519 - [[package]] 2520 - name = "glam" 2521 - version = "0.29.3" 2522 - source = "registry+https://github.com/rust-lang/crates.io-index" 2523 - checksum = "8babf46d4c1c9d92deac9f7be466f76dfc4482b6452fc5024b5e8daf6ffeb3ee" 2524 - dependencies = [ 2525 - "bytemuck", 2526 - "libm", 2527 - "rand", 2528 - "serde", 2529 - ] 2530 - 2531 - [[package]] 2532 - name = "glam" 2533 - version = "0.30.3" 2534 - source = "registry+https://github.com/rust-lang/crates.io-index" 2535 - checksum = "6b46b9ca4690308844c644e7c634d68792467260e051c8543e0c7871662b3ba7" 2536 - 2537 - [[package]] 2538 - name = "glob" 2539 - version = "0.3.2" 2540 - source = "registry+https://github.com/rust-lang/crates.io-index" 2541 - checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" 2542 - 2543 - [[package]] 2544 - name = "glow" 2545 - version = "0.16.0" 2546 - source = "registry+https://github.com/rust-lang/crates.io-index" 2547 - checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" 2548 - dependencies = [ 2549 - "js-sys", 2550 - "slotmap", 2551 - "wasm-bindgen", 2552 - "web-sys", 2553 - ] 2554 - 2555 - [[package]] 2556 - name = "gltf" 2557 - version = "1.4.1" 2558 - source = "registry+https://github.com/rust-lang/crates.io-index" 2559 - checksum = "e3ce1918195723ce6ac74e80542c5a96a40c2b26162c1957a5cd70799b8cacf7" 2560 - dependencies = [ 2561 - "byteorder", 2562 - "gltf-json", 2563 - "lazy_static", 2564 - "serde_json", 2565 - ] 2566 - 2567 - [[package]] 2568 - name = "gltf-derive" 2569 - version = "1.4.1" 2570 - source = "registry+https://github.com/rust-lang/crates.io-index" 2571 - checksum = "14070e711538afba5d6c807edb74bcb84e5dbb9211a3bf5dea0dfab5b24f4c51" 2572 - dependencies = [ 2573 - "inflections", 2574 - "proc-macro2", 2575 - "quote", 2576 - "syn 2.0.101", 2577 - ] 2578 - 2579 - [[package]] 2580 - name = "gltf-json" 2581 - version = "1.4.1" 2582 - source = "registry+https://github.com/rust-lang/crates.io-index" 2583 - checksum = "e6176f9d60a7eab0a877e8e96548605dedbde9190a7ae1e80bbcc1c9af03ab14" 2584 - dependencies = [ 2585 - "gltf-derive", 2586 - "serde", 2587 - "serde_derive", 2588 - "serde_json", 2589 - ] 2590 - 2591 - [[package]] 2592 - name = "glutin_wgl_sys" 2593 - version = "0.6.1" 2594 - source = "registry+https://github.com/rust-lang/crates.io-index" 2595 - checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" 2596 - dependencies = [ 2597 - "gl_generator", 2598 - ] 2599 - 2600 - [[package]] 2601 - name = "gpu-alloc" 2602 - version = "0.6.0" 2603 - source = "registry+https://github.com/rust-lang/crates.io-index" 2604 - checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" 2605 - dependencies = [ 2606 - "bitflags 2.9.0", 2607 - "gpu-alloc-types", 2608 - ] 2609 - 2610 - [[package]] 2611 - name = "gpu-alloc-types" 2612 - version = "0.3.0" 2613 - source = "registry+https://github.com/rust-lang/crates.io-index" 2614 - checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" 2615 - dependencies = [ 2616 - "bitflags 2.9.0", 2617 - ] 2618 - 2619 - [[package]] 2620 - name = "gpu-allocator" 2621 - version = "0.27.0" 2622 - source = "registry+https://github.com/rust-lang/crates.io-index" 2623 - checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd" 2624 - dependencies = [ 2625 - "log", 2626 - "presser", 2627 - "thiserror 1.0.69", 2628 - "windows 0.58.0", 2629 - ] 2630 - 2631 - [[package]] 2632 - name = "gpu-descriptor" 2633 - version = "0.3.1" 2634 - source = "registry+https://github.com/rust-lang/crates.io-index" 2635 - checksum = "dcf29e94d6d243368b7a56caa16bc213e4f9f8ed38c4d9557069527b5d5281ca" 2636 - dependencies = [ 2637 - "bitflags 2.9.0", 2638 - "gpu-descriptor-types", 2639 - "hashbrown", 2640 - ] 2641 - 2642 - [[package]] 2643 - name = "gpu-descriptor-types" 2644 - version = "0.2.0" 2645 - source = "registry+https://github.com/rust-lang/crates.io-index" 2646 - checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" 2647 - dependencies = [ 2648 - "bitflags 2.9.0", 2649 - ] 2650 - 2651 - [[package]] 2652 - name = "grid" 2653 - version = "0.15.0" 2654 - source = "registry+https://github.com/rust-lang/crates.io-index" 2655 - checksum = "36119f3a540b086b4e436bb2b588cf98a68863470e0e880f4d0842f112a3183a" 2656 - 2657 - [[package]] 2658 - name = "guillotiere" 2659 - version = "0.6.2" 2660 - source = "registry+https://github.com/rust-lang/crates.io-index" 2661 - checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" 2662 - dependencies = [ 2663 - "euclid", 2664 - "svg_fmt", 2665 - ] 2666 - 2667 - [[package]] 2668 - name = "half" 2669 - version = "2.6.0" 2670 - source = "registry+https://github.com/rust-lang/crates.io-index" 2671 - checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" 2672 - dependencies = [ 2673 - "cfg-if", 2674 - "crunchy", 2675 - ] 2676 - 2677 - [[package]] 2678 - name = "hash32" 2679 - version = "0.3.1" 2680 - source = "registry+https://github.com/rust-lang/crates.io-index" 2681 - checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" 2682 - dependencies = [ 2683 - "byteorder", 2684 - ] 2685 - 2686 - [[package]] 2687 - name = "hashbrown" 2688 - version = "0.15.3" 2689 - source = "registry+https://github.com/rust-lang/crates.io-index" 2690 - checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" 2691 - dependencies = [ 2692 - "equivalent", 2693 - "foldhash", 2694 - "serde", 2695 - ] 2696 - 2697 - [[package]] 2698 - name = "heapless" 2699 - version = "0.8.0" 2700 - source = "registry+https://github.com/rust-lang/crates.io-index" 2701 - checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" 2702 - dependencies = [ 2703 - "hash32", 2704 - "portable-atomic", 2705 - "stable_deref_trait", 2706 - ] 2707 - 2708 - [[package]] 2709 - name = "heck" 2710 - version = "0.5.0" 2711 - source = "registry+https://github.com/rust-lang/crates.io-index" 2712 - checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 2713 - 2714 - [[package]] 2715 - name = "hermit-abi" 2716 - version = "0.4.0" 2717 - source = "registry+https://github.com/rust-lang/crates.io-index" 2718 - checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" 2719 - 2720 - [[package]] 2721 - name = "hexasphere" 2722 - version = "15.1.0" 2723 - source = "registry+https://github.com/rust-lang/crates.io-index" 2724 - checksum = "d9c9e718d32b6e6b2b32354e1b0367025efdd0b11d6a740b905ddf5db1074679" 2725 - dependencies = [ 2726 - "constgebra", 2727 - "glam 0.29.3", 2728 - "tinyvec", 2729 - ] 2730 - 2731 - [[package]] 2732 - name = "hexf-parse" 2733 - version = "0.2.1" 2734 - source = "registry+https://github.com/rust-lang/crates.io-index" 2735 - checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" 2736 - 2737 - [[package]] 2738 - name = "home" 2739 - version = "0.5.11" 2740 - source = "registry+https://github.com/rust-lang/crates.io-index" 2741 - checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" 2742 - dependencies = [ 2743 - "windows-sys 0.59.0", 2744 - ] 2745 - 2746 - [[package]] 2747 - name = "icu_collections" 2748 - version = "2.0.0" 2749 - source = "registry+https://github.com/rust-lang/crates.io-index" 2750 - checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" 2751 - dependencies = [ 2752 - "displaydoc", 2753 - "potential_utf", 2754 - "yoke", 2755 - "zerofrom", 2756 - "zerovec", 2757 - ] 2758 - 2759 - [[package]] 2760 - name = "icu_locale_core" 2761 - version = "2.0.0" 2762 - source = "registry+https://github.com/rust-lang/crates.io-index" 2763 - checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" 2764 - dependencies = [ 2765 - "displaydoc", 2766 - "litemap", 2767 - "tinystr", 2768 - "writeable", 2769 - "zerovec", 2770 - ] 2771 - 2772 - [[package]] 2773 - name = "icu_normalizer" 2774 - version = "2.0.0" 2775 - source = "registry+https://github.com/rust-lang/crates.io-index" 2776 - checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" 2777 - dependencies = [ 2778 - "displaydoc", 2779 - "icu_collections", 2780 - "icu_normalizer_data", 2781 - "icu_properties", 2782 - "icu_provider", 2783 - "smallvec", 2784 - "zerovec", 2785 - ] 2786 - 2787 - [[package]] 2788 - name = "icu_normalizer_data" 2789 - version = "2.0.0" 2790 - source = "registry+https://github.com/rust-lang/crates.io-index" 2791 - checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" 2792 - 2793 - [[package]] 2794 - name = "icu_properties" 2795 - version = "2.0.0" 2796 - source = "registry+https://github.com/rust-lang/crates.io-index" 2797 - checksum = "2549ca8c7241c82f59c80ba2a6f415d931c5b58d24fb8412caa1a1f02c49139a" 2798 - dependencies = [ 2799 - "displaydoc", 2800 - "icu_collections", 2801 - "icu_locale_core", 2802 - "icu_properties_data", 2803 - "icu_provider", 2804 - "potential_utf", 2805 - "zerotrie", 2806 - "zerovec", 2807 - ] 2808 - 2809 - [[package]] 2810 - name = "icu_properties_data" 2811 - version = "2.0.0" 2812 - source = "registry+https://github.com/rust-lang/crates.io-index" 2813 - checksum = "8197e866e47b68f8f7d95249e172903bec06004b18b2937f1095d40a0c57de04" 2814 - 2815 - [[package]] 2816 - name = "icu_provider" 2817 - version = "2.0.0" 2818 - source = "registry+https://github.com/rust-lang/crates.io-index" 2819 - checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" 2820 - dependencies = [ 2821 - "displaydoc", 2822 - "icu_locale_core", 2823 - "stable_deref_trait", 2824 - "tinystr", 2825 - "writeable", 2826 - "yoke", 2827 - "zerofrom", 2828 - "zerotrie", 2829 - "zerovec", 2830 - ] 2831 - 2832 - [[package]] 2833 - name = "idna" 2834 - version = "1.0.3" 2835 - source = "registry+https://github.com/rust-lang/crates.io-index" 2836 - checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" 2837 - dependencies = [ 2838 - "idna_adapter", 2839 - "smallvec", 2840 - "utf8_iter", 2841 - ] 2842 - 2843 - [[package]] 2844 - name = "idna_adapter" 2845 - version = "1.2.1" 2846 - source = "registry+https://github.com/rust-lang/crates.io-index" 2847 - checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" 2848 - dependencies = [ 2849 - "icu_normalizer", 2850 - "icu_properties", 2851 - ] 2852 - 2853 - [[package]] 2854 - name = "image" 2855 - version = "0.24.9" 2856 - source = "registry+https://github.com/rust-lang/crates.io-index" 2857 - checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" 2858 - dependencies = [ 2859 - "bytemuck", 2860 - "byteorder", 2861 - "color_quant", 2862 - "exr", 2863 - "gif", 2864 - "jpeg-decoder", 2865 - "num-traits", 2866 - "png", 2867 - "qoi", 2868 - "tiff", 2869 - ] 2870 - 2871 - [[package]] 2872 - name = "image" 2873 - version = "0.25.6" 2874 - source = "registry+https://github.com/rust-lang/crates.io-index" 2875 - checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a" 2876 - dependencies = [ 2877 - "bytemuck", 2878 - "byteorder-lite", 2879 - "color_quant", 2880 - "exr", 2881 - "gif", 2882 - "image-webp", 2883 - "num-traits", 2884 - "png", 2885 - "qoi", 2886 - "ravif", 2887 - "rayon", 2888 - "rgb", 2889 - "tiff", 2890 - "zune-core", 2891 - "zune-jpeg", 2892 - ] 2893 - 2894 - [[package]] 2895 - name = "image-webp" 2896 - version = "0.2.1" 2897 - source = "registry+https://github.com/rust-lang/crates.io-index" 2898 - checksum = "b77d01e822461baa8409e156015a1d91735549f0f2c17691bd2d996bef238f7f" 2899 - dependencies = [ 2900 - "byteorder-lite", 2901 - "quick-error", 2902 - ] 2903 - 2904 - [[package]] 2905 - name = "imgref" 2906 - version = "1.11.0" 2907 - source = "registry+https://github.com/rust-lang/crates.io-index" 2908 - checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408" 2909 - 2910 - [[package]] 2911 - name = "immutable-chunkmap" 2912 - version = "2.0.6" 2913 - source = "registry+https://github.com/rust-lang/crates.io-index" 2914 - checksum = "12f97096f508d54f8f8ab8957862eee2ccd628847b6217af1a335e1c44dee578" 2915 - dependencies = [ 2916 - "arrayvec", 2917 - ] 2918 - 2919 - [[package]] 2920 - name = "indexmap" 2921 - version = "2.9.0" 2922 - source = "registry+https://github.com/rust-lang/crates.io-index" 2923 - checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" 2924 - dependencies = [ 2925 - "equivalent", 2926 - "hashbrown", 2927 - "serde", 2928 - ] 2929 - 2930 - [[package]] 2931 - name = "inflections" 2932 - version = "1.1.1" 2933 - source = "registry+https://github.com/rust-lang/crates.io-index" 2934 - checksum = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a" 2935 - 2936 - [[package]] 2937 - name = "inotify" 2938 - version = "0.11.0" 2939 - source = "registry+https://github.com/rust-lang/crates.io-index" 2940 - checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" 2941 - dependencies = [ 2942 - "bitflags 2.9.0", 2943 - "inotify-sys", 2944 - "libc", 2945 - ] 2946 - 2947 - [[package]] 2948 - name = "inotify-sys" 2949 - version = "0.1.5" 2950 - source = "registry+https://github.com/rust-lang/crates.io-index" 2951 - checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" 2952 - dependencies = [ 2953 - "libc", 2954 - ] 2955 - 2956 - [[package]] 2957 - name = "interpolate_name" 2958 - version = "0.2.4" 2959 - source = "registry+https://github.com/rust-lang/crates.io-index" 2960 - checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" 2961 - dependencies = [ 2962 - "proc-macro2", 2963 - "quote", 2964 - "syn 2.0.101", 2965 - ] 2966 - 2967 - [[package]] 2968 - name = "io-kit-sys" 2969 - version = "0.4.1" 2970 - source = "registry+https://github.com/rust-lang/crates.io-index" 2971 - checksum = "617ee6cf8e3f66f3b4ea67a4058564628cde41901316e19f559e14c7c72c5e7b" 2972 - dependencies = [ 2973 - "core-foundation-sys", 2974 - "mach2", 2975 - ] 2976 - 2977 - [[package]] 2978 - name = "itertools" 2979 - version = "0.12.1" 2980 - source = "registry+https://github.com/rust-lang/crates.io-index" 2981 - checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" 2982 - dependencies = [ 2983 - "either", 2984 - ] 2985 - 2986 - [[package]] 2987 - name = "itertools" 2988 - version = "0.13.0" 2989 - source = "registry+https://github.com/rust-lang/crates.io-index" 2990 - checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" 2991 - dependencies = [ 2992 - "either", 2993 - ] 2994 - 2995 - [[package]] 2996 - name = "itertools" 2997 - version = "0.14.0" 2998 - source = "registry+https://github.com/rust-lang/crates.io-index" 2999 - checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" 3000 - dependencies = [ 3001 - "either", 3002 - ] 3003 - 3004 - [[package]] 3005 - name = "itoa" 3006 - version = "1.0.15" 3007 - source = "registry+https://github.com/rust-lang/crates.io-index" 3008 - checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" 3009 - 3010 - [[package]] 3011 - name = "jni" 3012 - version = "0.21.1" 3013 - source = "registry+https://github.com/rust-lang/crates.io-index" 3014 - checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" 3015 - dependencies = [ 3016 - "cesu8", 3017 - "cfg-if", 3018 - "combine", 3019 - "jni-sys", 3020 - "log", 3021 - "thiserror 1.0.69", 3022 - "walkdir", 3023 - "windows-sys 0.45.0", 3024 - ] 3025 - 3026 - [[package]] 3027 - name = "jni-sys" 3028 - version = "0.3.0" 3029 - source = "registry+https://github.com/rust-lang/crates.io-index" 3030 - checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 3031 - 3032 - [[package]] 3033 - name = "jobserver" 3034 - version = "0.1.33" 3035 - source = "registry+https://github.com/rust-lang/crates.io-index" 3036 - checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" 3037 - dependencies = [ 3038 - "getrandom 0.3.3", 3039 - "libc", 3040 - ] 3041 - 3042 - [[package]] 3043 - name = "jpeg-decoder" 3044 - version = "0.3.1" 3045 - source = "registry+https://github.com/rust-lang/crates.io-index" 3046 - checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" 3047 - dependencies = [ 3048 - "rayon", 3049 - ] 3050 - 3051 - [[package]] 3052 - name = "js-sys" 3053 - version = "0.3.77" 3054 - source = "registry+https://github.com/rust-lang/crates.io-index" 3055 - checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" 3056 - dependencies = [ 3057 - "once_cell", 3058 - "wasm-bindgen", 3059 - ] 3060 - 3061 - [[package]] 3062 - name = "khronos-egl" 3063 - version = "6.0.0" 3064 - source = "registry+https://github.com/rust-lang/crates.io-index" 3065 - checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" 3066 - dependencies = [ 3067 - "libc", 3068 - "libloading", 3069 - "pkg-config", 3070 - ] 3071 - 3072 - [[package]] 3073 - name = "khronos_api" 3074 - version = "3.1.0" 3075 - source = "registry+https://github.com/rust-lang/crates.io-index" 3076 - checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" 3077 - 3078 - [[package]] 3079 - name = "ktx2" 3080 - version = "0.3.0" 3081 - source = "registry+https://github.com/rust-lang/crates.io-index" 3082 - checksum = "87d65e08a9ec02e409d27a0139eaa6b9756b4d81fe7cde71f6941a83730ce838" 3083 - dependencies = [ 3084 - "bitflags 1.3.2", 3085 - ] 3086 - 3087 - [[package]] 3088 - name = "lazy_static" 3089 - version = "1.5.0" 3090 - source = "registry+https://github.com/rust-lang/crates.io-index" 3091 - checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 3092 - 3093 - [[package]] 3094 - name = "lebe" 3095 - version = "0.5.2" 3096 - source = "registry+https://github.com/rust-lang/crates.io-index" 3097 - checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" 3098 - 3099 - [[package]] 3100 - name = "lewton" 3101 - version = "0.10.2" 3102 - source = "registry+https://github.com/rust-lang/crates.io-index" 3103 - checksum = "777b48df9aaab155475a83a7df3070395ea1ac6902f5cd062b8f2b028075c030" 3104 - dependencies = [ 3105 - "byteorder", 3106 - "ogg", 3107 - "tinyvec", 3108 - ] 3109 - 3110 - [[package]] 3111 - name = "libc" 3112 - version = "0.2.172" 3113 - source = "registry+https://github.com/rust-lang/crates.io-index" 3114 - checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" 3115 - 3116 - [[package]] 3117 - name = "libfuzzer-sys" 3118 - version = "0.4.9" 3119 - source = "registry+https://github.com/rust-lang/crates.io-index" 3120 - checksum = "cf78f52d400cf2d84a3a973a78a592b4adc535739e0a5597a0da6f0c357adc75" 3121 - dependencies = [ 3122 - "arbitrary", 3123 - "cc", 3124 - ] 3125 - 3126 - [[package]] 3127 - name = "libloading" 3128 - version = "0.8.6" 3129 - source = "registry+https://github.com/rust-lang/crates.io-index" 3130 - checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" 3131 - dependencies = [ 3132 - "cfg-if", 3133 - "windows-targets 0.52.6", 3134 - ] 3135 - 3136 - [[package]] 3137 - name = "libm" 3138 - version = "0.2.15" 3139 - source = "registry+https://github.com/rust-lang/crates.io-index" 3140 - checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" 3141 - 3142 - [[package]] 3143 - name = "libredox" 3144 - version = "0.1.3" 3145 - source = "registry+https://github.com/rust-lang/crates.io-index" 3146 - checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" 3147 - dependencies = [ 3148 - "bitflags 2.9.0", 3149 - "libc", 3150 - "redox_syscall 0.5.12", 3151 - ] 3152 - 3153 - [[package]] 3154 - name = "libudev-sys" 3155 - version = "0.1.4" 3156 - source = "registry+https://github.com/rust-lang/crates.io-index" 3157 - checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" 3158 - dependencies = [ 3159 - "libc", 3160 - "pkg-config", 3161 - ] 3162 - 3163 - [[package]] 3164 - name = "libz-rs-sys" 3165 - version = "0.5.0" 3166 - source = "registry+https://github.com/rust-lang/crates.io-index" 3167 - checksum = "6489ca9bd760fe9642d7644e827b0c9add07df89857b0416ee15c1cc1a3b8c5a" 3168 - dependencies = [ 3169 - "zlib-rs", 3170 - ] 3171 - 3172 - [[package]] 3173 - name = "linux-raw-sys" 3174 - version = "0.4.15" 3175 - source = "registry+https://github.com/rust-lang/crates.io-index" 3176 - checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" 3177 - 3178 - [[package]] 3179 - name = "litemap" 3180 - version = "0.8.0" 3181 - source = "registry+https://github.com/rust-lang/crates.io-index" 3182 - checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" 3183 - 3184 - [[package]] 3185 - name = "litrs" 3186 - version = "0.4.1" 3187 - source = "registry+https://github.com/rust-lang/crates.io-index" 3188 - checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" 3189 - 3190 - [[package]] 3191 - name = "lock_api" 3192 - version = "0.4.12" 3193 - source = "registry+https://github.com/rust-lang/crates.io-index" 3194 - checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" 3195 - dependencies = [ 3196 - "autocfg", 3197 - "scopeguard", 3198 - ] 3199 - 3200 - [[package]] 3201 - name = "log" 3202 - version = "0.4.27" 3203 - source = "registry+https://github.com/rust-lang/crates.io-index" 3204 - checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" 3205 - 3206 - [[package]] 3207 - name = "loop9" 3208 - version = "0.1.5" 3209 - source = "registry+https://github.com/rust-lang/crates.io-index" 3210 - checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" 3211 - dependencies = [ 3212 - "imgref", 3213 - ] 3214 - 3215 - [[package]] 3216 - name = "mach2" 3217 - version = "0.4.2" 3218 - source = "registry+https://github.com/rust-lang/crates.io-index" 3219 - checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" 3220 - dependencies = [ 3221 - "libc", 3222 - ] 3223 - 3224 - [[package]] 3225 - name = "malloc_buf" 3226 - version = "0.0.6" 3227 - source = "registry+https://github.com/rust-lang/crates.io-index" 3228 - checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 3229 - dependencies = [ 3230 - "libc", 3231 - ] 3232 - 3233 - [[package]] 3234 - name = "matchers" 3235 - version = "0.1.0" 3236 - source = "registry+https://github.com/rust-lang/crates.io-index" 3237 - checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" 3238 - dependencies = [ 3239 - "regex-automata 0.1.10", 3240 - ] 3241 - 3242 - [[package]] 3243 - name = "matrixmultiply" 3244 - version = "0.3.9" 3245 - source = "registry+https://github.com/rust-lang/crates.io-index" 3246 - checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a" 3247 - dependencies = [ 3248 - "autocfg", 3249 - "rawpointer", 3250 - ] 3251 - 3252 - [[package]] 3253 - name = "maybe-rayon" 3254 - version = "0.1.1" 3255 - source = "registry+https://github.com/rust-lang/crates.io-index" 3256 - checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" 3257 - dependencies = [ 3258 - "cfg-if", 3259 - "rayon", 3260 - ] 3261 - 3262 - [[package]] 3263 - name = "memchr" 3264 - version = "2.7.4" 3265 - source = "registry+https://github.com/rust-lang/crates.io-index" 3266 - checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" 3267 - 3268 - [[package]] 3269 - name = "memmap2" 3270 - version = "0.9.5" 3271 - source = "registry+https://github.com/rust-lang/crates.io-index" 3272 - checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" 3273 - dependencies = [ 3274 - "libc", 3275 - ] 3276 - 3277 - [[package]] 3278 - name = "mesh-tools" 3279 - version = "0.1.0" 3280 - source = "registry+https://github.com/rust-lang/crates.io-index" 3281 - checksum = "9b07c5e96a6080555d650321a81c7e3cd68b08261f63ee5db2b069a50f5ce7db" 3282 - dependencies = [ 3283 - "base64 0.13.1", 3284 - "byteorder", 3285 - "image 0.24.9", 3286 - "nalgebra", 3287 - "serde", 3288 - "serde_json", 3289 - "thiserror 1.0.69", 3290 - "uuid", 3291 - ] 3292 - 3293 - [[package]] 3294 - name = "metal" 3295 - version = "0.31.0" 3296 - source = "registry+https://github.com/rust-lang/crates.io-index" 3297 - checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" 3298 - dependencies = [ 3299 - "bitflags 2.9.0", 3300 - "block", 3301 - "core-graphics-types", 3302 - "foreign-types", 3303 - "log", 3304 - "objc", 3305 - "paste", 3306 - ] 3307 - 3308 - [[package]] 3309 - name = "minimal-lexical" 3310 - version = "0.2.1" 3311 - source = "registry+https://github.com/rust-lang/crates.io-index" 3312 - checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 3313 - 3314 - [[package]] 3315 - name = "miniz_oxide" 3316 - version = "0.8.8" 3317 - source = "registry+https://github.com/rust-lang/crates.io-index" 3318 - checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" 3319 - dependencies = [ 3320 - "adler2", 3321 - "simd-adler32", 3322 - ] 3323 - 3324 - [[package]] 3325 - name = "naga" 3326 - version = "24.0.0" 3327 - source = "registry+https://github.com/rust-lang/crates.io-index" 3328 - checksum = "e380993072e52eef724eddfcde0ed013b0c023c3f0417336ed041aa9f076994e" 3329 - dependencies = [ 3330 - "arrayvec", 3331 - "bit-set 0.8.0", 3332 - "bitflags 2.9.0", 3333 - "cfg_aliases", 3334 - "codespan-reporting", 3335 - "hexf-parse", 3336 - "indexmap", 3337 - "log", 3338 - "pp-rs", 3339 - "rustc-hash", 3340 - "spirv", 3341 - "strum", 3342 - "termcolor", 3343 - "thiserror 2.0.12", 3344 - "unicode-xid", 3345 - ] 3346 - 3347 - [[package]] 3348 - name = "naga_oil" 3349 - version = "0.17.0" 3350 - source = "registry+https://github.com/rust-lang/crates.io-index" 3351 - checksum = "0ca507a365f886f95f74420361b75442a3709c747a8a6e8b6c45b8667f45a82c" 3352 - dependencies = [ 3353 - "bit-set 0.5.3", 3354 - "codespan-reporting", 3355 - "data-encoding", 3356 - "indexmap", 3357 - "naga", 3358 - "once_cell", 3359 - "regex", 3360 - "regex-syntax 0.8.5", 3361 - "rustc-hash", 3362 - "thiserror 1.0.69", 3363 - "tracing", 3364 - "unicode-ident", 3365 - ] 3366 - 3367 - [[package]] 3368 - name = "nalgebra" 3369 - version = "0.31.4" 3370 - source = "registry+https://github.com/rust-lang/crates.io-index" 3371 - checksum = "20bd243ab3dbb395b39ee730402d2e5405e448c75133ec49cc977762c4cba3d1" 3372 - dependencies = [ 3373 - "approx", 3374 - "matrixmultiply", 3375 - "nalgebra-macros", 3376 - "num-complex", 3377 - "num-rational", 3378 - "num-traits", 3379 - "simba", 3380 - "typenum", 3381 - ] 3382 - 3383 - [[package]] 3384 - name = "nalgebra-macros" 3385 - version = "0.1.0" 3386 - source = "registry+https://github.com/rust-lang/crates.io-index" 3387 - checksum = "01fcc0b8149b4632adc89ac3b7b31a12fb6099a0317a4eb2ebff574ef7de7218" 3388 - dependencies = [ 3389 - "proc-macro2", 3390 - "quote", 3391 - "syn 1.0.109", 3392 - ] 3393 - 3394 - [[package]] 3395 - name = "ndk" 3396 - version = "0.8.0" 3397 - source = "registry+https://github.com/rust-lang/crates.io-index" 3398 - checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" 3399 - dependencies = [ 3400 - "bitflags 2.9.0", 3401 - "jni-sys", 3402 - "log", 3403 - "ndk-sys 0.5.0+25.2.9519653", 3404 - "num_enum", 3405 - "thiserror 1.0.69", 3406 - ] 3407 - 3408 - [[package]] 3409 - name = "ndk" 3410 - version = "0.9.0" 3411 - source = "registry+https://github.com/rust-lang/crates.io-index" 3412 - checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" 3413 - dependencies = [ 3414 - "bitflags 2.9.0", 3415 - "jni-sys", 3416 - "log", 3417 - "ndk-sys 0.6.0+11769913", 3418 - "num_enum", 3419 - "raw-window-handle", 3420 - "thiserror 1.0.69", 3421 - ] 3422 - 3423 - [[package]] 3424 - name = "ndk-context" 3425 - version = "0.1.1" 3426 - source = "registry+https://github.com/rust-lang/crates.io-index" 3427 - checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" 3428 - 3429 - [[package]] 3430 - name = "ndk-sys" 3431 - version = "0.5.0+25.2.9519653" 3432 - source = "registry+https://github.com/rust-lang/crates.io-index" 3433 - checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" 3434 - dependencies = [ 3435 - "jni-sys", 3436 - ] 3437 - 3438 - [[package]] 3439 - name = "ndk-sys" 3440 - version = "0.6.0+11769913" 3441 - source = "registry+https://github.com/rust-lang/crates.io-index" 3442 - checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" 3443 - dependencies = [ 3444 - "jni-sys", 3445 - ] 3446 - 3447 - [[package]] 3448 - name = "new_debug_unreachable" 3449 - version = "1.0.6" 3450 - source = "registry+https://github.com/rust-lang/crates.io-index" 3451 - checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" 3452 - 3453 - [[package]] 3454 - name = "nix" 3455 - version = "0.29.0" 3456 - source = "registry+https://github.com/rust-lang/crates.io-index" 3457 - checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" 3458 - dependencies = [ 3459 - "bitflags 2.9.0", 3460 - "cfg-if", 3461 - "cfg_aliases", 3462 - "libc", 3463 - ] 3464 - 3465 - [[package]] 3466 - name = "nohash-hasher" 3467 - version = "0.2.0" 3468 - source = "registry+https://github.com/rust-lang/crates.io-index" 3469 - checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" 3470 - 3471 - [[package]] 3472 - name = "nom" 3473 - version = "7.1.3" 3474 - source = "registry+https://github.com/rust-lang/crates.io-index" 3475 - checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 3476 - dependencies = [ 3477 - "memchr", 3478 - "minimal-lexical", 3479 - ] 3480 - 3481 - [[package]] 3482 - name = "nonmax" 3483 - version = "0.5.5" 3484 - source = "registry+https://github.com/rust-lang/crates.io-index" 3485 - checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51" 3486 - 3487 - [[package]] 3488 - name = "noop_proc_macro" 3489 - version = "0.3.0" 3490 - source = "registry+https://github.com/rust-lang/crates.io-index" 3491 - checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" 3492 - 3493 - [[package]] 3494 - name = "ntapi" 3495 - version = "0.4.1" 3496 - source = "registry+https://github.com/rust-lang/crates.io-index" 3497 - checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" 3498 - dependencies = [ 3499 - "winapi", 3500 - ] 3501 - 3502 - [[package]] 3503 - name = "nu-ansi-term" 3504 - version = "0.46.0" 3505 - source = "registry+https://github.com/rust-lang/crates.io-index" 3506 - checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" 3507 - dependencies = [ 3508 - "overload", 3509 - "winapi", 3510 - ] 3511 - 3512 - [[package]] 3513 - name = "num-bigint" 3514 - version = "0.4.6" 3515 - source = "registry+https://github.com/rust-lang/crates.io-index" 3516 - checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" 3517 - dependencies = [ 3518 - "num-integer", 3519 - "num-traits", 3520 - ] 3521 - 3522 - [[package]] 3523 - name = "num-complex" 3524 - version = "0.4.6" 3525 - source = "registry+https://github.com/rust-lang/crates.io-index" 3526 - checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" 3527 - dependencies = [ 3528 - "num-traits", 3529 - ] 3530 - 3531 - [[package]] 3532 - name = "num-derive" 3533 - version = "0.4.2" 3534 - source = "registry+https://github.com/rust-lang/crates.io-index" 3535 - checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" 3536 - dependencies = [ 3537 - "proc-macro2", 3538 - "quote", 3539 - "syn 2.0.101", 3540 - ] 3541 - 3542 - [[package]] 3543 - name = "num-integer" 3544 - version = "0.1.46" 3545 - source = "registry+https://github.com/rust-lang/crates.io-index" 3546 - checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 3547 - dependencies = [ 3548 - "num-traits", 3549 - ] 3550 - 3551 - [[package]] 3552 - name = "num-rational" 3553 - version = "0.4.2" 3554 - source = "registry+https://github.com/rust-lang/crates.io-index" 3555 - checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" 3556 - dependencies = [ 3557 - "num-bigint", 3558 - "num-integer", 3559 - "num-traits", 3560 - ] 3561 - 3562 - [[package]] 3563 - name = "num-traits" 3564 - version = "0.2.19" 3565 - source = "registry+https://github.com/rust-lang/crates.io-index" 3566 - checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 3567 - dependencies = [ 3568 - "autocfg", 3569 - "libm", 3570 - ] 3571 - 3572 - [[package]] 3573 - name = "num_enum" 3574 - version = "0.7.3" 3575 - source = "registry+https://github.com/rust-lang/crates.io-index" 3576 - checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" 3577 - dependencies = [ 3578 - "num_enum_derive", 3579 - ] 3580 - 3581 - [[package]] 3582 - name = "num_enum_derive" 3583 - version = "0.7.3" 3584 - source = "registry+https://github.com/rust-lang/crates.io-index" 3585 - checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" 3586 - dependencies = [ 3587 - "proc-macro-crate", 3588 - "proc-macro2", 3589 - "quote", 3590 - "syn 2.0.101", 3591 - ] 3592 - 3593 - [[package]] 3594 - name = "objc" 3595 - version = "0.2.7" 3596 - source = "registry+https://github.com/rust-lang/crates.io-index" 3597 - checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 3598 - dependencies = [ 3599 - "malloc_buf", 3600 - ] 3601 - 3602 - [[package]] 3603 - name = "objc-sys" 3604 - version = "0.3.5" 3605 - source = "registry+https://github.com/rust-lang/crates.io-index" 3606 - checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" 3607 - 3608 - [[package]] 3609 - name = "objc2" 3610 - version = "0.5.2" 3611 - source = "registry+https://github.com/rust-lang/crates.io-index" 3612 - checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" 3613 - dependencies = [ 3614 - "objc-sys", 3615 - "objc2-encode", 3616 - ] 3617 - 3618 - [[package]] 3619 - name = "objc2" 3620 - version = "0.6.1" 3621 - source = "registry+https://github.com/rust-lang/crates.io-index" 3622 - checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551" 3623 - dependencies = [ 3624 - "objc2-encode", 3625 - ] 3626 - 3627 - [[package]] 3628 - name = "objc2-app-kit" 3629 - version = "0.2.2" 3630 - source = "registry+https://github.com/rust-lang/crates.io-index" 3631 - checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" 3632 - dependencies = [ 3633 - "bitflags 2.9.0", 3634 - "block2", 3635 - "libc", 3636 - "objc2 0.5.2", 3637 - "objc2-core-data", 3638 - "objc2-core-image", 3639 - "objc2-foundation 0.2.2", 3640 - "objc2-quartz-core", 3641 - ] 3642 - 3643 - [[package]] 3644 - name = "objc2-app-kit" 3645 - version = "0.3.1" 3646 - source = "registry+https://github.com/rust-lang/crates.io-index" 3647 - checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" 3648 - dependencies = [ 3649 - "bitflags 2.9.0", 3650 - "objc2 0.6.1", 3651 - "objc2-core-graphics", 3652 - "objc2-foundation 0.3.1", 3653 - ] 3654 - 3655 - [[package]] 3656 - name = "objc2-cloud-kit" 3657 - version = "0.2.2" 3658 - source = "registry+https://github.com/rust-lang/crates.io-index" 3659 - checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" 3660 - dependencies = [ 3661 - "bitflags 2.9.0", 3662 - "block2", 3663 - "objc2 0.5.2", 3664 - "objc2-core-location", 3665 - "objc2-foundation 0.2.2", 3666 - ] 3667 - 3668 - [[package]] 3669 - name = "objc2-contacts" 3670 - version = "0.2.2" 3671 - source = "registry+https://github.com/rust-lang/crates.io-index" 3672 - checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" 3673 - dependencies = [ 3674 - "block2", 3675 - "objc2 0.5.2", 3676 - "objc2-foundation 0.2.2", 3677 - ] 3678 - 3679 - [[package]] 3680 - name = "objc2-core-data" 3681 - version = "0.2.2" 3682 - source = "registry+https://github.com/rust-lang/crates.io-index" 3683 - checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" 3684 - dependencies = [ 3685 - "bitflags 2.9.0", 3686 - "block2", 3687 - "objc2 0.5.2", 3688 - "objc2-foundation 0.2.2", 3689 - ] 3690 - 3691 - [[package]] 3692 - name = "objc2-core-foundation" 3693 - version = "0.3.1" 3694 - source = "registry+https://github.com/rust-lang/crates.io-index" 3695 - checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" 3696 - dependencies = [ 3697 - "bitflags 2.9.0", 3698 - "dispatch2", 3699 - "objc2 0.6.1", 3700 - ] 3701 - 3702 - [[package]] 3703 - name = "objc2-core-graphics" 3704 - version = "0.3.1" 3705 - source = "registry+https://github.com/rust-lang/crates.io-index" 3706 - checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4" 3707 - dependencies = [ 3708 - "bitflags 2.9.0", 3709 - "dispatch2", 3710 - "objc2 0.6.1", 3711 - "objc2-core-foundation", 3712 - "objc2-io-surface", 3713 - ] 3714 - 3715 - [[package]] 3716 - name = "objc2-core-image" 3717 - version = "0.2.2" 3718 - source = "registry+https://github.com/rust-lang/crates.io-index" 3719 - checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" 3720 - dependencies = [ 3721 - "block2", 3722 - "objc2 0.5.2", 3723 - "objc2-foundation 0.2.2", 3724 - "objc2-metal", 3725 - ] 3726 - 3727 - [[package]] 3728 - name = "objc2-core-location" 3729 - version = "0.2.2" 3730 - source = "registry+https://github.com/rust-lang/crates.io-index" 3731 - checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" 3732 - dependencies = [ 3733 - "block2", 3734 - "objc2 0.5.2", 3735 - "objc2-contacts", 3736 - "objc2-foundation 0.2.2", 3737 - ] 3738 - 3739 - [[package]] 3740 - name = "objc2-encode" 3741 - version = "4.1.0" 3742 - source = "registry+https://github.com/rust-lang/crates.io-index" 3743 - checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" 3744 - 3745 - [[package]] 3746 - name = "objc2-foundation" 3747 - version = "0.2.2" 3748 - source = "registry+https://github.com/rust-lang/crates.io-index" 3749 - checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" 3750 - dependencies = [ 3751 - "bitflags 2.9.0", 3752 - "block2", 3753 - "dispatch", 3754 - "libc", 3755 - "objc2 0.5.2", 3756 - ] 3757 - 3758 - [[package]] 3759 - name = "objc2-foundation" 3760 - version = "0.3.1" 3761 - source = "registry+https://github.com/rust-lang/crates.io-index" 3762 - checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" 3763 - dependencies = [ 3764 - "bitflags 2.9.0", 3765 - "objc2 0.6.1", 3766 - "objc2-core-foundation", 3767 - ] 3768 - 3769 - [[package]] 3770 - name = "objc2-io-surface" 3771 - version = "0.3.1" 3772 - source = "registry+https://github.com/rust-lang/crates.io-index" 3773 - checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c" 3774 - dependencies = [ 3775 - "bitflags 2.9.0", 3776 - "objc2 0.6.1", 3777 - "objc2-core-foundation", 3778 - ] 3779 - 3780 - [[package]] 3781 - name = "objc2-link-presentation" 3782 - version = "0.2.2" 3783 - source = "registry+https://github.com/rust-lang/crates.io-index" 3784 - checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" 3785 - dependencies = [ 3786 - "block2", 3787 - "objc2 0.5.2", 3788 - "objc2-app-kit 0.2.2", 3789 - "objc2-foundation 0.2.2", 3790 - ] 3791 - 3792 - [[package]] 3793 - name = "objc2-metal" 3794 - version = "0.2.2" 3795 - source = "registry+https://github.com/rust-lang/crates.io-index" 3796 - checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" 3797 - dependencies = [ 3798 - "bitflags 2.9.0", 3799 - "block2", 3800 - "objc2 0.5.2", 3801 - "objc2-foundation 0.2.2", 3802 - ] 3803 - 3804 - [[package]] 3805 - name = "objc2-quartz-core" 3806 - version = "0.2.2" 3807 - source = "registry+https://github.com/rust-lang/crates.io-index" 3808 - checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" 3809 - dependencies = [ 3810 - "bitflags 2.9.0", 3811 - "block2", 3812 - "objc2 0.5.2", 3813 - "objc2-foundation 0.2.2", 3814 - "objc2-metal", 3815 - ] 3816 - 3817 - [[package]] 3818 - name = "objc2-symbols" 3819 - version = "0.2.2" 3820 - source = "registry+https://github.com/rust-lang/crates.io-index" 3821 - checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" 3822 - dependencies = [ 3823 - "objc2 0.5.2", 3824 - "objc2-foundation 0.2.2", 3825 - ] 3826 - 3827 - [[package]] 3828 - name = "objc2-ui-kit" 3829 - version = "0.2.2" 3830 - source = "registry+https://github.com/rust-lang/crates.io-index" 3831 - checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" 3832 - dependencies = [ 3833 - "bitflags 2.9.0", 3834 - "block2", 3835 - "objc2 0.5.2", 3836 - "objc2-cloud-kit", 3837 - "objc2-core-data", 3838 - "objc2-core-image", 3839 - "objc2-core-location", 3840 - "objc2-foundation 0.2.2", 3841 - "objc2-link-presentation", 3842 - "objc2-quartz-core", 3843 - "objc2-symbols", 3844 - "objc2-uniform-type-identifiers", 3845 - "objc2-user-notifications", 3846 - ] 3847 - 3848 - [[package]] 3849 - name = "objc2-uniform-type-identifiers" 3850 - version = "0.2.2" 3851 - source = "registry+https://github.com/rust-lang/crates.io-index" 3852 - checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" 3853 - dependencies = [ 3854 - "block2", 3855 - "objc2 0.5.2", 3856 - "objc2-foundation 0.2.2", 3857 - ] 3858 - 3859 - [[package]] 3860 - name = "objc2-user-notifications" 3861 - version = "0.2.2" 3862 - source = "registry+https://github.com/rust-lang/crates.io-index" 3863 - checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" 3864 - dependencies = [ 3865 - "bitflags 2.9.0", 3866 - "block2", 3867 - "objc2 0.5.2", 3868 - "objc2-core-location", 3869 - "objc2-foundation 0.2.2", 3870 - ] 3871 - 3872 - [[package]] 3873 - name = "oboe" 3874 - version = "0.6.1" 3875 - source = "registry+https://github.com/rust-lang/crates.io-index" 3876 - checksum = "e8b61bebd49e5d43f5f8cc7ee2891c16e0f41ec7954d36bcb6c14c5e0de867fb" 3877 - dependencies = [ 3878 - "jni", 3879 - "ndk 0.8.0", 3880 - "ndk-context", 3881 - "num-derive", 3882 - "num-traits", 3883 - "oboe-sys", 3884 - ] 3885 - 3886 - [[package]] 3887 - name = "oboe-sys" 3888 - version = "0.6.1" 3889 - source = "registry+https://github.com/rust-lang/crates.io-index" 3890 - checksum = "6c8bb09a4a2b1d668170cfe0a7d5bc103f8999fb316c98099b6a9939c9f2e79d" 3891 - dependencies = [ 3892 - "cc", 3893 - ] 3894 - 3895 - [[package]] 3896 - name = "offset-allocator" 3897 - version = "0.2.0" 3898 - source = "registry+https://github.com/rust-lang/crates.io-index" 3899 - checksum = "e234d535da3521eb95106f40f0b73483d80bfb3aacf27c40d7e2b72f1a3e00a2" 3900 - dependencies = [ 3901 - "log", 3902 - "nonmax", 3903 - ] 3904 - 3905 - [[package]] 3906 - name = "ogg" 3907 - version = "0.8.0" 3908 - source = "registry+https://github.com/rust-lang/crates.io-index" 3909 - checksum = "6951b4e8bf21c8193da321bcce9c9dd2e13c858fe078bf9054a288b419ae5d6e" 3910 - dependencies = [ 3911 - "byteorder", 3912 - ] 3913 - 3914 - [[package]] 3915 - name = "once_cell" 3916 - version = "1.21.3" 3917 - source = "registry+https://github.com/rust-lang/crates.io-index" 3918 - checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" 3919 - 3920 - [[package]] 3921 - name = "orbclient" 3922 - version = "0.3.48" 3923 - source = "registry+https://github.com/rust-lang/crates.io-index" 3924 - checksum = "ba0b26cec2e24f08ed8bb31519a9333140a6599b867dac464bb150bdb796fd43" 3925 - dependencies = [ 3926 - "libredox", 3927 - ] 3928 - 3929 - [[package]] 3930 - name = "ordered-float" 3931 - version = "4.6.0" 3932 - source = "registry+https://github.com/rust-lang/crates.io-index" 3933 - checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" 3934 - dependencies = [ 3935 - "num-traits", 3936 - ] 3937 - 3938 - [[package]] 3939 - name = "overload" 3940 - version = "0.1.1" 3941 - source = "registry+https://github.com/rust-lang/crates.io-index" 3942 - checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" 3943 - 3944 - [[package]] 3945 - name = "owned_ttf_parser" 3946 - version = "0.25.0" 3947 - source = "registry+https://github.com/rust-lang/crates.io-index" 3948 - checksum = "22ec719bbf3b2a81c109a4e20b1f129b5566b7dce654bc3872f6a05abf82b2c4" 3949 - dependencies = [ 3950 - "ttf-parser 0.25.1", 3951 - ] 3952 - 3953 - [[package]] 3954 - name = "owo-colors" 3955 - version = "4.2.0" 3956 - source = "registry+https://github.com/rust-lang/crates.io-index" 3957 - checksum = "1036865bb9422d3300cf723f657c2851d0e9ab12567854b1f4eba3d77decf564" 3958 - 3959 - [[package]] 3960 - name = "parking" 3961 - version = "2.2.1" 3962 - source = "registry+https://github.com/rust-lang/crates.io-index" 3963 - checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" 3964 - 3965 - [[package]] 3966 - name = "parking_lot" 3967 - version = "0.12.3" 3968 - source = "registry+https://github.com/rust-lang/crates.io-index" 3969 - checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" 3970 - dependencies = [ 3971 - "lock_api", 3972 - "parking_lot_core", 3973 - ] 3974 - 3975 - [[package]] 3976 - name = "parking_lot_core" 3977 - version = "0.9.10" 3978 - source = "registry+https://github.com/rust-lang/crates.io-index" 3979 - checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" 3980 - dependencies = [ 3981 - "cfg-if", 3982 - "libc", 3983 - "redox_syscall 0.5.12", 3984 - "smallvec", 3985 - "windows-targets 0.52.6", 3986 - ] 3987 - 3988 - [[package]] 3989 - name = "paste" 3990 - version = "1.0.15" 3991 - source = "registry+https://github.com/rust-lang/crates.io-index" 3992 - checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 3993 - 3994 - [[package]] 3995 - name = "percent-encoding" 3996 - version = "2.3.1" 3997 - source = "registry+https://github.com/rust-lang/crates.io-index" 3998 - checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 3999 - 4000 - [[package]] 4001 - name = "petgraph" 4002 - version = "0.7.1" 4003 - source = "registry+https://github.com/rust-lang/crates.io-index" 4004 - checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" 4005 - dependencies = [ 4006 - "fixedbitset", 4007 - "indexmap", 4008 - "serde", 4009 - "serde_derive", 4010 - ] 4011 - 4012 - [[package]] 4013 - name = "pin-project" 4014 - version = "1.1.10" 4015 - source = "registry+https://github.com/rust-lang/crates.io-index" 4016 - checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" 4017 - dependencies = [ 4018 - "pin-project-internal", 4019 - ] 4020 - 4021 - [[package]] 4022 - name = "pin-project-internal" 4023 - version = "1.1.10" 4024 - source = "registry+https://github.com/rust-lang/crates.io-index" 4025 - checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" 4026 - dependencies = [ 4027 - "proc-macro2", 4028 - "quote", 4029 - "syn 2.0.101", 4030 - ] 4031 - 4032 - [[package]] 4033 - name = "pin-project-lite" 4034 - version = "0.2.16" 4035 - source = "registry+https://github.com/rust-lang/crates.io-index" 4036 - checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 4037 - 4038 - [[package]] 4039 - name = "piper" 4040 - version = "0.2.4" 4041 - source = "registry+https://github.com/rust-lang/crates.io-index" 4042 - checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" 4043 - dependencies = [ 4044 - "atomic-waker", 4045 - "fastrand", 4046 - "futures-io", 4047 - ] 4048 - 4049 - [[package]] 4050 - name = "pkg-config" 4051 - version = "0.3.32" 4052 - source = "registry+https://github.com/rust-lang/crates.io-index" 4053 - checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" 4054 - 4055 - [[package]] 4056 - name = "png" 4057 - version = "0.17.16" 4058 - source = "registry+https://github.com/rust-lang/crates.io-index" 4059 - checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" 4060 - dependencies = [ 4061 - "bitflags 1.3.2", 4062 - "crc32fast", 4063 - "fdeflate", 4064 - "flate2", 4065 - "miniz_oxide", 4066 - ] 4067 - 4068 - [[package]] 4069 - name = "polling" 4070 - version = "3.7.4" 4071 - source = "registry+https://github.com/rust-lang/crates.io-index" 4072 - checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" 4073 - dependencies = [ 4074 - "cfg-if", 4075 - "concurrent-queue", 4076 - "hermit-abi", 4077 - "pin-project-lite", 4078 - "rustix", 4079 - "tracing", 4080 - "windows-sys 0.59.0", 4081 - ] 4082 - 4083 - [[package]] 4084 - name = "portable-atomic" 4085 - version = "1.11.0" 4086 - source = "registry+https://github.com/rust-lang/crates.io-index" 4087 - checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" 4088 - 4089 - [[package]] 4090 - name = "portable-atomic-util" 4091 - version = "0.2.4" 4092 - source = "registry+https://github.com/rust-lang/crates.io-index" 4093 - checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" 4094 - dependencies = [ 4095 - "portable-atomic", 4096 - ] 4097 - 4098 - [[package]] 4099 - name = "potential_utf" 4100 - version = "0.1.2" 4101 - source = "registry+https://github.com/rust-lang/crates.io-index" 4102 - checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" 4103 - dependencies = [ 4104 - "zerovec", 4105 - ] 4106 - 4107 - [[package]] 4108 - name = "pp-rs" 4109 - version = "0.2.1" 4110 - source = "registry+https://github.com/rust-lang/crates.io-index" 4111 - checksum = "bb458bb7f6e250e6eb79d5026badc10a3ebb8f9a15d1fff0f13d17c71f4d6dee" 4112 - dependencies = [ 4113 - "unicode-xid", 4114 - ] 4115 - 4116 - [[package]] 4117 - name = "ppv-lite86" 4118 - version = "0.2.21" 4119 - source = "registry+https://github.com/rust-lang/crates.io-index" 4120 - checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 4121 - dependencies = [ 4122 - "zerocopy", 4123 - ] 4124 - 4125 - [[package]] 4126 - name = "presser" 4127 - version = "0.3.1" 4128 - source = "registry+https://github.com/rust-lang/crates.io-index" 4129 - checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" 4130 - 4131 - [[package]] 4132 - name = "prettyplease" 4133 - version = "0.2.32" 4134 - source = "registry+https://github.com/rust-lang/crates.io-index" 4135 - checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6" 4136 - dependencies = [ 4137 - "proc-macro2", 4138 - "syn 2.0.101", 4139 - ] 4140 - 4141 - [[package]] 4142 - name = "proc-macro-crate" 4143 - version = "3.3.0" 4144 - source = "registry+https://github.com/rust-lang/crates.io-index" 4145 - checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" 4146 - dependencies = [ 4147 - "toml_edit", 4148 - ] 4149 - 4150 - [[package]] 4151 - name = "proc-macro2" 4152 - version = "1.0.95" 4153 - source = "registry+https://github.com/rust-lang/crates.io-index" 4154 - checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" 4155 - dependencies = [ 4156 - "unicode-ident", 4157 - ] 4158 - 4159 - [[package]] 4160 - name = "profiling" 4161 - version = "1.0.16" 4162 - source = "registry+https://github.com/rust-lang/crates.io-index" 4163 - checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" 4164 - dependencies = [ 4165 - "profiling-procmacros", 4166 - ] 4167 - 4168 - [[package]] 4169 - name = "profiling-procmacros" 4170 - version = "1.0.16" 4171 - source = "registry+https://github.com/rust-lang/crates.io-index" 4172 - checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30" 4173 - dependencies = [ 4174 - "quote", 4175 - "syn 2.0.101", 4176 - ] 4177 - 4178 - [[package]] 4179 - name = "qoi" 4180 - version = "0.4.1" 4181 - source = "registry+https://github.com/rust-lang/crates.io-index" 4182 - checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" 4183 - dependencies = [ 4184 - "bytemuck", 4185 - ] 4186 - 4187 - [[package]] 4188 - name = "quick-error" 4189 - version = "2.0.1" 4190 - source = "registry+https://github.com/rust-lang/crates.io-index" 4191 - checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" 4192 - 4193 - [[package]] 4194 - name = "quick-xml" 4195 - version = "0.37.5" 4196 - source = "registry+https://github.com/rust-lang/crates.io-index" 4197 - checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" 4198 - dependencies = [ 4199 - "memchr", 4200 - ] 4201 - 4202 - [[package]] 4203 - name = "quote" 4204 - version = "1.0.40" 4205 - source = "registry+https://github.com/rust-lang/crates.io-index" 4206 - checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" 4207 - dependencies = [ 4208 - "proc-macro2", 4209 - ] 4210 - 4211 - [[package]] 4212 - name = "r-efi" 4213 - version = "5.2.0" 4214 - source = "registry+https://github.com/rust-lang/crates.io-index" 4215 - checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" 4216 - 4217 - [[package]] 4218 - name = "radsort" 4219 - version = "0.1.1" 4220 - source = "registry+https://github.com/rust-lang/crates.io-index" 4221 - checksum = "019b4b213425016d7d84a153c4c73afb0946fbb4840e4eece7ba8848b9d6da22" 4222 - 4223 - [[package]] 4224 - name = "rand" 4225 - version = "0.8.5" 4226 - source = "registry+https://github.com/rust-lang/crates.io-index" 4227 - checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 4228 - dependencies = [ 4229 - "libc", 4230 - "rand_chacha", 4231 - "rand_core", 4232 - ] 4233 - 4234 - [[package]] 4235 - name = "rand_chacha" 4236 - version = "0.3.1" 4237 - source = "registry+https://github.com/rust-lang/crates.io-index" 4238 - checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 4239 - dependencies = [ 4240 - "ppv-lite86", 4241 - "rand_core", 4242 - ] 4243 - 4244 - [[package]] 4245 - name = "rand_core" 4246 - version = "0.6.4" 4247 - source = "registry+https://github.com/rust-lang/crates.io-index" 4248 - checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 4249 - dependencies = [ 4250 - "getrandom 0.2.16", 4251 - ] 4252 - 4253 - [[package]] 4254 - name = "rand_distr" 4255 - version = "0.4.3" 4256 - source = "registry+https://github.com/rust-lang/crates.io-index" 4257 - checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" 4258 - dependencies = [ 4259 - "num-traits", 4260 - "rand", 4261 - ] 4262 - 4263 - [[package]] 4264 - name = "range-alloc" 4265 - version = "0.1.4" 4266 - source = "registry+https://github.com/rust-lang/crates.io-index" 4267 - checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" 4268 - 4269 - [[package]] 4270 - name = "rangemap" 4271 - version = "1.5.1" 4272 - source = "registry+https://github.com/rust-lang/crates.io-index" 4273 - checksum = "f60fcc7d6849342eff22c4350c8b9a989ee8ceabc4b481253e8946b9fe83d684" 4274 - 4275 - [[package]] 4276 - name = "rav1e" 4277 - version = "0.7.1" 4278 - source = "registry+https://github.com/rust-lang/crates.io-index" 4279 - checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9" 4280 - dependencies = [ 4281 - "arbitrary", 4282 - "arg_enum_proc_macro", 4283 - "arrayvec", 4284 - "av1-grain", 4285 - "bitstream-io", 4286 - "built", 4287 - "cfg-if", 4288 - "interpolate_name", 4289 - "itertools 0.12.1", 4290 - "libc", 4291 - "libfuzzer-sys", 4292 - "log", 4293 - "maybe-rayon", 4294 - "new_debug_unreachable", 4295 - "noop_proc_macro", 4296 - "num-derive", 4297 - "num-traits", 4298 - "once_cell", 4299 - "paste", 4300 - "profiling", 4301 - "rand", 4302 - "rand_chacha", 4303 - "simd_helpers", 4304 - "system-deps", 4305 - "thiserror 1.0.69", 4306 - "v_frame", 4307 - "wasm-bindgen", 4308 - ] 4309 - 4310 - [[package]] 4311 - name = "ravif" 4312 - version = "0.11.12" 4313 - source = "registry+https://github.com/rust-lang/crates.io-index" 4314 - checksum = "d6a5f31fcf7500f9401fea858ea4ab5525c99f2322cfcee732c0e6c74208c0c6" 4315 - dependencies = [ 4316 - "avif-serialize", 4317 - "imgref", 4318 - "loop9", 4319 - "quick-error", 4320 - "rav1e", 4321 - "rayon", 4322 - "rgb", 4323 - ] 4324 - 4325 - [[package]] 4326 - name = "raw-window-handle" 4327 - version = "0.6.2" 4328 - source = "registry+https://github.com/rust-lang/crates.io-index" 4329 - checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" 4330 - 4331 - [[package]] 4332 - name = "rawpointer" 4333 - version = "0.2.1" 4334 - source = "registry+https://github.com/rust-lang/crates.io-index" 4335 - checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" 4336 - 4337 - [[package]] 4338 - name = "rayon" 4339 - version = "1.10.0" 4340 - source = "registry+https://github.com/rust-lang/crates.io-index" 4341 - checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" 4342 - dependencies = [ 4343 - "either", 4344 - "rayon-core", 4345 - ] 4346 - 4347 - [[package]] 4348 - name = "rayon-core" 4349 - version = "1.12.1" 4350 - source = "registry+https://github.com/rust-lang/crates.io-index" 4351 - checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" 4352 - dependencies = [ 4353 - "crossbeam-deque", 4354 - "crossbeam-utils", 4355 - ] 4356 - 4357 - [[package]] 4358 - name = "read-fonts" 4359 - version = "0.29.0" 4360 - source = "registry+https://github.com/rust-lang/crates.io-index" 4361 - checksum = "5ce8e2ca6b24313587a03ca61bb74c384e2a815bd90cf2866cfc9f5fb7a11fa0" 4362 - dependencies = [ 4363 - "bytemuck", 4364 - "font-types", 4365 - ] 4366 - 4367 - [[package]] 4368 - name = "rectangle-pack" 4369 - version = "0.4.2" 4370 - source = "registry+https://github.com/rust-lang/crates.io-index" 4371 - checksum = "a0d463f2884048e7153449a55166f91028d5b0ea53c79377099ce4e8cf0cf9bb" 4372 - 4373 - [[package]] 4374 - name = "redox_syscall" 4375 - version = "0.4.1" 4376 - source = "registry+https://github.com/rust-lang/crates.io-index" 4377 - checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" 4378 - dependencies = [ 4379 - "bitflags 1.3.2", 4380 - ] 4381 - 4382 - [[package]] 4383 - name = "redox_syscall" 4384 - version = "0.5.12" 4385 - source = "registry+https://github.com/rust-lang/crates.io-index" 4386 - checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" 4387 - dependencies = [ 4388 - "bitflags 2.9.0", 4389 - ] 4390 - 4391 - [[package]] 4392 - name = "regex" 4393 - version = "1.11.1" 4394 - source = "registry+https://github.com/rust-lang/crates.io-index" 4395 - checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" 4396 - dependencies = [ 4397 - "aho-corasick", 4398 - "memchr", 4399 - "regex-automata 0.4.9", 4400 - "regex-syntax 0.8.5", 4401 - ] 4402 - 4403 - [[package]] 4404 - name = "regex-automata" 4405 - version = "0.1.10" 4406 - source = "registry+https://github.com/rust-lang/crates.io-index" 4407 - checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" 4408 - dependencies = [ 4409 - "regex-syntax 0.6.29", 4410 - ] 4411 - 4412 - [[package]] 4413 - name = "regex-automata" 4414 - version = "0.4.9" 4415 - source = "registry+https://github.com/rust-lang/crates.io-index" 4416 - checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" 4417 - dependencies = [ 4418 - "aho-corasick", 4419 - "memchr", 4420 - "regex-syntax 0.8.5", 4421 - ] 4422 - 4423 - [[package]] 4424 - name = "regex-syntax" 4425 - version = "0.6.29" 4426 - source = "registry+https://github.com/rust-lang/crates.io-index" 4427 - checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" 4428 - 4429 - [[package]] 4430 - name = "regex-syntax" 4431 - version = "0.8.5" 4432 - source = "registry+https://github.com/rust-lang/crates.io-index" 4433 - checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" 4434 - 4435 - [[package]] 4436 - name = "renderdoc-sys" 4437 - version = "1.1.0" 4438 - source = "registry+https://github.com/rust-lang/crates.io-index" 4439 - checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" 4440 - 4441 - [[package]] 4442 - name = "rgb" 4443 - version = "0.8.50" 4444 - source = "registry+https://github.com/rust-lang/crates.io-index" 4445 - checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" 4446 - 4447 - [[package]] 4448 - name = "rodio" 4449 - version = "0.20.1" 4450 - source = "registry+https://github.com/rust-lang/crates.io-index" 4451 - checksum = "e7ceb6607dd738c99bc8cb28eff249b7cd5c8ec88b9db96c0608c1480d140fb1" 4452 - dependencies = [ 4453 - "cpal", 4454 - "lewton", 4455 - ] 4456 - 4457 - [[package]] 4458 - name = "ron" 4459 - version = "0.8.1" 4460 - source = "registry+https://github.com/rust-lang/crates.io-index" 4461 - checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" 4462 - dependencies = [ 4463 - "base64 0.21.7", 4464 - "bitflags 2.9.0", 4465 - "serde", 4466 - "serde_derive", 4467 - ] 4468 - 4469 - [[package]] 4470 - name = "roxmltree" 4471 - version = "0.20.0" 4472 - source = "registry+https://github.com/rust-lang/crates.io-index" 4473 - checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" 4474 - 4475 - [[package]] 4476 - name = "rustc-hash" 4477 - version = "1.1.0" 4478 - source = "registry+https://github.com/rust-lang/crates.io-index" 4479 - checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 4480 - 4481 - [[package]] 4482 - name = "rustix" 4483 - version = "0.38.44" 4484 - source = "registry+https://github.com/rust-lang/crates.io-index" 4485 - checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" 4486 - dependencies = [ 4487 - "bitflags 2.9.0", 4488 - "errno", 4489 - "libc", 4490 - "linux-raw-sys", 4491 - "windows-sys 0.59.0", 4492 - ] 4493 - 4494 - [[package]] 4495 - name = "rustversion" 4496 - version = "1.0.20" 4497 - source = "registry+https://github.com/rust-lang/crates.io-index" 4498 - checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" 4499 - 4500 - [[package]] 4501 - name = "rustybuzz" 4502 - version = "0.14.1" 4503 - source = "registry+https://github.com/rust-lang/crates.io-index" 4504 - checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c" 4505 - dependencies = [ 4506 - "bitflags 2.9.0", 4507 - "bytemuck", 4508 - "libm", 4509 - "smallvec", 4510 - "ttf-parser 0.21.1", 4511 - "unicode-bidi-mirroring", 4512 - "unicode-ccc", 4513 - "unicode-properties", 4514 - "unicode-script", 4515 - ] 4516 - 4517 - [[package]] 4518 - name = "ruzstd" 4519 - version = "0.8.1" 4520 - source = "registry+https://github.com/rust-lang/crates.io-index" 4521 - checksum = "3640bec8aad418d7d03c72ea2de10d5c646a598f9883c7babc160d91e3c1b26c" 4522 - dependencies = [ 4523 - "twox-hash", 4524 - ] 4525 - 4526 - [[package]] 4527 - name = "ryu" 4528 - version = "1.0.20" 4529 - source = "registry+https://github.com/rust-lang/crates.io-index" 4530 - checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" 4531 - 4532 - [[package]] 4533 - name = "safe_arch" 4534 - version = "0.7.4" 4535 - source = "registry+https://github.com/rust-lang/crates.io-index" 4536 - checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" 4537 - dependencies = [ 4538 - "bytemuck", 4539 - ] 4540 - 4541 - [[package]] 4542 - name = "same-file" 4543 - version = "1.0.6" 4544 - source = "registry+https://github.com/rust-lang/crates.io-index" 4545 - checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 4546 - dependencies = [ 4547 - "winapi-util", 4548 - ] 4549 - 4550 - [[package]] 4551 - name = "scoped-tls" 4552 - version = "1.0.1" 4553 - source = "registry+https://github.com/rust-lang/crates.io-index" 4554 - checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 4555 - 4556 - [[package]] 4557 - name = "scopeguard" 4558 - version = "1.2.0" 4559 - source = "registry+https://github.com/rust-lang/crates.io-index" 4560 - checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 4561 - 4562 - [[package]] 4563 - name = "sctk-adwaita" 4564 - version = "0.10.1" 4565 - source = "registry+https://github.com/rust-lang/crates.io-index" 4566 - checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" 4567 - dependencies = [ 4568 - "ab_glyph", 4569 - "log", 4570 - "memmap2", 4571 - "smithay-client-toolkit", 4572 - "tiny-skia", 4573 - ] 4574 - 4575 - [[package]] 4576 - name = "self_cell" 4577 - version = "1.2.0" 4578 - source = "registry+https://github.com/rust-lang/crates.io-index" 4579 - checksum = "0f7d95a54511e0c7be3f51e8867aa8cf35148d7b9445d44de2f943e2b206e749" 4580 - 4581 - [[package]] 4582 - name = "send_wrapper" 4583 - version = "0.6.0" 4584 - source = "registry+https://github.com/rust-lang/crates.io-index" 4585 - checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" 4586 - 4587 - [[package]] 4588 - name = "serde" 4589 - version = "1.0.219" 4590 - source = "registry+https://github.com/rust-lang/crates.io-index" 4591 - checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" 4592 - dependencies = [ 4593 - "serde_derive", 4594 - ] 4595 - 4596 - [[package]] 4597 - name = "serde_derive" 4598 - version = "1.0.219" 4599 - source = "registry+https://github.com/rust-lang/crates.io-index" 4600 - checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" 4601 - dependencies = [ 4602 - "proc-macro2", 4603 - "quote", 4604 - "syn 2.0.101", 4605 - ] 4606 - 4607 - [[package]] 4608 - name = "serde_json" 4609 - version = "1.0.140" 4610 - source = "registry+https://github.com/rust-lang/crates.io-index" 4611 - checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" 4612 - dependencies = [ 4613 - "itoa", 4614 - "memchr", 4615 - "ryu", 4616 - "serde", 4617 - ] 4618 - 4619 - [[package]] 4620 - name = "serde_spanned" 4621 - version = "0.6.8" 4622 - source = "registry+https://github.com/rust-lang/crates.io-index" 4623 - checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" 4624 - dependencies = [ 4625 - "serde", 4626 - ] 4627 - 4628 - [[package]] 4629 - name = "sharded-slab" 4630 - version = "0.1.7" 4631 - source = "registry+https://github.com/rust-lang/crates.io-index" 4632 - checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 4633 - dependencies = [ 4634 - "lazy_static", 4635 - ] 4636 - 4637 - [[package]] 4638 - name = "shlex" 4639 - version = "1.3.0" 4640 - source = "registry+https://github.com/rust-lang/crates.io-index" 4641 - checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 4642 - 4643 - [[package]] 4644 - name = "simba" 4645 - version = "0.7.3" 4646 - source = "registry+https://github.com/rust-lang/crates.io-index" 4647 - checksum = "2f3fd720c48c53cace224ae62bef1bbff363a70c68c4802a78b5cc6159618176" 4648 - dependencies = [ 4649 - "approx", 4650 - "num-complex", 4651 - "num-traits", 4652 - "paste", 4653 - "wide", 4654 - ] 4655 - 4656 - [[package]] 4657 - name = "simd-adler32" 4658 - version = "0.3.7" 4659 - source = "registry+https://github.com/rust-lang/crates.io-index" 4660 - checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" 4661 - 4662 - [[package]] 4663 - name = "simd_helpers" 4664 - version = "0.1.0" 4665 - source = "registry+https://github.com/rust-lang/crates.io-index" 4666 - checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" 4667 - dependencies = [ 4668 - "quote", 4669 - ] 4670 - 4671 - [[package]] 4672 - name = "skrifa" 4673 - version = "0.31.0" 4674 - source = "registry+https://github.com/rust-lang/crates.io-index" 4675 - checksum = "bbe6666ab11018ab91ff7b03f1a3b9fdbecfb610848436fefa5ce50343d3d913" 4676 - dependencies = [ 4677 - "bytemuck", 4678 - "read-fonts", 4679 - ] 4680 - 4681 - [[package]] 4682 - name = "slab" 4683 - version = "0.4.9" 4684 - source = "registry+https://github.com/rust-lang/crates.io-index" 4685 - checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 4686 - dependencies = [ 4687 - "autocfg", 4688 - ] 4689 - 4690 - [[package]] 4691 - name = "slotmap" 4692 - version = "1.0.7" 4693 - source = "registry+https://github.com/rust-lang/crates.io-index" 4694 - checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" 4695 - dependencies = [ 4696 - "version_check", 4697 - ] 4698 - 4699 - [[package]] 4700 - name = "smallvec" 4701 - version = "1.15.0" 4702 - source = "registry+https://github.com/rust-lang/crates.io-index" 4703 - checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" 4704 - 4705 - [[package]] 4706 - name = "smithay-client-toolkit" 4707 - version = "0.19.2" 4708 - source = "registry+https://github.com/rust-lang/crates.io-index" 4709 - checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" 4710 - dependencies = [ 4711 - "bitflags 2.9.0", 4712 - "calloop", 4713 - "calloop-wayland-source", 4714 - "cursor-icon", 4715 - "libc", 4716 - "log", 4717 - "memmap2", 4718 - "rustix", 4719 - "thiserror 1.0.69", 4720 - "wayland-backend", 4721 - "wayland-client", 4722 - "wayland-csd-frame", 4723 - "wayland-cursor", 4724 - "wayland-protocols", 4725 - "wayland-protocols-wlr", 4726 - "wayland-scanner", 4727 - "xkeysym", 4728 - ] 4729 - 4730 - [[package]] 4731 - name = "smol_str" 4732 - version = "0.2.2" 4733 - source = "registry+https://github.com/rust-lang/crates.io-index" 4734 - checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" 4735 - dependencies = [ 4736 - "serde", 4737 - ] 4738 - 4739 - [[package]] 4740 - name = "spin" 4741 - version = "0.9.8" 4742 - source = "registry+https://github.com/rust-lang/crates.io-index" 4743 - checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 4744 - dependencies = [ 4745 - "portable-atomic", 4746 - ] 4747 - 4748 - [[package]] 4749 - name = "spirv" 4750 - version = "0.3.0+sdk-1.3.268.0" 4751 - source = "registry+https://github.com/rust-lang/crates.io-index" 4752 - checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" 4753 - dependencies = [ 4754 - "bitflags 2.9.0", 4755 - ] 4756 - 4757 - [[package]] 4758 - name = "stable_deref_trait" 4759 - version = "1.2.0" 4760 - source = "registry+https://github.com/rust-lang/crates.io-index" 4761 - checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 4762 - 4763 - [[package]] 4764 - name = "stackfuture" 4765 - version = "0.3.0" 4766 - source = "registry+https://github.com/rust-lang/crates.io-index" 4767 - checksum = "6eae92052b72ef70dafa16eddbabffc77e5ca3574be2f7bc1127b36f0a7ad7f2" 4768 - 4769 - [[package]] 4770 - name = "static_assertions" 4771 - version = "1.1.0" 4772 - source = "registry+https://github.com/rust-lang/crates.io-index" 4773 - checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 4774 - 4775 - [[package]] 4776 - name = "strict-num" 4777 - version = "0.1.1" 4778 - source = "registry+https://github.com/rust-lang/crates.io-index" 4779 - checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" 4780 - 4781 - [[package]] 4782 - name = "strum" 4783 - version = "0.26.3" 4784 - source = "registry+https://github.com/rust-lang/crates.io-index" 4785 - checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" 4786 - dependencies = [ 4787 - "strum_macros", 4788 - ] 4789 - 4790 - [[package]] 4791 - name = "strum_macros" 4792 - version = "0.26.4" 4793 - source = "registry+https://github.com/rust-lang/crates.io-index" 4794 - checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" 4795 - dependencies = [ 4796 - "heck", 4797 - "proc-macro2", 4798 - "quote", 4799 - "rustversion", 4800 - "syn 2.0.101", 4801 - ] 4802 - 4803 - [[package]] 4804 - name = "svg_fmt" 4805 - version = "0.4.5" 4806 - source = "registry+https://github.com/rust-lang/crates.io-index" 4807 - checksum = "0193cc4331cfd2f3d2011ef287590868599a2f33c3e69bc22c1a3d3acf9e02fb" 4808 - 4809 - [[package]] 4810 - name = "swash" 4811 - version = "0.2.4" 4812 - source = "registry+https://github.com/rust-lang/crates.io-index" 4813 - checksum = "5dce3f0af95643c855cdc449fbaa17d8c2cd08e0b00a49a6babcbe6e71667f3d" 4814 - dependencies = [ 4815 - "skrifa", 4816 - "yazi", 4817 - "zeno", 4818 - ] 4819 - 4820 - [[package]] 4821 - name = "syn" 4822 - version = "1.0.109" 4823 - source = "registry+https://github.com/rust-lang/crates.io-index" 4824 - checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 4825 - dependencies = [ 4826 - "proc-macro2", 4827 - "quote", 4828 - "unicode-ident", 4829 - ] 4830 - 4831 - [[package]] 4832 - name = "syn" 4833 - version = "2.0.101" 4834 - source = "registry+https://github.com/rust-lang/crates.io-index" 4835 - checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" 4836 - dependencies = [ 4837 - "proc-macro2", 4838 - "quote", 4839 - "unicode-ident", 4840 - ] 4841 - 4842 - [[package]] 4843 - name = "synstructure" 4844 - version = "0.13.2" 4845 - source = "registry+https://github.com/rust-lang/crates.io-index" 4846 - checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" 4847 - dependencies = [ 4848 - "proc-macro2", 4849 - "quote", 4850 - "syn 2.0.101", 4851 - ] 4852 - 4853 - [[package]] 4854 - name = "sys-locale" 4855 - version = "0.3.2" 4856 - source = "registry+https://github.com/rust-lang/crates.io-index" 4857 - checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" 4858 - dependencies = [ 4859 - "libc", 4860 - ] 4861 - 4862 - [[package]] 4863 - name = "sysinfo" 4864 - version = "0.34.2" 4865 - source = "registry+https://github.com/rust-lang/crates.io-index" 4866 - checksum = "a4b93974b3d3aeaa036504b8eefd4c039dced109171c1ae973f1dc63b2c7e4b2" 4867 - dependencies = [ 4868 - "libc", 4869 - "memchr", 4870 - "ntapi", 4871 - "objc2-core-foundation", 4872 - "windows 0.57.0", 4873 - ] 4874 - 4875 - [[package]] 4876 - name = "system-deps" 4877 - version = "6.2.2" 4878 - source = "registry+https://github.com/rust-lang/crates.io-index" 4879 - checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" 4880 - dependencies = [ 4881 - "cfg-expr", 4882 - "heck", 4883 - "pkg-config", 4884 - "toml", 4885 - "version-compare", 4886 - ] 4887 - 4888 - [[package]] 4889 - name = "taffy" 4890 - version = "0.7.7" 4891 - source = "registry+https://github.com/rust-lang/crates.io-index" 4892 - checksum = "ab4f4d046dd956a47a7e1a2947083d7ac3e6aa3cfaaead36173ceaa5ab11878c" 4893 - dependencies = [ 4894 - "arrayvec", 4895 - "grid", 4896 - "serde", 4897 - "slotmap", 4898 - ] 4899 - 4900 - [[package]] 4901 - name = "target-lexicon" 4902 - version = "0.12.16" 4903 - source = "registry+https://github.com/rust-lang/crates.io-index" 4904 - checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" 4905 - 4906 - [[package]] 4907 - name = "termcolor" 4908 - version = "1.4.1" 4909 - source = "registry+https://github.com/rust-lang/crates.io-index" 4910 - checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" 4911 - dependencies = [ 4912 - "winapi-util", 4913 - ] 4914 - 4915 - [[package]] 4916 - name = "thiserror" 4917 - version = "1.0.69" 4918 - source = "registry+https://github.com/rust-lang/crates.io-index" 4919 - checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 4920 - dependencies = [ 4921 - "thiserror-impl 1.0.69", 4922 - ] 4923 - 4924 - [[package]] 4925 - name = "thiserror" 4926 - version = "2.0.12" 4927 - source = "registry+https://github.com/rust-lang/crates.io-index" 4928 - checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" 4929 - dependencies = [ 4930 - "thiserror-impl 2.0.12", 4931 - ] 4932 - 4933 - [[package]] 4934 - name = "thiserror-impl" 4935 - version = "1.0.69" 4936 - source = "registry+https://github.com/rust-lang/crates.io-index" 4937 - checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 4938 - dependencies = [ 4939 - "proc-macro2", 4940 - "quote", 4941 - "syn 2.0.101", 4942 - ] 4943 - 4944 - [[package]] 4945 - name = "thiserror-impl" 4946 - version = "2.0.12" 4947 - source = "registry+https://github.com/rust-lang/crates.io-index" 4948 - checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" 4949 - dependencies = [ 4950 - "proc-macro2", 4951 - "quote", 4952 - "syn 2.0.101", 4953 - ] 4954 - 4955 - [[package]] 4956 - name = "thread_local" 4957 - version = "1.1.8" 4958 - source = "registry+https://github.com/rust-lang/crates.io-index" 4959 - checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" 4960 - dependencies = [ 4961 - "cfg-if", 4962 - "once_cell", 4963 - ] 4964 - 4965 - [[package]] 4966 - name = "tiff" 4967 - version = "0.9.1" 4968 - source = "registry+https://github.com/rust-lang/crates.io-index" 4969 - checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" 4970 - dependencies = [ 4971 - "flate2", 4972 - "jpeg-decoder", 4973 - "weezl", 4974 - ] 4975 - 4976 - [[package]] 4977 - name = "tiny-skia" 4978 - version = "0.11.4" 4979 - source = "registry+https://github.com/rust-lang/crates.io-index" 4980 - checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" 4981 - dependencies = [ 4982 - "arrayref", 4983 - "arrayvec", 4984 - "bytemuck", 4985 - "cfg-if", 4986 - "log", 4987 - "tiny-skia-path", 4988 - ] 4989 - 4990 - [[package]] 4991 - name = "tiny-skia-path" 4992 - version = "0.11.4" 4993 - source = "registry+https://github.com/rust-lang/crates.io-index" 4994 - checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" 4995 - dependencies = [ 4996 - "arrayref", 4997 - "bytemuck", 4998 - "strict-num", 4999 - ] 5000 - 5001 - [[package]] 5002 - name = "tinystr" 5003 - version = "0.8.1" 5004 - source = "registry+https://github.com/rust-lang/crates.io-index" 5005 - checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" 5006 - dependencies = [ 5007 - "displaydoc", 5008 - "zerovec", 5009 - ] 5010 - 5011 - [[package]] 5012 - name = "tinyvec" 5013 - version = "1.9.0" 5014 - source = "registry+https://github.com/rust-lang/crates.io-index" 5015 - checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" 5016 - dependencies = [ 5017 - "tinyvec_macros", 5018 - ] 5019 - 5020 - [[package]] 5021 - name = "tinyvec_macros" 5022 - version = "0.1.1" 5023 - source = "registry+https://github.com/rust-lang/crates.io-index" 5024 - checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 5025 - 5026 - [[package]] 5027 - name = "toml" 5028 - version = "0.8.22" 5029 - source = "registry+https://github.com/rust-lang/crates.io-index" 5030 - checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" 5031 - dependencies = [ 5032 - "serde", 5033 - "serde_spanned", 5034 - "toml_datetime", 5035 - "toml_edit", 5036 - ] 5037 - 5038 - [[package]] 5039 - name = "toml_datetime" 5040 - version = "0.6.9" 5041 - source = "registry+https://github.com/rust-lang/crates.io-index" 5042 - checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" 5043 - dependencies = [ 5044 - "serde", 5045 - ] 5046 - 5047 - [[package]] 5048 - name = "toml_edit" 5049 - version = "0.22.26" 5050 - source = "registry+https://github.com/rust-lang/crates.io-index" 5051 - checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" 5052 - dependencies = [ 5053 - "indexmap", 5054 - "serde", 5055 - "serde_spanned", 5056 - "toml_datetime", 5057 - "winnow", 5058 - ] 5059 - 5060 - [[package]] 5061 - name = "tracing" 5062 - version = "0.1.41" 5063 - source = "registry+https://github.com/rust-lang/crates.io-index" 5064 - checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 5065 - dependencies = [ 5066 - "pin-project-lite", 5067 - "tracing-attributes", 5068 - "tracing-core", 5069 - ] 5070 - 5071 - [[package]] 5072 - name = "tracing-attributes" 5073 - version = "0.1.28" 5074 - source = "registry+https://github.com/rust-lang/crates.io-index" 5075 - checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" 5076 - dependencies = [ 5077 - "proc-macro2", 5078 - "quote", 5079 - "syn 2.0.101", 5080 - ] 5081 - 5082 - [[package]] 5083 - name = "tracing-core" 5084 - version = "0.1.33" 5085 - source = "registry+https://github.com/rust-lang/crates.io-index" 5086 - checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" 5087 - dependencies = [ 5088 - "once_cell", 5089 - "valuable", 5090 - ] 5091 - 5092 - [[package]] 5093 - name = "tracing-log" 5094 - version = "0.2.0" 5095 - source = "registry+https://github.com/rust-lang/crates.io-index" 5096 - checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" 5097 - dependencies = [ 5098 - "log", 5099 - "once_cell", 5100 - "tracing-core", 5101 - ] 5102 - 5103 - [[package]] 5104 - name = "tracing-oslog" 5105 - version = "0.2.0" 5106 - source = "registry+https://github.com/rust-lang/crates.io-index" 5107 - checksum = "528bdd1f0e27b5dd9a4ededf154e824b0532731e4af73bb531de46276e0aab1e" 5108 - dependencies = [ 5109 - "bindgen", 5110 - "cc", 5111 - "cfg-if", 5112 - "once_cell", 5113 - "parking_lot", 5114 - "tracing-core", 5115 - "tracing-subscriber", 5116 - ] 5117 - 5118 - [[package]] 5119 - name = "tracing-subscriber" 5120 - version = "0.3.19" 5121 - source = "registry+https://github.com/rust-lang/crates.io-index" 5122 - checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" 5123 - dependencies = [ 5124 - "matchers", 5125 - "nu-ansi-term", 5126 - "once_cell", 5127 - "regex", 5128 - "sharded-slab", 5129 - "smallvec", 5130 - "thread_local", 5131 - "tracing", 5132 - "tracing-core", 5133 - "tracing-log", 5134 - ] 5135 - 5136 - [[package]] 5137 - name = "tracing-wasm" 5138 - version = "0.2.1" 5139 - source = "registry+https://github.com/rust-lang/crates.io-index" 5140 - checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07" 5141 - dependencies = [ 5142 - "tracing", 5143 - "tracing-subscriber", 5144 - "wasm-bindgen", 5145 - ] 5146 - 5147 - [[package]] 5148 - name = "ttf-parser" 5149 - version = "0.20.0" 5150 - source = "registry+https://github.com/rust-lang/crates.io-index" 5151 - checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" 5152 - 5153 - [[package]] 5154 - name = "ttf-parser" 5155 - version = "0.21.1" 5156 - source = "registry+https://github.com/rust-lang/crates.io-index" 5157 - checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" 5158 - 5159 - [[package]] 5160 - name = "ttf-parser" 5161 - version = "0.25.1" 5162 - source = "registry+https://github.com/rust-lang/crates.io-index" 5163 - checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" 5164 - 5165 - [[package]] 5166 - name = "twox-hash" 5167 - version = "2.1.0" 5168 - source = "registry+https://github.com/rust-lang/crates.io-index" 5169 - checksum = "e7b17f197b3050ba473acf9181f7b1d3b66d1cf7356c6cc57886662276e65908" 5170 - 5171 - [[package]] 5172 - name = "typeid" 5173 - version = "1.0.3" 5174 - source = "registry+https://github.com/rust-lang/crates.io-index" 5175 - checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" 5176 - 5177 - [[package]] 5178 - name = "typenum" 5179 - version = "1.18.0" 5180 - source = "registry+https://github.com/rust-lang/crates.io-index" 5181 - checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" 5182 - 5183 - [[package]] 5184 - name = "unicode-bidi" 5185 - version = "0.3.18" 5186 - source = "registry+https://github.com/rust-lang/crates.io-index" 5187 - checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" 5188 - 5189 - [[package]] 5190 - name = "unicode-bidi-mirroring" 5191 - version = "0.2.0" 5192 - source = "registry+https://github.com/rust-lang/crates.io-index" 5193 - checksum = "23cb788ffebc92c5948d0e997106233eeb1d8b9512f93f41651f52b6c5f5af86" 5194 - 5195 - [[package]] 5196 - name = "unicode-ccc" 5197 - version = "0.2.0" 5198 - source = "registry+https://github.com/rust-lang/crates.io-index" 5199 - checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656" 5200 - 5201 - [[package]] 5202 - name = "unicode-ident" 5203 - version = "1.0.18" 5204 - source = "registry+https://github.com/rust-lang/crates.io-index" 5205 - checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" 5206 - 5207 - [[package]] 5208 - name = "unicode-linebreak" 5209 - version = "0.1.5" 5210 - source = "registry+https://github.com/rust-lang/crates.io-index" 5211 - checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" 5212 - 5213 - [[package]] 5214 - name = "unicode-properties" 5215 - version = "0.1.3" 5216 - source = "registry+https://github.com/rust-lang/crates.io-index" 5217 - checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" 5218 - 5219 - [[package]] 5220 - name = "unicode-script" 5221 - version = "0.5.7" 5222 - source = "registry+https://github.com/rust-lang/crates.io-index" 5223 - checksum = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f" 5224 - 5225 - [[package]] 5226 - name = "unicode-segmentation" 5227 - version = "1.12.0" 5228 - source = "registry+https://github.com/rust-lang/crates.io-index" 5229 - checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" 5230 - 5231 - [[package]] 5232 - name = "unicode-width" 5233 - version = "0.1.14" 5234 - source = "registry+https://github.com/rust-lang/crates.io-index" 5235 - checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" 5236 - 5237 - [[package]] 5238 - name = "unicode-xid" 5239 - version = "0.2.6" 5240 - source = "registry+https://github.com/rust-lang/crates.io-index" 5241 - checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" 5242 - 5243 - [[package]] 5244 - name = "url" 5245 - version = "2.5.4" 5246 - source = "registry+https://github.com/rust-lang/crates.io-index" 5247 - checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" 5248 - dependencies = [ 5249 - "form_urlencoded", 5250 - "idna", 5251 - "percent-encoding", 5252 - ] 5253 - 5254 - [[package]] 5255 - name = "utf8_iter" 5256 - version = "1.0.4" 5257 - source = "registry+https://github.com/rust-lang/crates.io-index" 5258 - checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 5259 - 5260 - [[package]] 5261 - name = "uuid" 5262 - version = "1.16.0" 5263 - source = "registry+https://github.com/rust-lang/crates.io-index" 5264 - checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9" 5265 - dependencies = [ 5266 - "getrandom 0.3.3", 5267 - "js-sys", 5268 - "serde", 5269 - "wasm-bindgen", 5270 - ] 5271 - 5272 - [[package]] 5273 - name = "v_frame" 5274 - version = "0.3.8" 5275 - source = "registry+https://github.com/rust-lang/crates.io-index" 5276 - checksum = "d6f32aaa24bacd11e488aa9ba66369c7cd514885742c9fe08cfe85884db3e92b" 5277 - dependencies = [ 5278 - "aligned-vec", 5279 - "num-traits", 5280 - "wasm-bindgen", 5281 - ] 5282 - 5283 - [[package]] 5284 - name = "valuable" 5285 - version = "0.1.1" 5286 - source = "registry+https://github.com/rust-lang/crates.io-index" 5287 - checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" 5288 - 5289 - [[package]] 5290 - name = "variadics_please" 5291 - version = "1.1.0" 5292 - source = "registry+https://github.com/rust-lang/crates.io-index" 5293 - checksum = "41b6d82be61465f97d42bd1d15bf20f3b0a3a0905018f38f9d6f6962055b0b5c" 5294 - dependencies = [ 5295 - "proc-macro2", 5296 - "quote", 5297 - "syn 2.0.101", 5298 - ] 5299 - 5300 - [[package]] 5301 - name = "vec_map" 5302 - version = "0.8.2" 5303 - source = "registry+https://github.com/rust-lang/crates.io-index" 5304 - checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" 5305 - 5306 - [[package]] 5307 - name = "vee" 5308 - version = "0.1.0" 5309 - dependencies = [ 5310 - "bevy", 5311 - "bevy_egui", 5312 - "binrw", 5313 - "flate2", 5314 - "glam 0.30.3", 5315 - "half", 5316 - "mesh-tools", 5317 - ] 5318 - 5319 - [[package]] 5320 - name = "version-compare" 5321 - version = "0.2.0" 5322 - source = "registry+https://github.com/rust-lang/crates.io-index" 5323 - checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" 5324 - 5325 - [[package]] 5326 - name = "version_check" 5327 - version = "0.9.5" 5328 - source = "registry+https://github.com/rust-lang/crates.io-index" 5329 - checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 5330 - 5331 - [[package]] 5332 - name = "walkdir" 5333 - version = "2.5.0" 5334 - source = "registry+https://github.com/rust-lang/crates.io-index" 5335 - checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 5336 - dependencies = [ 5337 - "same-file", 5338 - "winapi-util", 5339 - ] 5340 - 5341 - [[package]] 5342 - name = "wasi" 5343 - version = "0.11.0+wasi-snapshot-preview1" 5344 - source = "registry+https://github.com/rust-lang/crates.io-index" 5345 - checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 5346 - 5347 - [[package]] 5348 - name = "wasi" 5349 - version = "0.14.2+wasi-0.2.4" 5350 - source = "registry+https://github.com/rust-lang/crates.io-index" 5351 - checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" 5352 - dependencies = [ 5353 - "wit-bindgen-rt", 5354 - ] 5355 - 5356 - [[package]] 5357 - name = "wasm-bindgen" 5358 - version = "0.2.100" 5359 - source = "registry+https://github.com/rust-lang/crates.io-index" 5360 - checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" 5361 - dependencies = [ 5362 - "cfg-if", 5363 - "once_cell", 5364 - "rustversion", 5365 - "wasm-bindgen-macro", 5366 - ] 5367 - 5368 - [[package]] 5369 - name = "wasm-bindgen-backend" 5370 - version = "0.2.100" 5371 - source = "registry+https://github.com/rust-lang/crates.io-index" 5372 - checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" 5373 - dependencies = [ 5374 - "bumpalo", 5375 - "log", 5376 - "proc-macro2", 5377 - "quote", 5378 - "syn 2.0.101", 5379 - "wasm-bindgen-shared", 5380 - ] 5381 - 5382 - [[package]] 5383 - name = "wasm-bindgen-futures" 5384 - version = "0.4.50" 5385 - source = "registry+https://github.com/rust-lang/crates.io-index" 5386 - checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" 5387 - dependencies = [ 5388 - "cfg-if", 5389 - "js-sys", 5390 - "once_cell", 5391 - "wasm-bindgen", 5392 - "web-sys", 5393 - ] 5394 - 5395 - [[package]] 5396 - name = "wasm-bindgen-macro" 5397 - version = "0.2.100" 5398 - source = "registry+https://github.com/rust-lang/crates.io-index" 5399 - checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" 5400 - dependencies = [ 5401 - "quote", 5402 - "wasm-bindgen-macro-support", 5403 - ] 5404 - 5405 - [[package]] 5406 - name = "wasm-bindgen-macro-support" 5407 - version = "0.2.100" 5408 - source = "registry+https://github.com/rust-lang/crates.io-index" 5409 - checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" 5410 - dependencies = [ 5411 - "proc-macro2", 5412 - "quote", 5413 - "syn 2.0.101", 5414 - "wasm-bindgen-backend", 5415 - "wasm-bindgen-shared", 5416 - ] 5417 - 5418 - [[package]] 5419 - name = "wasm-bindgen-shared" 5420 - version = "0.2.100" 5421 - source = "registry+https://github.com/rust-lang/crates.io-index" 5422 - checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" 5423 - dependencies = [ 5424 - "unicode-ident", 5425 - ] 5426 - 5427 - [[package]] 5428 - name = "wayland-backend" 5429 - version = "0.3.10" 5430 - source = "registry+https://github.com/rust-lang/crates.io-index" 5431 - checksum = "fe770181423e5fc79d3e2a7f4410b7799d5aab1de4372853de3c6aa13ca24121" 5432 - dependencies = [ 5433 - "cc", 5434 - "downcast-rs 1.2.1", 5435 - "rustix", 5436 - "scoped-tls", 5437 - "smallvec", 5438 - "wayland-sys", 5439 - ] 5440 - 5441 - [[package]] 5442 - name = "wayland-client" 5443 - version = "0.31.10" 5444 - source = "registry+https://github.com/rust-lang/crates.io-index" 5445 - checksum = "978fa7c67b0847dbd6a9f350ca2569174974cd4082737054dbb7fbb79d7d9a61" 5446 - dependencies = [ 5447 - "bitflags 2.9.0", 5448 - "rustix", 5449 - "wayland-backend", 5450 - "wayland-scanner", 5451 - ] 5452 - 5453 - [[package]] 5454 - name = "wayland-csd-frame" 5455 - version = "0.3.0" 5456 - source = "registry+https://github.com/rust-lang/crates.io-index" 5457 - checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" 5458 - dependencies = [ 5459 - "bitflags 2.9.0", 5460 - "cursor-icon", 5461 - "wayland-backend", 5462 - ] 5463 - 5464 - [[package]] 5465 - name = "wayland-cursor" 5466 - version = "0.31.10" 5467 - source = "registry+https://github.com/rust-lang/crates.io-index" 5468 - checksum = "a65317158dec28d00416cb16705934070aef4f8393353d41126c54264ae0f182" 5469 - dependencies = [ 5470 - "rustix", 5471 - "wayland-client", 5472 - "xcursor", 5473 - ] 5474 - 5475 - [[package]] 5476 - name = "wayland-protocols" 5477 - version = "0.32.8" 5478 - source = "registry+https://github.com/rust-lang/crates.io-index" 5479 - checksum = "779075454e1e9a521794fed15886323ea0feda3f8b0fc1390f5398141310422a" 5480 - dependencies = [ 5481 - "bitflags 2.9.0", 5482 - "wayland-backend", 5483 - "wayland-client", 5484 - "wayland-scanner", 5485 - ] 5486 - 5487 - [[package]] 5488 - name = "wayland-protocols-plasma" 5489 - version = "0.3.8" 5490 - source = "registry+https://github.com/rust-lang/crates.io-index" 5491 - checksum = "4fd38cdad69b56ace413c6bcc1fbf5acc5e2ef4af9d5f8f1f9570c0c83eae175" 5492 - dependencies = [ 5493 - "bitflags 2.9.0", 5494 - "wayland-backend", 5495 - "wayland-client", 5496 - "wayland-protocols", 5497 - "wayland-scanner", 5498 - ] 5499 - 5500 - [[package]] 5501 - name = "wayland-protocols-wlr" 5502 - version = "0.3.8" 5503 - source = "registry+https://github.com/rust-lang/crates.io-index" 5504 - checksum = "1cb6cdc73399c0e06504c437fe3cf886f25568dd5454473d565085b36d6a8bbf" 5505 - dependencies = [ 5506 - "bitflags 2.9.0", 5507 - "wayland-backend", 5508 - "wayland-client", 5509 - "wayland-protocols", 5510 - "wayland-scanner", 5511 - ] 5512 - 5513 - [[package]] 5514 - name = "wayland-scanner" 5515 - version = "0.31.6" 5516 - source = "registry+https://github.com/rust-lang/crates.io-index" 5517 - checksum = "896fdafd5d28145fce7958917d69f2fd44469b1d4e861cb5961bcbeebc6d1484" 5518 - dependencies = [ 5519 - "proc-macro2", 5520 - "quick-xml", 5521 - "quote", 5522 - ] 5523 - 5524 - [[package]] 5525 - name = "wayland-sys" 5526 - version = "0.31.6" 5527 - source = "registry+https://github.com/rust-lang/crates.io-index" 5528 - checksum = "dbcebb399c77d5aa9fa5db874806ee7b4eba4e73650948e8f93963f128896615" 5529 - dependencies = [ 5530 - "dlib", 5531 - "log", 5532 - "once_cell", 5533 - "pkg-config", 5534 - ] 5535 - 5536 - [[package]] 5537 - name = "web-sys" 5538 - version = "0.3.77" 5539 - source = "registry+https://github.com/rust-lang/crates.io-index" 5540 - checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" 5541 - dependencies = [ 5542 - "js-sys", 5543 - "wasm-bindgen", 5544 - ] 5545 - 5546 - [[package]] 5547 - name = "web-time" 5548 - version = "1.1.0" 5549 - source = "registry+https://github.com/rust-lang/crates.io-index" 5550 - checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" 5551 - dependencies = [ 5552 - "js-sys", 5553 - "wasm-bindgen", 5554 - ] 5555 - 5556 - [[package]] 5557 - name = "webbrowser" 5558 - version = "1.0.4" 5559 - source = "registry+https://github.com/rust-lang/crates.io-index" 5560 - checksum = "d5df295f8451142f1856b1bd86a606dfe9587d439bc036e319c827700dbd555e" 5561 - dependencies = [ 5562 - "core-foundation 0.10.0", 5563 - "home", 5564 - "jni", 5565 - "log", 5566 - "ndk-context", 5567 - "objc2 0.6.1", 5568 - "objc2-foundation 0.3.1", 5569 - "url", 5570 - "web-sys", 5571 - ] 5572 - 5573 - [[package]] 5574 - name = "weezl" 5575 - version = "0.1.8" 5576 - source = "registry+https://github.com/rust-lang/crates.io-index" 5577 - checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" 5578 - 5579 - [[package]] 5580 - name = "wgpu" 5581 - version = "24.0.3" 5582 - source = "registry+https://github.com/rust-lang/crates.io-index" 5583 - checksum = "35904fb00ba2d2e0a4d002fcbbb6e1b89b574d272a50e5fc95f6e81cf281c245" 5584 - dependencies = [ 5585 - "arrayvec", 5586 - "bitflags 2.9.0", 5587 - "cfg_aliases", 5588 - "document-features", 5589 - "js-sys", 5590 - "log", 5591 - "naga", 5592 - "parking_lot", 5593 - "profiling", 5594 - "raw-window-handle", 5595 - "smallvec", 5596 - "static_assertions", 5597 - "wasm-bindgen", 5598 - "wasm-bindgen-futures", 5599 - "web-sys", 5600 - "wgpu-core", 5601 - "wgpu-hal", 5602 - "wgpu-types", 5603 - ] 5604 - 5605 - [[package]] 5606 - name = "wgpu-core" 5607 - version = "24.0.2" 5608 - source = "registry+https://github.com/rust-lang/crates.io-index" 5609 - checksum = "671c25545d479b47d3f0a8e373aceb2060b67c6eb841b24ac8c32348151c7a0c" 5610 - dependencies = [ 5611 - "arrayvec", 5612 - "bit-vec 0.8.0", 5613 - "bitflags 2.9.0", 5614 - "cfg_aliases", 5615 - "document-features", 5616 - "indexmap", 5617 - "log", 5618 - "naga", 5619 - "once_cell", 5620 - "parking_lot", 5621 - "profiling", 5622 - "raw-window-handle", 5623 - "rustc-hash", 5624 - "smallvec", 5625 - "thiserror 2.0.12", 5626 - "wgpu-hal", 5627 - "wgpu-types", 5628 - ] 5629 - 5630 - [[package]] 5631 - name = "wgpu-hal" 5632 - version = "24.0.4" 5633 - source = "registry+https://github.com/rust-lang/crates.io-index" 5634 - checksum = "f112f464674ca69f3533248508ee30cb84c67cf06c25ff6800685f5e0294e259" 5635 - dependencies = [ 5636 - "android_system_properties", 5637 - "arrayvec", 5638 - "ash", 5639 - "bit-set 0.8.0", 5640 - "bitflags 2.9.0", 5641 - "block", 5642 - "bytemuck", 5643 - "cfg_aliases", 5644 - "core-graphics-types", 5645 - "glow", 5646 - "glutin_wgl_sys", 5647 - "gpu-alloc", 5648 - "gpu-allocator", 5649 - "gpu-descriptor", 5650 - "js-sys", 5651 - "khronos-egl", 5652 - "libc", 5653 - "libloading", 5654 - "log", 5655 - "metal", 5656 - "naga", 5657 - "ndk-sys 0.5.0+25.2.9519653", 5658 - "objc", 5659 - "once_cell", 5660 - "ordered-float", 5661 - "parking_lot", 5662 - "profiling", 5663 - "range-alloc", 5664 - "raw-window-handle", 5665 - "renderdoc-sys", 5666 - "rustc-hash", 5667 - "smallvec", 5668 - "thiserror 2.0.12", 5669 - "wasm-bindgen", 5670 - "web-sys", 5671 - "wgpu-types", 5672 - "windows 0.58.0", 5673 - "windows-core 0.58.0", 5674 - ] 5675 - 5676 - [[package]] 5677 - name = "wgpu-types" 5678 - version = "24.0.0" 5679 - source = "registry+https://github.com/rust-lang/crates.io-index" 5680 - checksum = "50ac044c0e76c03a0378e7786ac505d010a873665e2d51383dcff8dd227dc69c" 5681 - dependencies = [ 5682 - "bitflags 2.9.0", 5683 - "js-sys", 5684 - "log", 5685 - "serde", 5686 - "web-sys", 5687 - ] 5688 - 5689 - [[package]] 5690 - name = "wide" 5691 - version = "0.7.32" 5692 - source = "registry+https://github.com/rust-lang/crates.io-index" 5693 - checksum = "41b5576b9a81633f3e8df296ce0063042a73507636cbe956c61133dd7034ab22" 5694 - dependencies = [ 5695 - "bytemuck", 5696 - "safe_arch", 5697 - ] 5698 - 5699 - [[package]] 5700 - name = "winapi" 5701 - version = "0.3.9" 5702 - source = "registry+https://github.com/rust-lang/crates.io-index" 5703 - checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 5704 - dependencies = [ 5705 - "winapi-i686-pc-windows-gnu", 5706 - "winapi-x86_64-pc-windows-gnu", 5707 - ] 5708 - 5709 - [[package]] 5710 - name = "winapi-i686-pc-windows-gnu" 5711 - version = "0.4.0" 5712 - source = "registry+https://github.com/rust-lang/crates.io-index" 5713 - checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 5714 - 5715 - [[package]] 5716 - name = "winapi-util" 5717 - version = "0.1.9" 5718 - source = "registry+https://github.com/rust-lang/crates.io-index" 5719 - checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" 5720 - dependencies = [ 5721 - "windows-sys 0.59.0", 5722 - ] 5723 - 5724 - [[package]] 5725 - name = "winapi-x86_64-pc-windows-gnu" 5726 - version = "0.4.0" 5727 - source = "registry+https://github.com/rust-lang/crates.io-index" 5728 - checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 5729 - 5730 - [[package]] 5731 - name = "windows" 5732 - version = "0.54.0" 5733 - source = "registry+https://github.com/rust-lang/crates.io-index" 5734 - checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" 5735 - dependencies = [ 5736 - "windows-core 0.54.0", 5737 - "windows-targets 0.52.6", 5738 - ] 5739 - 5740 - [[package]] 5741 - name = "windows" 5742 - version = "0.57.0" 5743 - source = "registry+https://github.com/rust-lang/crates.io-index" 5744 - checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" 5745 - dependencies = [ 5746 - "windows-core 0.57.0", 5747 - "windows-targets 0.52.6", 5748 - ] 5749 - 5750 - [[package]] 5751 - name = "windows" 5752 - version = "0.58.0" 5753 - source = "registry+https://github.com/rust-lang/crates.io-index" 5754 - checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" 5755 - dependencies = [ 5756 - "windows-core 0.58.0", 5757 - "windows-targets 0.52.6", 5758 - ] 5759 - 5760 - [[package]] 5761 - name = "windows" 5762 - version = "0.61.1" 5763 - source = "registry+https://github.com/rust-lang/crates.io-index" 5764 - checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419" 5765 - dependencies = [ 5766 - "windows-collections", 5767 - "windows-core 0.61.0", 5768 - "windows-future", 5769 - "windows-link", 5770 - "windows-numerics", 5771 - ] 5772 - 5773 - [[package]] 5774 - name = "windows-collections" 5775 - version = "0.2.0" 5776 - source = "registry+https://github.com/rust-lang/crates.io-index" 5777 - checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" 5778 - dependencies = [ 5779 - "windows-core 0.61.0", 5780 - ] 5781 - 5782 - [[package]] 5783 - name = "windows-core" 5784 - version = "0.54.0" 5785 - source = "registry+https://github.com/rust-lang/crates.io-index" 5786 - checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" 5787 - dependencies = [ 5788 - "windows-result 0.1.2", 5789 - "windows-targets 0.52.6", 5790 - ] 5791 - 5792 - [[package]] 5793 - name = "windows-core" 5794 - version = "0.57.0" 5795 - source = "registry+https://github.com/rust-lang/crates.io-index" 5796 - checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" 5797 - dependencies = [ 5798 - "windows-implement 0.57.0", 5799 - "windows-interface 0.57.0", 5800 - "windows-result 0.1.2", 5801 - "windows-targets 0.52.6", 5802 - ] 5803 - 5804 - [[package]] 5805 - name = "windows-core" 5806 - version = "0.58.0" 5807 - source = "registry+https://github.com/rust-lang/crates.io-index" 5808 - checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" 5809 - dependencies = [ 5810 - "windows-implement 0.58.0", 5811 - "windows-interface 0.58.0", 5812 - "windows-result 0.2.0", 5813 - "windows-strings 0.1.0", 5814 - "windows-targets 0.52.6", 5815 - ] 5816 - 5817 - [[package]] 5818 - name = "windows-core" 5819 - version = "0.61.0" 5820 - source = "registry+https://github.com/rust-lang/crates.io-index" 5821 - checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" 5822 - dependencies = [ 5823 - "windows-implement 0.60.0", 5824 - "windows-interface 0.59.1", 5825 - "windows-link", 5826 - "windows-result 0.3.2", 5827 - "windows-strings 0.4.0", 5828 - ] 5829 - 5830 - [[package]] 5831 - name = "windows-future" 5832 - version = "0.2.0" 5833 - source = "registry+https://github.com/rust-lang/crates.io-index" 5834 - checksum = "7a1d6bbefcb7b60acd19828e1bc965da6fcf18a7e39490c5f8be71e54a19ba32" 5835 - dependencies = [ 5836 - "windows-core 0.61.0", 5837 - "windows-link", 5838 - ] 5839 - 5840 - [[package]] 5841 - name = "windows-implement" 5842 - version = "0.57.0" 5843 - source = "registry+https://github.com/rust-lang/crates.io-index" 5844 - checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" 5845 - dependencies = [ 5846 - "proc-macro2", 5847 - "quote", 5848 - "syn 2.0.101", 5849 - ] 5850 - 5851 - [[package]] 5852 - name = "windows-implement" 5853 - version = "0.58.0" 5854 - source = "registry+https://github.com/rust-lang/crates.io-index" 5855 - checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" 5856 - dependencies = [ 5857 - "proc-macro2", 5858 - "quote", 5859 - "syn 2.0.101", 5860 - ] 5861 - 5862 - [[package]] 5863 - name = "windows-implement" 5864 - version = "0.60.0" 5865 - source = "registry+https://github.com/rust-lang/crates.io-index" 5866 - checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" 5867 - dependencies = [ 5868 - "proc-macro2", 5869 - "quote", 5870 - "syn 2.0.101", 5871 - ] 5872 - 5873 - [[package]] 5874 - name = "windows-interface" 5875 - version = "0.57.0" 5876 - source = "registry+https://github.com/rust-lang/crates.io-index" 5877 - checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" 5878 - dependencies = [ 5879 - "proc-macro2", 5880 - "quote", 5881 - "syn 2.0.101", 5882 - ] 5883 - 5884 - [[package]] 5885 - name = "windows-interface" 5886 - version = "0.58.0" 5887 - source = "registry+https://github.com/rust-lang/crates.io-index" 5888 - checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" 5889 - dependencies = [ 5890 - "proc-macro2", 5891 - "quote", 5892 - "syn 2.0.101", 5893 - ] 5894 - 5895 - [[package]] 5896 - name = "windows-interface" 5897 - version = "0.59.1" 5898 - source = "registry+https://github.com/rust-lang/crates.io-index" 5899 - checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" 5900 - dependencies = [ 5901 - "proc-macro2", 5902 - "quote", 5903 - "syn 2.0.101", 5904 - ] 5905 - 5906 - [[package]] 5907 - name = "windows-link" 5908 - version = "0.1.1" 5909 - source = "registry+https://github.com/rust-lang/crates.io-index" 5910 - checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" 5911 - 5912 - [[package]] 5913 - name = "windows-numerics" 5914 - version = "0.2.0" 5915 - source = "registry+https://github.com/rust-lang/crates.io-index" 5916 - checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" 5917 - dependencies = [ 5918 - "windows-core 0.61.0", 5919 - "windows-link", 5920 - ] 5921 - 5922 - [[package]] 5923 - name = "windows-result" 5924 - version = "0.1.2" 5925 - source = "registry+https://github.com/rust-lang/crates.io-index" 5926 - checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" 5927 - dependencies = [ 5928 - "windows-targets 0.52.6", 5929 - ] 5930 - 5931 - [[package]] 5932 - name = "windows-result" 5933 - version = "0.2.0" 5934 - source = "registry+https://github.com/rust-lang/crates.io-index" 5935 - checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" 5936 - dependencies = [ 5937 - "windows-targets 0.52.6", 5938 - ] 5939 - 5940 - [[package]] 5941 - name = "windows-result" 5942 - version = "0.3.2" 5943 - source = "registry+https://github.com/rust-lang/crates.io-index" 5944 - checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" 5945 - dependencies = [ 5946 - "windows-link", 5947 - ] 5948 - 5949 - [[package]] 5950 - name = "windows-strings" 5951 - version = "0.1.0" 5952 - source = "registry+https://github.com/rust-lang/crates.io-index" 5953 - checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" 5954 - dependencies = [ 5955 - "windows-result 0.2.0", 5956 - "windows-targets 0.52.6", 5957 - ] 5958 - 5959 - [[package]] 5960 - name = "windows-strings" 5961 - version = "0.4.0" 5962 - source = "registry+https://github.com/rust-lang/crates.io-index" 5963 - checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" 5964 - dependencies = [ 5965 - "windows-link", 5966 - ] 5967 - 5968 - [[package]] 5969 - name = "windows-sys" 5970 - version = "0.45.0" 5971 - source = "registry+https://github.com/rust-lang/crates.io-index" 5972 - checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" 5973 - dependencies = [ 5974 - "windows-targets 0.42.2", 5975 - ] 5976 - 5977 - [[package]] 5978 - name = "windows-sys" 5979 - version = "0.52.0" 5980 - source = "registry+https://github.com/rust-lang/crates.io-index" 5981 - checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 5982 - dependencies = [ 5983 - "windows-targets 0.52.6", 5984 - ] 5985 - 5986 - [[package]] 5987 - name = "windows-sys" 5988 - version = "0.59.0" 5989 - source = "registry+https://github.com/rust-lang/crates.io-index" 5990 - checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 5991 - dependencies = [ 5992 - "windows-targets 0.52.6", 5993 - ] 5994 - 5995 - [[package]] 5996 - name = "windows-targets" 5997 - version = "0.42.2" 5998 - source = "registry+https://github.com/rust-lang/crates.io-index" 5999 - checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" 6000 - dependencies = [ 6001 - "windows_aarch64_gnullvm 0.42.2", 6002 - "windows_aarch64_msvc 0.42.2", 6003 - "windows_i686_gnu 0.42.2", 6004 - "windows_i686_msvc 0.42.2", 6005 - "windows_x86_64_gnu 0.42.2", 6006 - "windows_x86_64_gnullvm 0.42.2", 6007 - "windows_x86_64_msvc 0.42.2", 6008 - ] 6009 - 6010 - [[package]] 6011 - name = "windows-targets" 6012 - version = "0.48.5" 6013 - source = "registry+https://github.com/rust-lang/crates.io-index" 6014 - checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 6015 - dependencies = [ 6016 - "windows_aarch64_gnullvm 0.48.5", 6017 - "windows_aarch64_msvc 0.48.5", 6018 - "windows_i686_gnu 0.48.5", 6019 - "windows_i686_msvc 0.48.5", 6020 - "windows_x86_64_gnu 0.48.5", 6021 - "windows_x86_64_gnullvm 0.48.5", 6022 - "windows_x86_64_msvc 0.48.5", 6023 - ] 6024 - 6025 - [[package]] 6026 - name = "windows-targets" 6027 - version = "0.52.6" 6028 - source = "registry+https://github.com/rust-lang/crates.io-index" 6029 - checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 6030 - dependencies = [ 6031 - "windows_aarch64_gnullvm 0.52.6", 6032 - "windows_aarch64_msvc 0.52.6", 6033 - "windows_i686_gnu 0.52.6", 6034 - "windows_i686_gnullvm", 6035 - "windows_i686_msvc 0.52.6", 6036 - "windows_x86_64_gnu 0.52.6", 6037 - "windows_x86_64_gnullvm 0.52.6", 6038 - "windows_x86_64_msvc 0.52.6", 6039 - ] 6040 - 6041 - [[package]] 6042 - name = "windows_aarch64_gnullvm" 6043 - version = "0.42.2" 6044 - source = "registry+https://github.com/rust-lang/crates.io-index" 6045 - checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 6046 - 6047 - [[package]] 6048 - name = "windows_aarch64_gnullvm" 6049 - version = "0.48.5" 6050 - source = "registry+https://github.com/rust-lang/crates.io-index" 6051 - checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 6052 - 6053 - [[package]] 6054 - name = "windows_aarch64_gnullvm" 6055 - version = "0.52.6" 6056 - source = "registry+https://github.com/rust-lang/crates.io-index" 6057 - checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 6058 - 6059 - [[package]] 6060 - name = "windows_aarch64_msvc" 6061 - version = "0.42.2" 6062 - source = "registry+https://github.com/rust-lang/crates.io-index" 6063 - checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" 6064 - 6065 - [[package]] 6066 - name = "windows_aarch64_msvc" 6067 - version = "0.48.5" 6068 - source = "registry+https://github.com/rust-lang/crates.io-index" 6069 - checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 6070 - 6071 - [[package]] 6072 - name = "windows_aarch64_msvc" 6073 - version = "0.52.6" 6074 - source = "registry+https://github.com/rust-lang/crates.io-index" 6075 - checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 6076 - 6077 - [[package]] 6078 - name = "windows_i686_gnu" 6079 - version = "0.42.2" 6080 - source = "registry+https://github.com/rust-lang/crates.io-index" 6081 - checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 6082 - 6083 - [[package]] 6084 - name = "windows_i686_gnu" 6085 - version = "0.48.5" 6086 - source = "registry+https://github.com/rust-lang/crates.io-index" 6087 - checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 6088 - 6089 - [[package]] 6090 - name = "windows_i686_gnu" 6091 - version = "0.52.6" 6092 - source = "registry+https://github.com/rust-lang/crates.io-index" 6093 - checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 6094 - 6095 - [[package]] 6096 - name = "windows_i686_gnullvm" 6097 - version = "0.52.6" 6098 - source = "registry+https://github.com/rust-lang/crates.io-index" 6099 - checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 6100 - 6101 - [[package]] 6102 - name = "windows_i686_msvc" 6103 - version = "0.42.2" 6104 - source = "registry+https://github.com/rust-lang/crates.io-index" 6105 - checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" 6106 - 6107 - [[package]] 6108 - name = "windows_i686_msvc" 6109 - version = "0.48.5" 6110 - source = "registry+https://github.com/rust-lang/crates.io-index" 6111 - checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 6112 - 6113 - [[package]] 6114 - name = "windows_i686_msvc" 6115 - version = "0.52.6" 6116 - source = "registry+https://github.com/rust-lang/crates.io-index" 6117 - checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 6118 - 6119 - [[package]] 6120 - name = "windows_x86_64_gnu" 6121 - version = "0.42.2" 6122 - source = "registry+https://github.com/rust-lang/crates.io-index" 6123 - checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" 6124 - 6125 - [[package]] 6126 - name = "windows_x86_64_gnu" 6127 - version = "0.48.5" 6128 - source = "registry+https://github.com/rust-lang/crates.io-index" 6129 - checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 6130 - 6131 - [[package]] 6132 - name = "windows_x86_64_gnu" 6133 - version = "0.52.6" 6134 - source = "registry+https://github.com/rust-lang/crates.io-index" 6135 - checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 6136 - 6137 - [[package]] 6138 - name = "windows_x86_64_gnullvm" 6139 - version = "0.42.2" 6140 - source = "registry+https://github.com/rust-lang/crates.io-index" 6141 - checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" 6142 - 6143 - [[package]] 6144 - name = "windows_x86_64_gnullvm" 6145 - version = "0.48.5" 6146 - source = "registry+https://github.com/rust-lang/crates.io-index" 6147 - checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 6148 - 6149 - [[package]] 6150 - name = "windows_x86_64_gnullvm" 6151 - version = "0.52.6" 6152 - source = "registry+https://github.com/rust-lang/crates.io-index" 6153 - checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 6154 - 6155 - [[package]] 6156 - name = "windows_x86_64_msvc" 6157 - version = "0.42.2" 6158 - source = "registry+https://github.com/rust-lang/crates.io-index" 6159 - checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" 6160 - 6161 - [[package]] 6162 - name = "windows_x86_64_msvc" 6163 - version = "0.48.5" 6164 - source = "registry+https://github.com/rust-lang/crates.io-index" 6165 - checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 6166 - 6167 - [[package]] 6168 - name = "windows_x86_64_msvc" 6169 - version = "0.52.6" 6170 - source = "registry+https://github.com/rust-lang/crates.io-index" 6171 - checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 6172 - 6173 - [[package]] 6174 - name = "winit" 6175 - version = "0.30.10" 6176 - source = "registry+https://github.com/rust-lang/crates.io-index" 6177 - checksum = "b0d05bd8908e14618c9609471db04007e644fd9cce6529756046cfc577f9155e" 6178 - dependencies = [ 6179 - "ahash", 6180 - "android-activity", 6181 - "atomic-waker", 6182 - "bitflags 2.9.0", 6183 - "block2", 6184 - "bytemuck", 6185 - "calloop", 6186 - "cfg_aliases", 6187 - "concurrent-queue", 6188 - "core-foundation 0.9.4", 6189 - "core-graphics", 6190 - "cursor-icon", 6191 - "dpi", 6192 - "js-sys", 6193 - "libc", 6194 - "memmap2", 6195 - "ndk 0.9.0", 6196 - "objc2 0.5.2", 6197 - "objc2-app-kit 0.2.2", 6198 - "objc2-foundation 0.2.2", 6199 - "objc2-ui-kit", 6200 - "orbclient", 6201 - "percent-encoding", 6202 - "pin-project", 6203 - "raw-window-handle", 6204 - "redox_syscall 0.4.1", 6205 - "rustix", 6206 - "sctk-adwaita", 6207 - "smithay-client-toolkit", 6208 - "smol_str", 6209 - "tracing", 6210 - "unicode-segmentation", 6211 - "wasm-bindgen", 6212 - "wasm-bindgen-futures", 6213 - "wayland-backend", 6214 - "wayland-client", 6215 - "wayland-protocols", 6216 - "wayland-protocols-plasma", 6217 - "web-sys", 6218 - "web-time", 6219 - "windows-sys 0.52.0", 6220 - "x11-dl", 6221 - "x11rb", 6222 - "xkbcommon-dl", 6223 - ] 6224 - 6225 - [[package]] 6226 - name = "winnow" 6227 - version = "0.7.10" 6228 - source = "registry+https://github.com/rust-lang/crates.io-index" 6229 - checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" 6230 - dependencies = [ 6231 - "memchr", 6232 - ] 6233 - 6234 - [[package]] 6235 - name = "wit-bindgen-rt" 6236 - version = "0.39.0" 6237 - source = "registry+https://github.com/rust-lang/crates.io-index" 6238 - checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" 6239 - dependencies = [ 6240 - "bitflags 2.9.0", 6241 - ] 6242 - 6243 - [[package]] 6244 - name = "writeable" 6245 - version = "0.6.1" 6246 - source = "registry+https://github.com/rust-lang/crates.io-index" 6247 - checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" 6248 - 6249 - [[package]] 6250 - name = "x11-dl" 6251 - version = "2.21.0" 6252 - source = "registry+https://github.com/rust-lang/crates.io-index" 6253 - checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" 6254 - dependencies = [ 6255 - "libc", 6256 - "once_cell", 6257 - "pkg-config", 6258 - ] 6259 - 6260 - [[package]] 6261 - name = "x11rb" 6262 - version = "0.13.1" 6263 - source = "registry+https://github.com/rust-lang/crates.io-index" 6264 - checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" 6265 - dependencies = [ 6266 - "as-raw-xcb-connection", 6267 - "gethostname", 6268 - "libc", 6269 - "libloading", 6270 - "once_cell", 6271 - "rustix", 6272 - "x11rb-protocol", 6273 - ] 6274 - 6275 - [[package]] 6276 - name = "x11rb-protocol" 6277 - version = "0.13.1" 6278 - source = "registry+https://github.com/rust-lang/crates.io-index" 6279 - checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" 6280 - 6281 - [[package]] 6282 - name = "xcursor" 6283 - version = "0.3.8" 6284 - source = "registry+https://github.com/rust-lang/crates.io-index" 6285 - checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61" 6286 - 6287 - [[package]] 6288 - name = "xkbcommon-dl" 6289 - version = "0.4.2" 6290 - source = "registry+https://github.com/rust-lang/crates.io-index" 6291 - checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" 6292 - dependencies = [ 6293 - "bitflags 2.9.0", 6294 - "dlib", 6295 - "log", 6296 - "once_cell", 6297 - "xkeysym", 6298 - ] 6299 - 6300 - [[package]] 6301 - name = "xkeysym" 6302 - version = "0.2.1" 6303 - source = "registry+https://github.com/rust-lang/crates.io-index" 6304 - checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" 6305 - 6306 - [[package]] 6307 - name = "xml-rs" 6308 - version = "0.8.26" 6309 - source = "registry+https://github.com/rust-lang/crates.io-index" 6310 - checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda" 6311 - 6312 - [[package]] 6313 - name = "yazi" 6314 - version = "0.2.1" 6315 - source = "registry+https://github.com/rust-lang/crates.io-index" 6316 - checksum = "e01738255b5a16e78bbb83e7fbba0a1e7dd506905cfc53f4622d89015a03fbb5" 6317 - 6318 - [[package]] 6319 - name = "yoke" 6320 - version = "0.8.0" 6321 - source = "registry+https://github.com/rust-lang/crates.io-index" 6322 - checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" 6323 - dependencies = [ 6324 - "serde", 6325 - "stable_deref_trait", 6326 - "yoke-derive", 6327 - "zerofrom", 6328 - ] 6329 - 6330 - [[package]] 6331 - name = "yoke-derive" 6332 - version = "0.8.0" 6333 - source = "registry+https://github.com/rust-lang/crates.io-index" 6334 - checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" 6335 - dependencies = [ 6336 - "proc-macro2", 6337 - "quote", 6338 - "syn 2.0.101", 6339 - "synstructure", 6340 - ] 6341 - 6342 - [[package]] 6343 - name = "zeno" 6344 - version = "0.3.3" 6345 - source = "registry+https://github.com/rust-lang/crates.io-index" 6346 - checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" 6347 - 6348 - [[package]] 6349 - name = "zerocopy" 6350 - version = "0.8.25" 6351 - source = "registry+https://github.com/rust-lang/crates.io-index" 6352 - checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" 6353 - dependencies = [ 6354 - "zerocopy-derive", 6355 - ] 6356 - 6357 - [[package]] 6358 - name = "zerocopy-derive" 6359 - version = "0.8.25" 6360 - source = "registry+https://github.com/rust-lang/crates.io-index" 6361 - checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" 6362 - dependencies = [ 6363 - "proc-macro2", 6364 - "quote", 6365 - "syn 2.0.101", 6366 - ] 6367 - 6368 - [[package]] 6369 - name = "zerofrom" 6370 - version = "0.1.6" 6371 - source = "registry+https://github.com/rust-lang/crates.io-index" 6372 - checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" 6373 - dependencies = [ 6374 - "zerofrom-derive", 6375 - ] 6376 - 6377 - [[package]] 6378 - name = "zerofrom-derive" 6379 - version = "0.1.6" 6380 - source = "registry+https://github.com/rust-lang/crates.io-index" 6381 - checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" 6382 - dependencies = [ 6383 - "proc-macro2", 6384 - "quote", 6385 - "syn 2.0.101", 6386 - "synstructure", 6387 - ] 6388 - 6389 - [[package]] 6390 - name = "zerotrie" 6391 - version = "0.2.2" 6392 - source = "registry+https://github.com/rust-lang/crates.io-index" 6393 - checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" 6394 - dependencies = [ 6395 - "displaydoc", 6396 - "yoke", 6397 - "zerofrom", 6398 - ] 6399 - 6400 - [[package]] 6401 - name = "zerovec" 6402 - version = "0.11.2" 6403 - source = "registry+https://github.com/rust-lang/crates.io-index" 6404 - checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" 6405 - dependencies = [ 6406 - "yoke", 6407 - "zerofrom", 6408 - "zerovec-derive", 6409 - ] 6410 - 6411 - [[package]] 6412 - name = "zerovec-derive" 6413 - version = "0.11.1" 6414 - source = "registry+https://github.com/rust-lang/crates.io-index" 6415 - checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" 6416 - dependencies = [ 6417 - "proc-macro2", 6418 - "quote", 6419 - "syn 2.0.101", 6420 - ] 6421 - 6422 - [[package]] 6423 - name = "zlib-rs" 6424 - version = "0.5.0" 6425 - source = "registry+https://github.com/rust-lang/crates.io-index" 6426 - checksum = "868b928d7949e09af2f6086dfc1e01936064cc7a819253bce650d4e2a2d63ba8" 6427 - 6428 - [[package]] 6429 - name = "zune-core" 6430 - version = "0.4.12" 6431 - source = "registry+https://github.com/rust-lang/crates.io-index" 6432 - checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" 6433 - 6434 - [[package]] 6435 - name = "zune-inflate" 6436 - version = "0.2.54" 6437 - source = "registry+https://github.com/rust-lang/crates.io-index" 6438 - checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" 6439 - dependencies = [ 6440 - "simd-adler32", 6441 - ] 6442 - 6443 - [[package]] 6444 - name = "zune-jpeg" 6445 - version = "0.4.14" 6446 - source = "registry+https://github.com/rust-lang/crates.io-index" 6447 - checksum = "99a5bab8d7dedf81405c4bb1f2b83ea057643d9cb28778cea9eecddeedd2e028" 6448 - dependencies = [ 6449 - "zune-core", 6450 - ]
+2 -2
vfl/Cargo.toml crates/vfl/Cargo.toml
··· 29 29 pollster = { version = "0.4.0", optional = true } 30 30 tegra_swizzle = { version = "0.4.0", optional = true } 31 31 texture2ddecoder = { version = "0.1.2", optional = true } 32 - wgpu = { version = "25", optional = true } 32 + # wgpu = { version = "25", optional = true } 33 33 futures-intrusive = { version = "0.5.0", optional = true } 34 34 35 35 # feat: gltf ··· 42 42 res = ["dep:image", "dep:tegra_swizzle", "dep:flate2"] 43 43 draw = [ 44 44 "res", 45 - "dep:wgpu", 45 + # "dep:wgpu", 46 46 "dep:futures-intrusive", 47 47 "dep:texture2ddecoder", 48 48 "dep:pollster",
vfl/src/charinfo/mod.rs crates/vfl/src/charinfo/mod.rs
+4 -1
vfl/src/charinfo/nx.rs crates/vfl/src/charinfo/nx.rs
··· 75 75 76 76 #[test] 77 77 fn mii_deser() -> R { 78 - let mut mii = File::open(concat!(env!("CARGO_MANIFEST_DIR"), "/../j0.charinfo"))?; 78 + let mut mii = File::open(concat!( 79 + env!("CARGO_WORKSPACE_DIR"), 80 + "/resources_here/j0.charinfo" 81 + ))?; 79 82 80 83 let mii = NxCharInfo::read(&mut mii)?; 81 84
+1 -1
vfl/src/color.rs crates/vfl/src/color.rs
··· 115 115 /// This function will give you color modulations for each needed texture or shape. 116 116 /// When a channel is not modulated, it will return [NaN, NaN, NaN, NaN] 117 117 /// EG: An "R" format texture does not need G&B modulation 118 - /// Ref: https://github.com/ariankordi/ffl/blob/97eecdf3688f92c4c95cecf5d6ab3e84c0ee42c0/src/FFLiModulate.cpp 118 + /// Ref: <https://github.com/ariankordi/ffl/blob/97eecdf3688f92c4c95cecf5d6ab3e84c0ee42c0/src/FFLiModulate.cpp> 119 119 #[allow(clippy::must_use_candidate)] 120 120 pub fn modulate(class: ColorModulated, char: &NxCharInfo) -> ModulationIntent { 121 121 use ModulationMode as M;
+18 -17
vfl/src/draw/faceline.rs crates/vfl/src/draw/faceline.rs
··· 1 - use super::wgpu_render::Vertex; 1 + use super::Vertex; 2 2 3 3 pub fn trivial_quad() -> (Vec<Vertex>, Vec<u32>) { 4 4 ( ··· 30 30 pub fn bgr_to_rgb([b, g, r, a]: [f32; 4]) -> [f32; 4] { 31 31 [r, g, b, a] 32 32 } 33 + 33 34 #[cfg(test)] 34 35 mod tests { 35 - use crate::charinfo; 36 - use crate::charinfo::nx::NxCharInfo; 37 - use crate::color::nx::modulate; 38 - use crate::draw::faceline::{bgr_to_rgb, trivial_quad}; 39 - use crate::draw::render_2d::Rendered2dShape; 40 - use crate::draw::render_3d::ProgramState; 41 - use crate::draw::wgpu_render::{HeadlessRenderer, Vertex, model_view_matrix, quad, texture}; 42 - use crate::res::shape::nx::{ResourceShape, SHAPE_MID_DAT}; 43 - use crate::res::tex::nx::{ResourceTexture, ResourceTextureFormat, TEXTURE_MID_SRGB_DAT}; 44 - use binrw::BinRead; 45 - use glam::{uvec2, vec3}; 46 - use nalgebra::Matrix4; 47 - use std::error::Error; 48 - use std::{fs::File, io::BufReader}; 49 - use wgpu::CommandEncoder; 36 + // use crate::charinfo; 37 + // use crate::charinfo::nx::NxCharInfo; 38 + // use crate::color::nx::modulate; 39 + // use crate::draw::faceline::{bgr_to_rgb, trivial_quad}; 40 + // use crate::draw::render_2d::Model2d; 41 + // use crate::draw::render_3d::ProgramState; 42 + // use crate::draw::wgpu_render::{HeadlessRenderer, Vertex, model_view_matrix, quad, texture}; 43 + // use crate::res::shape::nx::{ResourceShape, SHAPE_MID_DAT}; 44 + // use crate::res::tex::nx::{ResourceTexture, ResourceTextureFormat, TEXTURE_MID_SRGB_DAT}; 45 + // use binrw::BinRead; 46 + // use glam::{uvec2, vec3}; 47 + // use nalgebra::Matrix4; 48 + // use std::error::Error; 49 + // use std::{fs::File, io::BufReader}; 50 + // use wgpu::CommandEncoder; 50 51 51 - type R = Result<(), Box<dyn Error>>; 52 + // type R = Result<(), Box<dyn Error>>; 52 53 53 54 // #[test] 54 55 // fn faceline_makeup() -> R {
+6 -10
vfl/src/draw/mask.rs crates/vfl/src/draw/mask.rs
··· 80 80 } 81 81 82 82 impl MaskFaceParts { 83 - pub fn init_glasses( 84 - info: &NxCharInfo, 85 - resolution: f32, 86 - nose_translate: [f32; 3], 87 - ) -> [FacePart; 2] { 83 + pub fn init_glasses(info: &NxCharInfo, resolution: f32) -> [FacePart; 2] { 88 84 let resolution = resolution / 64.0; 89 85 90 86 let glass_y = TEX_EYE_BASE_Y + RFL_MAGIC_Y_OFFSET * TEX_SCALE_Y * f32::from(info.glass_y); ··· 226 222 227 223 #[cfg(test)] 228 224 mod tests { 229 - use crate::res::shape::nx::{ResourceShape, SHAPE_MID_DAT}; 230 - use binrw::BinRead; 231 - use std::error::Error; 232 - use std::{fs::File, io::BufReader}; 225 + // use crate::res::shape::nx::{ResourceShape, SHAPE_MID_DAT}; 226 + // use binrw::BinRead; 227 + // use std::error::Error; 228 + // use std::{fs::File, io::BufReader}; 233 229 234 - type R = Result<(), Box<dyn Error>>; 230 + // type R = Result<(), Box<dyn Error>>; 235 231 236 232 // #[test] 237 233 // fn mask_shape() -> R {
-12
vfl/src/draw/mod.rs
··· 1 - #[cfg(feature = "draw")] 2 - pub mod render_2d; 3 - #[cfg(feature = "draw")] 4 - pub mod render_3d; 5 - #[cfg(feature = "draw")] 6 - pub mod wgpu_render; 7 - 8 - pub mod faceline; 9 - pub mod mask; 10 - 11 - pub const TEX_SCALE_X: f32 = 0.889_614_64; 12 - pub const TEX_SCALE_Y: f32 = 0.927_667_5;
-315
vfl/src/draw/render_2d.rs
··· 1 - use bytemuck::cast_slice; 2 - use glam::vec3; 3 - use image::DynamicImage; 4 - use nalgebra::Matrix4; 5 - use wgpu::{ 6 - CommandEncoder, PipelineCompilationOptions, TexelCopyTextureInfo, TextureView, include_wgsl, 7 - util::DeviceExt, 8 - }; 9 - 10 - use crate::{ 11 - color::nx::{ModulationIntent, modulate}, 12 - res::tex::nx::ResourceTextureFormat, 13 - }; 14 - 15 - use super::{ 16 - faceline::trivial_quad, 17 - render_3d::ProgramState, 18 - wgpu_render::{TextureTransformUniform, Vertex}, 19 - }; 20 - 21 - type Color = [f32; 4]; 22 - 23 - const NON_REPLACEMENT: Color = [f32::NAN, f32::NAN, f32::NAN, f32::NAN]; 24 - #[derive(Debug)] 25 - pub struct Rendered2dShape { 26 - pub vertices: Vec<Vertex>, 27 - pub indices: Vec<u32>, 28 - pub tex: DynamicImage, 29 - pub mvp_matrix: Matrix4<f32>, 30 - pub modulation: ModulationIntent, 31 - pub opaque: Option<Color>, 32 - pub label: Option<String>, 33 - } 34 - 35 - impl Rendered2dShape { 36 - pub fn render_texture_trivial( 37 - rendered_texture: DynamicImage, 38 - modulation: ModulationIntent, 39 - opaque: Option<Color>, 40 - st: &mut impl ProgramState, 41 - texture_view: &TextureView, 42 - encoder: &mut CommandEncoder, 43 - label: Option<String>, 44 - ) { 45 - let (vertices, indices) = trivial_quad(); 46 - 47 - let mvp_matrix = { 48 - let scale = vec3(-2.0, -2.0, 1.0); 49 - let scale = nalgebra::Vector3::<f32>::from(Into::<mint::Vector3<f32>>::into(scale)); 50 - 51 - nalgebra::Matrix4::new_nonuniform_scaling(&scale) 52 - }; 53 - 54 - let rendered_2d_shape = Rendered2dShape { 55 - vertices, 56 - indices, 57 - tex: rendered_texture, 58 - mvp_matrix, 59 - modulation, 60 - opaque, 61 - label, 62 - }; 63 - 64 - rendered_2d_shape.render(st, texture_view, encoder); 65 - } 66 - 67 - #[allow(clippy::too_many_lines)] 68 - pub fn render( 69 - self, 70 - st: &mut impl ProgramState, 71 - texture_view: &TextureView, 72 - encoder: &mut CommandEncoder, 73 - ) { 74 - if let Some(ref label) = self.label { 75 - encoder.push_debug_group(&format!("Texture {label}")); 76 - } 77 - 78 - let vertex_buffer = st 79 - .device() 80 - .create_buffer_init(&wgpu::util::BufferInitDescriptor { 81 - label: Some("Vertex Buffer"), 82 - contents: cast_slice(&self.vertices), 83 - usage: wgpu::BufferUsages::VERTEX, 84 - }); 85 - 86 - let index_buffer = st 87 - .device() 88 - .create_buffer_init(&wgpu::util::BufferInitDescriptor { 89 - label: Some("Index Buffer"), 90 - contents: cast_slice(&self.indices), 91 - usage: wgpu::BufferUsages::INDEX, 92 - }); 93 - 94 - let shape_texture_rgba = self.tex.to_rgba8(); 95 - let shape_texture_dimensions = shape_texture_rgba.dimensions(); 96 - let shape_texture_size = wgpu::Extent3d { 97 - width: shape_texture_dimensions.0, 98 - height: shape_texture_dimensions.1, 99 - depth_or_array_layers: 1, 100 - }; 101 - let shape_diffuse_texture = st.device().create_texture(&wgpu::TextureDescriptor { 102 - size: shape_texture_size, 103 - mip_level_count: 1, 104 - sample_count: 1, 105 - dimension: wgpu::TextureDimension::D2, 106 - format: st.surface_fmt(), 107 - usage: wgpu::TextureUsages::TEXTURE_BINDING | wgpu::TextureUsages::COPY_DST, 108 - label: Some("diffuse_texture"), 109 - view_formats: &[st.surface_fmt()], 110 - }); 111 - 112 - st.queue().write_texture( 113 - TexelCopyTextureInfo { 114 - texture: &shape_diffuse_texture, 115 - mip_level: 0, 116 - origin: wgpu::Origin3d::ZERO, 117 - aspect: wgpu::TextureAspect::All, 118 - }, 119 - &shape_texture_rgba, 120 - wgpu::TexelCopyBufferLayout { 121 - offset: 0, 122 - bytes_per_row: Some(4 * shape_texture_dimensions.0), 123 - rows_per_image: Some(shape_texture_dimensions.1), 124 - }, 125 - shape_texture_size, 126 - ); 127 - 128 - let shape_diffuse_texture_view = 129 - shape_diffuse_texture.create_view(&wgpu::TextureViewDescriptor::default()); 130 - let shape_diffuse_sampler = st.device().create_sampler(&wgpu::SamplerDescriptor { 131 - address_mode_u: wgpu::AddressMode::ClampToEdge, 132 - address_mode_v: wgpu::AddressMode::ClampToEdge, 133 - address_mode_w: wgpu::AddressMode::ClampToEdge, 134 - mag_filter: wgpu::FilterMode::Linear, 135 - min_filter: wgpu::FilterMode::Nearest, 136 - mipmap_filter: wgpu::FilterMode::Nearest, 137 - ..Default::default() 138 - }); 139 - 140 - let texture_bind_group_layout = 141 - st.device() 142 - .create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { 143 - entries: &[ 144 - wgpu::BindGroupLayoutEntry { 145 - binding: 0, 146 - visibility: wgpu::ShaderStages::FRAGMENT, 147 - ty: wgpu::BindingType::Texture { 148 - multisampled: false, 149 - view_dimension: wgpu::TextureViewDimension::D2, 150 - sample_type: wgpu::TextureSampleType::Float { filterable: true }, 151 - }, 152 - count: None, 153 - }, 154 - wgpu::BindGroupLayoutEntry { 155 - binding: 1, 156 - visibility: wgpu::ShaderStages::FRAGMENT, 157 - ty: wgpu::BindingType::Sampler(wgpu::SamplerBindingType::Filtering), 158 - count: None, 159 - }, 160 - ], 161 - label: Some("texture_bind_group_layout"), 162 - }); 163 - 164 - let shape_diffuse_bind_group = st.device().create_bind_group(&wgpu::BindGroupDescriptor { 165 - layout: &texture_bind_group_layout, 166 - entries: &[ 167 - wgpu::BindGroupEntry { 168 - binding: 0, 169 - resource: wgpu::BindingResource::TextureView(&shape_diffuse_texture_view), 170 - }, 171 - wgpu::BindGroupEntry { 172 - binding: 1, 173 - resource: wgpu::BindingResource::Sampler(&shape_diffuse_sampler), 174 - }, 175 - ], 176 - label: Some("diffuse_bind_group"), 177 - }); 178 - 179 - let mvp_matrix = self.mvp_matrix.into(); 180 - let mvp_uniform = TextureTransformUniform { 181 - mvp_matrix, 182 - channel_replacements_r: self.modulation.channels[0], 183 - channel_replacements_g: self.modulation.channels[1], 184 - channel_replacements_b: self.modulation.channels[2], 185 - texture_type: (Into::<u8>::into(self.modulation.mode)).into(), 186 - pad: Default::default(), 187 - }; 188 - 189 - let mvp_buffer = st 190 - .device() 191 - .create_buffer_init(&wgpu::util::BufferInitDescriptor { 192 - label: Some("MvpMatrix Buffer"), 193 - contents: cast_slice(&[mvp_uniform]), 194 - usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST, 195 - }); 196 - 197 - let mvp_bind_group_layout = 198 - st.device() 199 - .create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { 200 - entries: &[wgpu::BindGroupLayoutEntry { 201 - binding: 0, 202 - visibility: wgpu::ShaderStages::VERTEX | wgpu::ShaderStages::FRAGMENT, 203 - ty: wgpu::BindingType::Buffer { 204 - ty: wgpu::BufferBindingType::Uniform, 205 - has_dynamic_offset: false, 206 - min_binding_size: None, 207 - }, 208 - count: None, 209 - }], 210 - label: Some("mvp_bind_group_layout"), 211 - }); 212 - 213 - let mvp_bind_group = st.device().create_bind_group(&wgpu::BindGroupDescriptor { 214 - layout: &mvp_bind_group_layout, 215 - entries: &[wgpu::BindGroupEntry { 216 - binding: 0, 217 - resource: mvp_buffer.as_entire_binding(), 218 - }], 219 - label: Some("mvp_bind_group"), 220 - }); 221 - 222 - let shader_module = st 223 - .device() 224 - .create_shader_module(include_wgsl!("shader.wgsl")); 225 - let render_pipeline_layout = 226 - st.device() 227 - .create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { 228 - label: Some("Render Pipeline Layout"), 229 - bind_group_layouts: &[&texture_bind_group_layout, &mvp_bind_group_layout], 230 - push_constant_ranges: &[], 231 - }); 232 - let render_pipeline = st 233 - .device() 234 - .create_render_pipeline(&wgpu::RenderPipelineDescriptor { 235 - label: Some("Render Pipeline"), 236 - layout: Some(&render_pipeline_layout), 237 - vertex: wgpu::VertexState { 238 - module: &shader_module, 239 - entry_point: Some("vs_main"), 240 - buffers: &[Vertex::desc()], 241 - compilation_options: PipelineCompilationOptions::default(), 242 - }, 243 - fragment: Some(wgpu::FragmentState { 244 - module: &shader_module, 245 - entry_point: Some("fs_main"), 246 - targets: &[Some(wgpu::ColorTargetState { 247 - format: st.surface_fmt(), 248 - blend: Some(wgpu::BlendState::ALPHA_BLENDING), 249 - write_mask: wgpu::ColorWrites::ALL, 250 - })], 251 - compilation_options: PipelineCompilationOptions::default(), 252 - }), 253 - primitive: wgpu::PrimitiveState { 254 - topology: wgpu::PrimitiveTopology::TriangleList, 255 - strip_index_format: None, 256 - front_face: wgpu::FrontFace::Ccw, 257 - cull_mode: None, 258 - // Setting this to anything other than Fill requires Features::NON_FILL_POLYGON_MODE 259 - polygon_mode: wgpu::PolygonMode::Fill, 260 - // Requires Features::DEPTH_CLIP_CONTROL 261 - unclipped_depth: false, 262 - // Requires Features::CONSERVATIVE_RASTERIZATION 263 - conservative: false, 264 - }, 265 - depth_stencil: None, 266 - multisample: wgpu::MultisampleState { 267 - count: 1, 268 - mask: !0, 269 - alpha_to_coverage_enabled: false, 270 - }, 271 - // If the pipeline will be used with a multiview render pass, this 272 - // indicates how many array layers the attachments will have. 273 - multiview: None, 274 - cache: None, 275 - }); 276 - 277 - { 278 - let render_pass_desc = wgpu::RenderPassDescriptor { 279 - label: Some("Render Pass"), 280 - color_attachments: &[Some(wgpu::RenderPassColorAttachment { 281 - view: texture_view, 282 - resolve_target: None, 283 - ops: wgpu::Operations { 284 - load: match self.opaque { 285 - Some([r, g, b, a]) => wgpu::LoadOp::Clear(wgpu::Color { 286 - r: r.into(), 287 - g: g.into(), 288 - b: b.into(), 289 - a: a.into(), 290 - }), 291 - None => wgpu::LoadOp::Load, 292 - }, 293 - store: wgpu::StoreOp::Store, 294 - }, 295 - })], 296 - depth_stencil_attachment: None, 297 - occlusion_query_set: None, 298 - timestamp_writes: None, 299 - }; 300 - let mut render_pass = encoder.begin_render_pass(&render_pass_desc); 301 - 302 - render_pass.set_pipeline(&render_pipeline); 303 - render_pass.set_bind_group(0, &shape_diffuse_bind_group, &[]); 304 - render_pass.set_bind_group(1, &mvp_bind_group, &[]); 305 - render_pass.set_vertex_buffer(0, vertex_buffer.slice(..)); 306 - render_pass.set_index_buffer(index_buffer.slice(..), wgpu::IndexFormat::Uint32); 307 - 308 - render_pass.draw_indexed(0..self.indices.len().try_into().unwrap(), 0, 0..1); 309 - } 310 - 311 - if self.label.is_some() { 312 - encoder.pop_debug_group(); 313 - } 314 - } 315 - }
-250
vfl/src/draw/render_3d.rs
··· 1 - use bytemuck::cast_slice; 2 - use glam::{Vec3, Vec4}; 3 - use wgpu::{ 4 - BlendState, CommandEncoder, PipelineCompilationOptions, TextureView, include_wgsl, 5 - util::DeviceExt, 6 - }; 7 - 8 - use super::wgpu_render::{Vertex, texture}; 9 - 10 - #[repr(C)] 11 - #[derive(Debug, Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)] 12 - struct CharShapeUniform { 13 - diffuse_color: [f32; 4], 14 - position: [f32; 3], 15 - _pad: f32, 16 - scale: [f32; 3], 17 - _pad2: f32, 18 - } 19 - 20 - pub trait ProgramState { 21 - fn device(&self) -> wgpu::Device; 22 - fn queue(&self) -> wgpu::Queue; 23 - fn camera_bgl(&self) -> &wgpu::BindGroupLayout; 24 - fn camera_bg(&self) -> &wgpu::BindGroup; 25 - fn surface_fmt(&self) -> wgpu::TextureFormat; 26 - fn depth_texture(&self) -> &texture::Texture; 27 - } 28 - 29 - #[derive(Default, Debug)] 30 - pub struct Rendered3dShape { 31 - pub vertices: Vec<Vertex>, 32 - pub indices: Vec<u32>, 33 - pub color: Vec4, 34 - pub texture: Option<crate::draw::wgpu_render::texture::Texture>, 35 - pub position: Vec3, 36 - pub scale: Vec3, 37 - } 38 - 39 - impl Rendered3dShape { 40 - #[allow(clippy::too_many_lines)] 41 - pub fn render( 42 - &mut self, 43 - st: &mut impl ProgramState, 44 - texture_view: &TextureView, 45 - encoder: &mut CommandEncoder, 46 - ) { 47 - let vertex_buffer = st 48 - .device() 49 - .create_buffer_init(&wgpu::util::BufferInitDescriptor { 50 - label: Some("Vertex Buffer"), 51 - contents: cast_slice(&self.vertices), 52 - usage: wgpu::BufferUsages::VERTEX, 53 - }); 54 - 55 - let index_buffer = st 56 - .device() 57 - .create_buffer_init(&wgpu::util::BufferInitDescriptor { 58 - label: Some("Index Buffer"), 59 - contents: cast_slice(&self.indices), 60 - usage: wgpu::BufferUsages::INDEX, 61 - }); 62 - 63 - let char_shape_uniform = CharShapeUniform { 64 - diffuse_color: self.color.into(), 65 - position: self.position.into(), 66 - _pad: 0.0, 67 - scale: self.scale.into(), 68 - _pad2: 0.0, 69 - }; 70 - let char_shape_buffer = st 71 - .device() 72 - .create_buffer_init(&wgpu::util::BufferInitDescriptor { 73 - label: Some("Cs Buffer"), 74 - contents: cast_slice(&[char_shape_uniform]), 75 - usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST, 76 - }); 77 - let char_shape_bind_group_layout = 78 - st.device() 79 - .create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { 80 - entries: &[wgpu::BindGroupLayoutEntry { 81 - binding: 0, 82 - visibility: wgpu::ShaderStages::VERTEX | wgpu::ShaderStages::FRAGMENT, 83 - ty: wgpu::BindingType::Buffer { 84 - ty: wgpu::BufferBindingType::Uniform, 85 - has_dynamic_offset: false, 86 - min_binding_size: None, 87 - }, 88 - count: None, 89 - }], 90 - label: Some("cs_group_layout"), 91 - }); 92 - 93 - let char_shape_bind_group = st.device().create_bind_group(&wgpu::BindGroupDescriptor { 94 - layout: &char_shape_bind_group_layout, 95 - entries: &[wgpu::BindGroupEntry { 96 - binding: 0, 97 - resource: char_shape_buffer.as_entire_binding(), 98 - }], 99 - label: Some("cs_bind_group"), 100 - }); 101 - 102 - let mut bind_group_layouts = vec![st.camera_bgl(), &char_shape_bind_group_layout]; 103 - 104 - let projected_texture_bind_group_layout = 105 - st.device() 106 - .create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { 107 - entries: &[ 108 - wgpu::BindGroupLayoutEntry { 109 - binding: 0, 110 - visibility: wgpu::ShaderStages::FRAGMENT, 111 - ty: wgpu::BindingType::Texture { 112 - multisampled: false, 113 - view_dimension: wgpu::TextureViewDimension::D2, 114 - sample_type: wgpu::TextureSampleType::Float { filterable: true }, 115 - }, 116 - count: None, 117 - }, 118 - wgpu::BindGroupLayoutEntry { 119 - binding: 1, 120 - visibility: wgpu::ShaderStages::FRAGMENT, 121 - ty: wgpu::BindingType::Sampler(wgpu::SamplerBindingType::Filtering), 122 - count: None, 123 - }, 124 - ], 125 - label: Some("texture_bind_group_layout"), 126 - }); 127 - if self.texture.is_some() { 128 - bind_group_layouts.push(&projected_texture_bind_group_layout); 129 - } 130 - 131 - let shader_module = st 132 - .device() 133 - .create_shader_module(include_wgsl!("shader_3d.wgsl")); 134 - 135 - // Optional projected texture 136 - let projected_texture_bind_group = self.texture.as_ref().map(|texture| { 137 - st.device().create_bind_group(&wgpu::BindGroupDescriptor { 138 - layout: &projected_texture_bind_group_layout, 139 - entries: &[ 140 - wgpu::BindGroupEntry { 141 - binding: 0, 142 - resource: wgpu::BindingResource::TextureView(&texture.view), 143 - }, 144 - wgpu::BindGroupEntry { 145 - binding: 1, 146 - resource: wgpu::BindingResource::Sampler(&texture.sampler), 147 - }, 148 - ], 149 - label: Some("diffuse_bind_group"), 150 - }) 151 - }); 152 - 153 - let render_pipeline_layout = 154 - st.device() 155 - .create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { 156 - label: Some("Render Pipeline Layout"), 157 - bind_group_layouts: &bind_group_layouts, 158 - push_constant_ranges: &[], 159 - }); 160 - let render_pipeline = st 161 - .device() 162 - .create_render_pipeline(&wgpu::RenderPipelineDescriptor { 163 - label: Some("Render Pipeline"), 164 - layout: Some(&render_pipeline_layout), 165 - vertex: wgpu::VertexState { 166 - module: &shader_module, 167 - entry_point: Some("vs_main"), 168 - buffers: &[Vertex::desc()], 169 - compilation_options: PipelineCompilationOptions::default(), 170 - }, 171 - fragment: Some(wgpu::FragmentState { 172 - module: &shader_module, 173 - entry_point: if self.texture.is_some() { 174 - Some("fs_main") 175 - } else { 176 - Some("fs_color_only") 177 - }, 178 - targets: &[Some(wgpu::ColorTargetState { 179 - format: st.surface_fmt().add_srgb_suffix(), 180 - blend: Some(BlendState::ALPHA_BLENDING), 181 - write_mask: wgpu::ColorWrites::ALL, 182 - })], 183 - compilation_options: PipelineCompilationOptions::default(), 184 - }), 185 - primitive: wgpu::PrimitiveState { 186 - topology: wgpu::PrimitiveTopology::TriangleList, 187 - strip_index_format: None, 188 - front_face: wgpu::FrontFace::Ccw, 189 - cull_mode: None, // TODO toggle 190 - // Setting this to anything other than Fill requires Features::NON_FILL_POLYGON_MODE 191 - polygon_mode: wgpu::PolygonMode::Fill, 192 - // Requires Features::DEPTH_CLIP_CONTROL 193 - unclipped_depth: false, 194 - // Requires Features::CONSERVATIVE_RASTERIZATION 195 - conservative: false, 196 - }, 197 - depth_stencil: Some(wgpu::DepthStencilState { 198 - format: texture::Texture::DEPTH_FORMAT, 199 - depth_write_enabled: true, 200 - depth_compare: wgpu::CompareFunction::Less, // 1. 201 - stencil: wgpu::StencilState::default(), // 2. 202 - bias: wgpu::DepthBiasState::default(), 203 - }), 204 - multisample: wgpu::MultisampleState { 205 - count: 1, 206 - mask: !0, 207 - alpha_to_coverage_enabled: false, 208 - }, 209 - // If the pipeline will be used with a multiview render pass, this 210 - // indicates how many array layers the attachments will have. 211 - multiview: None, 212 - cache: None, 213 - }); 214 - 215 - // Scoped lifetime to drop the render pass 216 - { 217 - let render_pass_desc = wgpu::RenderPassDescriptor { 218 - label: Some("Render Pass"), 219 - color_attachments: &[Some(wgpu::RenderPassColorAttachment { 220 - view: texture_view, 221 - resolve_target: None, 222 - ops: wgpu::Operations { 223 - load: wgpu::LoadOp::Load, 224 - store: wgpu::StoreOp::Store, 225 - }, 226 - })], 227 - depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment { 228 - view: &st.depth_texture().view, 229 - depth_ops: Some(wgpu::Operations { 230 - load: wgpu::LoadOp::Load, 231 - store: wgpu::StoreOp::Store, 232 - }), 233 - stencil_ops: None, 234 - }), 235 - occlusion_query_set: None, 236 - timestamp_writes: None, 237 - }; 238 - let mut render_pass = encoder.begin_render_pass(&render_pass_desc); 239 - 240 - render_pass.set_pipeline(&render_pipeline); 241 - render_pass.set_bind_group(0, st.camera_bg(), &[]); 242 - render_pass.set_bind_group(1, &char_shape_bind_group, &[]); 243 - render_pass.set_bind_group(2, &projected_texture_bind_group, &[]); 244 - render_pass.set_vertex_buffer(0, vertex_buffer.slice(..)); 245 - render_pass.set_index_buffer(index_buffer.slice(..), wgpu::IndexFormat::Uint32); 246 - 247 - render_pass.draw_indexed(0..self.indices.len().try_into().unwrap(), 0, 0..1); 248 - } 249 - } 250 - }
vfl/src/draw/shader.wgsl crates/vee_wgpu/src/shader.wgsl
vfl/src/draw/shader_3d.wgsl crates/vee_wgpu/src/shader_3d.wgsl
-1203
vfl/src/draw/wgpu_render.rs
··· 1 - use super::TEX_SCALE_X; 2 - use super::TEX_SCALE_Y; 3 - use super::mask::{FacePart, ImageOrigin, MaskFaceParts}; 4 - use super::render_2d::Rendered2dShape; 5 - use super::render_3d::ProgramState; 6 - use super::render_3d::Rendered3dShape; 7 - use crate::{ 8 - charinfo::nx::NxCharInfo, 9 - color::{ 10 - cafe::{ 11 - EYE_COLOR_B, EYE_COLOR_G, EYE_COLOR_R, GLASS_COLOR_R, HAIR_COLOR, MOUTH_COLOR_B, 12 - MOUTH_COLOR_G, MOUTH_COLOR_R, 13 - }, 14 - nx::{ColorModulated, modulate}, 15 - }, 16 - res::shape::nx::ResourceShape, 17 - res::tex::nx::{ResourceTexture, ResourceTextureFormat, TextureElement}, 18 - }; 19 - use binrw::BinRead; 20 - use camera::Camera; 21 - use camera::CameraUniform; 22 - use glam::Vec3; 23 - use glam::{UVec2, uvec2, vec3}; 24 - use image::{DynamicImage, RgbaImage}; 25 - use nalgebra::Matrix4; 26 - use std::f32::consts::FRAC_PI_2; 27 - use std::f32::consts::PI; 28 - use std::{error::Error, fs::File, io::BufReader}; 29 - use wgpu::CommandEncoder; 30 - use wgpu::{DeviceDescriptor, TexelCopyTextureInfo, util::DeviceExt}; 31 - 32 - pub const FACE_OUTPUT_SIZE: u16 = 512; 33 - pub const SHADER: &str = include_str!("./shader.wgsl"); 34 - pub use bytemuck::cast_slice; 35 - 36 - #[repr(C)] 37 - #[derive(Copy, Clone, Debug, bytemuck::Pod, bytemuck::Zeroable)] 38 - pub struct Vertex { 39 - pub position: [f32; 3], 40 - pub tex_coords: [f32; 2], 41 - pub normal: [f32; 3], 42 - } 43 - 44 - impl Vertex { 45 - const ATTRIBS: [wgpu::VertexAttribute; 3] = 46 - wgpu::vertex_attr_array![0 => Float32x3, 1 => Float32x2, 2 => Float32x3]; 47 - 48 - pub fn desc() -> wgpu::VertexBufferLayout<'static> { 49 - use std::mem; 50 - wgpu::VertexBufferLayout { 51 - array_stride: mem::size_of::<Vertex>() as wgpu::BufferAddress, 52 - step_mode: wgpu::VertexStepMode::Vertex, 53 - attributes: &Self::ATTRIBS, 54 - } 55 - } 56 - } 57 - 58 - #[repr(C)] 59 - #[derive(Debug, Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)] 60 - pub struct TextureTransformUniform { 61 - pub mvp_matrix: [[f32; 4]; 4], 62 - pub channel_replacements_r: [f32; 4], 63 - pub channel_replacements_g: [f32; 4], 64 - pub channel_replacements_b: [f32; 4], 65 - pub texture_type: u32, 66 - pub pad: [u32; 3], 67 - } 68 - 69 - const NON_REPLACEMENT: [f32; 4] = [f32::NAN, f32::NAN, f32::NAN, f32::NAN]; 70 - // #[derive(Debug)] 71 - // #[deprecated] 72 - // pub struct RenderShape { 73 - // pub vertices: Vec<Vertex>, 74 - // pub indices: Vec<u32>, 75 - // pub tex: DynamicImage, 76 - // pub mvp_matrix: Matrix4<f32>, 77 - // pub texture_type: ResourceTextureFormat, 78 - // pub channel_replacements: [[f32; 4]; 3], 79 - // } 80 - 81 - pub struct RenderContext { 82 - pub size: UVec2, 83 - pub shape: Vec<Rendered2dShape>, 84 - } 85 - impl RenderContext { 86 - pub fn from_shapes(shape: Vec<Rendered2dShape>) -> RenderContext { 87 - RenderContext { 88 - size: uvec2(FACE_OUTPUT_SIZE.into(), FACE_OUTPUT_SIZE.into()), 89 - shape, 90 - } 91 - } 92 - } 93 - 94 - impl RenderContext { 95 - #[allow(clippy::too_many_lines)] 96 - pub fn new( 97 - char: &NxCharInfo, 98 - res_texture: &ResourceTexture, 99 - res_shape: &ResourceShape, 100 - file_texture: &Vec<u8>, 101 - ) -> Result<Self, Box<dyn Error>> { 102 - let mask = MaskFaceParts::init(char, 256.0); 103 - 104 - let mut make_shape = 105 - |part: FacePart, modulated: ColorModulated, tex_data: TextureElement| { 106 - let (vertices, indices, mtx) = quad( 107 - part.x, 108 - part.y, 109 - part.width, 110 - part.height, 111 - part.angle_deg, 112 - part.origin, 113 - 256.0, 114 - ); 115 - 116 - let tex = tex_data.get_image(file_texture).unwrap().unwrap(); 117 - 118 - Rendered2dShape { 119 - vertices, 120 - indices, 121 - tex: image::DynamicImage::ImageRgba8(tex), 122 - mvp_matrix: mtx, 123 - modulation: modulate(modulated, char), 124 - opaque: None, 125 - label: Some(format!("{modulated:?}")), 126 - } 127 - }; 128 - 129 - let left_eye = make_shape( 130 - mask.eye[0], 131 - ColorModulated::Eye, 132 - res_texture.eye[char.eye_type as usize], 133 - ); 134 - let right_eye = make_shape( 135 - mask.eye[1], 136 - ColorModulated::Eye, 137 - res_texture.eye[char.eye_type as usize], 138 - ); 139 - 140 - let left_brow = make_shape( 141 - mask.eyebrow[0], 142 - ColorModulated::Eyebrow, 143 - res_texture.eyebrow[char.eyebrow_type as usize], 144 - ); 145 - let right_brow = make_shape( 146 - mask.eyebrow[1], 147 - ColorModulated::Eyebrow, 148 - res_texture.eyebrow[char.eyebrow_type as usize], 149 - ); 150 - 151 - let mouth = make_shape( 152 - mask.mouth, 153 - ColorModulated::Mouth, 154 - res_texture.mouth[char.mouth_type as usize], 155 - ); 156 - 157 - Ok(RenderContext { 158 - size: uvec2(FACE_OUTPUT_SIZE.into(), FACE_OUTPUT_SIZE.into()), 159 - shape: vec![left_eye, right_eye, left_brow, right_brow, mouth], 160 - }) 161 - } 162 - 163 - #[allow(clippy::too_many_lines)] 164 - pub fn new_faceline( 165 - char: &NxCharInfo, 166 - res_texture: &ResourceTexture, 167 - res_shape: &ResourceShape, 168 - file_texture: &Vec<u8>, 169 - ) -> Result<Self, Box<dyn Error>> { 170 - let mask = MaskFaceParts::init(char, 256.0); 171 - let makeup = char.faceline_make; 172 - 173 - let mut make_shape = 174 - |part: FacePart, modulated: ColorModulated, tex_data: TextureElement| { 175 - let (vertices, indices, mtx) = quad( 176 - part.x, 177 - part.y, 178 - part.width, 179 - part.height, 180 - part.angle_deg, 181 - part.origin, 182 - 256.0, 183 - ); 184 - 185 - let tex = tex_data.get_image(file_texture).unwrap().unwrap(); 186 - 187 - Rendered2dShape { 188 - vertices, 189 - indices, 190 - tex: image::DynamicImage::ImageRgba8(tex), 191 - mvp_matrix: mtx, 192 - modulation: modulate(modulated, char), 193 - opaque: None, 194 - label: Some(format!("{modulated:?}")), 195 - } 196 - }; 197 - 198 - let mouth = make_shape( 199 - mask.mouth, 200 - ColorModulated::Mouth, 201 - res_texture.mouth[char.mouth_type as usize], 202 - ); 203 - 204 - Ok(RenderContext { 205 - size: uvec2(FACE_OUTPUT_SIZE.into(), FACE_OUTPUT_SIZE.into()), 206 - shape: vec![mouth], 207 - }) 208 - } 209 - 210 - pub fn new_glasses( 211 - char: &NxCharInfo, 212 - res_texture: &ResourceTexture, 213 - res_shape: &ResourceShape, 214 - file_texture: &Vec<u8>, 215 - ) -> Result<Self, Box<dyn Error>> { 216 - let nose_translate = 217 - res_shape.face_line_transform[char.faceline_type as usize].nose_translate; 218 - 219 - let glasses = dbg!(MaskFaceParts::init_glasses(char, 256.0, nose_translate)); 220 - 221 - // let mask = FaceParts::init(&char, 256.0); 222 - // let part = mask[0]; 223 - let tex_data = res_texture.glass[char.glass_type as usize]; 224 - let mut glass_l = glasses[0]; 225 - 226 - let (vertices, indices, mtx) = quad( 227 - glass_l.x, 228 - glass_l.y, 229 - glass_l.width, 230 - glass_l.height, 231 - glass_l.angle_deg, 232 - glass_l.origin, 233 - 256.0, 234 - ); 235 - 236 - let tex = tex_data.get_image(file_texture)?.unwrap(); 237 - 238 - let glass_l_render_shape = Rendered2dShape { 239 - vertices, 240 - indices, 241 - tex: image::DynamicImage::ImageRgba8(tex.clone()), 242 - mvp_matrix: mtx, 243 - modulation: modulate(ColorModulated::Glass, &char), 244 - opaque: None, 245 - label: Some("Glass L".to_owned()), 246 - }; 247 - 248 - let glass_r = glasses[1]; 249 - 250 - let (vertices, indices, mtx) = quad( 251 - glass_r.x, 252 - glass_r.y, 253 - glass_r.width, 254 - glass_r.height, 255 - glass_r.angle_deg, 256 - glass_r.origin, 257 - 256.0, 258 - ); 259 - 260 - let glass_r_render_shape = Rendered2dShape { 261 - vertices, 262 - indices, 263 - tex: image::DynamicImage::ImageRgba8(tex), 264 - mvp_matrix: mtx, 265 - modulation: modulate(ColorModulated::Glass, &char), 266 - opaque: None, 267 - label: Some("Glass R".to_owned()), 268 - }; 269 - 270 - Ok(RenderContext { 271 - size: uvec2(512, 256), 272 - shape: vec![glass_l_render_shape, glass_r_render_shape], 273 - }) 274 - } 275 - } 276 - 277 - pub fn model_view_matrix( 278 - translation: mint::Vector3<f32>, 279 - scale: mint::Vector3<f32>, 280 - rot_z: f32, 281 - ) -> nalgebra::Matrix4<f32> { 282 - let mut scale = nalgebra::Vector3::<f32>::from(scale); 283 - let translation = nalgebra::Vector3::<f32>::from(translation); 284 - 285 - let mut mtx = nalgebra::Matrix4::identity(); 286 - mtx.append_nonuniform_scaling_mut(&scale); 287 - mtx *= nalgebra::Rotation3::from_euler_angles(0.0, 0.0, rot_z.to_radians()).to_homogeneous(); 288 - mtx.append_nonuniform_scaling_mut(&nalgebra::Vector3::new(TEX_SCALE_X, TEX_SCALE_Y, 1.0)); 289 - mtx.append_translation_mut(&translation); 290 - 291 - mtx 292 - } 293 - 294 - fn v2(x: f32, y: f32) -> [f32; 3] { 295 - [x, y, 0.0] 296 - } 297 - 298 - // https://github.com/SMGCommunity/Petari/blob/6e9ae741a99bb32e6ffbb230a88c976f539dde70/src/RVLFaceLib/RFL_MakeTex.c#L817 299 - pub fn quad( 300 - x: f32, 301 - y: f32, 302 - width: f32, 303 - height: f32, 304 - rot_z: f32, 305 - origin: ImageOrigin, 306 - resolution: f32, 307 - ) -> (Vec<Vertex>, Vec<u32>, nalgebra::Matrix4<f32>) { 308 - // Mtx rot; 309 - // Mtx pos; 310 - // f32 baseX; 311 - // s16 s0; 312 - // s16 s1; 313 - let base_x: f32; 314 - let s0: f32; 315 - let s1: f32; 316 - 317 - let mv_mtx = model_view_matrix( 318 - vec3(x, resolution - y, 0.0).into(), 319 - vec3(width, height, 1.0).into(), 320 - rot_z, 321 - ); 322 - 323 - let p_mtx = Matrix4::new_orthographic(0.0, resolution, 0.0, resolution, -200.0, 200.0); 324 - let mut mvp_mtx = p_mtx * mv_mtx; 325 - 326 - *mvp_mtx.get_mut((1, 1)).unwrap() *= -1.0; 327 - 328 - match origin { 329 - ImageOrigin::Center => { 330 - base_x = -0.5; 331 - s0 = 1.0; 332 - s1 = 0.0; 333 - } 334 - ImageOrigin::Right => { 335 - base_x = -1.0; 336 - s0 = 1.0; 337 - s1 = 0.0; 338 - } 339 - ImageOrigin::Left => { 340 - base_x = 0.0; 341 - s0 = 0.0; 342 - s1 = 1.0; 343 - } 344 - ImageOrigin::Ignore => { 345 - base_x = 0.0; 346 - s0 = 0.0; 347 - s1 = 1.0; 348 - } 349 - } 350 - 351 - ( 352 - vec![ 353 - Vertex { 354 - position: v2(1.0 + base_x, -0.5), 355 - tex_coords: [s0, 0.0], 356 - normal: [0.0, 0.0, 0.0], 357 - }, 358 - Vertex { 359 - position: v2(1.0 + base_x, 0.5), 360 - tex_coords: [s0, 1.0], 361 - normal: [0.0, 0.0, 0.0], 362 - }, 363 - Vertex { 364 - position: v2(base_x, 0.5), 365 - tex_coords: [s1, 1.0], 366 - normal: [0.0, 0.0, 0.0], 367 - }, 368 - Vertex { 369 - position: v2(base_x, -0.5), 370 - tex_coords: [s1, 0.0], 371 - normal: [0.0, 0.0, 0.0], 372 - }, 373 - ], 374 - vec![0, 1, 2, 0, 2, 3], 375 - mvp_mtx, 376 - ) 377 - } 378 - 379 - pub struct HeadlessRenderer { 380 - device: wgpu::Device, 381 - queue: wgpu::Queue, 382 - camera_bgl: wgpu::BindGroupLayout, 383 - camera_bg: wgpu::BindGroup, 384 - surface_fmt: wgpu::TextureFormat, 385 - depth_texture: texture::Texture, 386 - } 387 - 388 - impl ProgramState for HeadlessRenderer { 389 - fn device(&self) -> wgpu::Device { 390 - self.device.clone() 391 - } 392 - 393 - fn queue(&self) -> wgpu::Queue { 394 - self.queue.clone() 395 - } 396 - 397 - fn camera_bgl(&self) -> &wgpu::BindGroupLayout { 398 - &self.camera_bgl 399 - } 400 - 401 - fn camera_bg(&self) -> &wgpu::BindGroup { 402 - &self.camera_bg 403 - } 404 - 405 - fn surface_fmt(&self) -> wgpu::TextureFormat { 406 - self.surface_fmt 407 - } 408 - 409 - fn depth_texture(&self) -> &texture::Texture { 410 - &self.depth_texture 411 - } 412 - } 413 - 414 - impl Default for HeadlessRenderer { 415 - fn default() -> HeadlessRenderer { 416 - HeadlessRenderer::new() 417 - } 418 - } 419 - impl HeadlessRenderer { 420 - pub fn new() -> HeadlessRenderer { 421 - pollster::block_on(HeadlessRenderer::async_new()) 422 - } 423 - async fn async_new() -> HeadlessRenderer { 424 - const SIZE: UVec2 = uvec2(512, 512); 425 - let instance = wgpu::Instance::new(&wgpu::InstanceDescriptor { 426 - backends: wgpu::Backends::all(), 427 - ..Default::default() 428 - }); 429 - let adapter = instance 430 - .request_adapter(&wgpu::RequestAdapterOptions { 431 - power_preference: wgpu::PowerPreference::default(), 432 - compatible_surface: None, 433 - force_fallback_adapter: false, 434 - }) 435 - .await 436 - .unwrap(); 437 - let (device, queue) = adapter 438 - .request_device(&DeviceDescriptor::default()) 439 - .await 440 - .unwrap(); 441 - 442 - // let surface = instance.create_surface(window.clone()).unwrap(); 443 - // let cap = surface.get_capabilities(&adapter); 444 - // let surface_fmt = cap.formats[0]; 445 - let surface_fmt = wgpu::TextureFormat::Bgra8Unorm; 446 - 447 - let depth_texture = texture::Texture::create_depth_texture(&device, &SIZE, "depth_texture"); 448 - 449 - let camera = Camera { 450 - eye: (0.0, 25.0, 100.0).into(), 451 - target: (0.0, 25.0, 0.0).into(), 452 - up: Vec3::Y, 453 - aspect: SIZE.x as f32 / SIZE.y as f32, 454 - fov_y_radians: FRAC_PI_2, 455 - znear: 0.1, 456 - zfar: 10000.0, 457 - }; 458 - 459 - let mut camera_uniform = CameraUniform::new(); 460 - camera_uniform.update_view_proj(&camera); 461 - 462 - let camera_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { 463 - label: Some("Camera Buffer"), 464 - contents: bytemuck::cast_slice(&[camera_uniform]), 465 - usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST, 466 - }); 467 - 468 - let camera_bgl = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { 469 - entries: &[wgpu::BindGroupLayoutEntry { 470 - binding: 0, 471 - visibility: wgpu::ShaderStages::VERTEX, 472 - ty: wgpu::BindingType::Buffer { 473 - ty: wgpu::BufferBindingType::Uniform, 474 - has_dynamic_offset: false, 475 - min_binding_size: None, 476 - }, 477 - count: None, 478 - }], 479 - label: Some("camera_bind_group_layout"), 480 - }); 481 - 482 - let camera_bg = device.create_bind_group(&wgpu::BindGroupDescriptor { 483 - layout: &camera_bgl, 484 - entries: &[wgpu::BindGroupEntry { 485 - binding: 0, 486 - resource: camera_buffer.as_entire_binding(), 487 - }], 488 - label: Some("camera_bind_group"), 489 - }); 490 - 491 - HeadlessRenderer { 492 - device, 493 - queue, 494 - camera_bgl, 495 - camera_bg, 496 - surface_fmt, 497 - depth_texture, 498 - } 499 - } 500 - 501 - pub fn output_texture( 502 - &mut self, 503 - texture: &texture::Texture, 504 - mut encoder: CommandEncoder, 505 - ) -> DynamicImage { 506 - pollster::block_on(async { 507 - let u32_size = std::mem::size_of::<u32>() as u32; 508 - let output_buffer_size = wgpu::BufferAddress::from( 509 - u32_size * texture.texture.size().width * texture.texture.size().height, 510 - ); 511 - let output_buffer_desc = wgpu::BufferDescriptor { 512 - size: output_buffer_size, 513 - usage: wgpu::BufferUsages::COPY_DST 514 - // this tells wpgu that we want to read this buffer from the cpu 515 - | wgpu::BufferUsages::MAP_READ, 516 - label: None, 517 - mapped_at_creation: false, 518 - }; 519 - let output_buffer = self.device.create_buffer(&output_buffer_desc); 520 - 521 - encoder.copy_texture_to_buffer( 522 - wgpu::TexelCopyTextureInfo { 523 - aspect: wgpu::TextureAspect::All, 524 - texture: &texture.texture, 525 - mip_level: 0, 526 - origin: wgpu::Origin3d::ZERO, 527 - }, 528 - wgpu::TexelCopyBufferInfo { 529 - buffer: &output_buffer, 530 - layout: wgpu::TexelCopyBufferLayout { 531 - offset: 0, 532 - bytes_per_row: Some(u32_size * texture.texture.size().width), 533 - rows_per_image: Some(texture.texture.size().height), 534 - }, 535 - }, 536 - texture.texture.size(), 537 - ); 538 - 539 - self.queue.submit(Some(encoder.finish())); 540 - 541 - let mut image = None; 542 - // We need to scope the mapping variables so that we can 543 - // unmap the buffer 544 - { 545 - let buffer_slice = output_buffer.slice(..); 546 - 547 - // NOTE: We have to create the mapping THEN device.poll() before await 548 - // the future. Otherwise the application will freeze. 549 - let (tx, rx) = futures_intrusive::channel::shared::oneshot_channel(); 550 - buffer_slice.map_async(wgpu::MapMode::Read, move |result| { 551 - tx.send(result).unwrap(); 552 - }); 553 - self.device.poll(wgpu::PollType::Wait).unwrap(); 554 - rx.receive().await.unwrap().unwrap(); 555 - 556 - let data = &buffer_slice.get_mapped_range()[..]; 557 - 558 - use image::{ImageBuffer, Rgba}; 559 - let buffer: RgbaImage = ImageBuffer::<Rgba<u8>, _>::from_raw( 560 - texture.texture.size().width, 561 - texture.texture.size().height, 562 - data.to_owned(), 563 - ) 564 - .unwrap(); 565 - image = Some(DynamicImage::ImageRgba8(buffer)); 566 - } 567 - output_buffer.unmap(); 568 - 569 - image.unwrap() 570 - }) 571 - } 572 - } 573 - 574 - #[deprecated] 575 - #[allow(clippy::too_many_lines)] 576 - pub async fn render_context_wgpu(render_context: RenderContext) -> DynamicImage { 577 - let instance = wgpu::Instance::new(&wgpu::InstanceDescriptor { 578 - backends: wgpu::Backends::all(), 579 - ..Default::default() 580 - }); 581 - let adapter = instance 582 - .request_adapter(&wgpu::RequestAdapterOptions { 583 - power_preference: wgpu::PowerPreference::default(), 584 - compatible_surface: None, 585 - force_fallback_adapter: false, 586 - }) 587 - .await 588 - .unwrap(); 589 - let (device, queue) = adapter 590 - .request_device(&DeviceDescriptor::default()) 591 - .await 592 - .unwrap(); 593 - 594 - let texture_desc = wgpu::TextureDescriptor { 595 - size: wgpu::Extent3d { 596 - width: render_context.size.x, 597 - height: render_context.size.y, 598 - depth_or_array_layers: 1, 599 - }, 600 - mip_level_count: 1, 601 - sample_count: 1, 602 - dimension: wgpu::TextureDimension::D2, 603 - format: wgpu::TextureFormat::Rgba8UnormSrgb, 604 - usage: wgpu::TextureUsages::COPY_SRC | wgpu::TextureUsages::RENDER_ATTACHMENT, 605 - label: None, 606 - view_formats: &[wgpu::TextureFormat::Rgba8UnormSrgb], 607 - }; 608 - let texture = device.create_texture(&texture_desc); 609 - let texture_view = texture.create_view(&Default::default()); 610 - let u32_size = std::mem::size_of::<u32>() as u32; 611 - let output_buffer_size = 612 - wgpu::BufferAddress::from(u32_size * render_context.size.x * render_context.size.y); 613 - let output_buffer_desc = wgpu::BufferDescriptor { 614 - size: output_buffer_size, 615 - usage: wgpu::BufferUsages::COPY_DST 616 - // this tells wpgu that we want to read this buffer from the cpu 617 - | wgpu::BufferUsages::MAP_READ, 618 - label: None, 619 - mapped_at_creation: false, 620 - }; 621 - let output_buffer = device.create_buffer(&output_buffer_desc); 622 - 623 - let mut encoder = 624 - device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); 625 - 626 - for shape in render_context.shape { 627 - let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { 628 - label: Some("Vertex Buffer"), 629 - contents: bytemuck::cast_slice(&shape.vertices), 630 - usage: wgpu::BufferUsages::VERTEX, 631 - }); 632 - 633 - let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { 634 - label: Some("Index Buffer"), 635 - contents: bytemuck::cast_slice(&shape.indices), 636 - usage: wgpu::BufferUsages::INDEX, 637 - }); 638 - 639 - let shape_texture_rgba = shape.tex.to_rgba8(); 640 - let shape_texture_dimensions = shape_texture_rgba.dimensions(); 641 - let shape_texture_size = wgpu::Extent3d { 642 - width: shape_texture_dimensions.0, 643 - height: shape_texture_dimensions.1, 644 - // All textures are stored as 3D, we represent our 2D texture 645 - // by setting depth to 1. 646 - depth_or_array_layers: 1, 647 - }; 648 - let shape_diffuse_texture = device.create_texture(&wgpu::TextureDescriptor { 649 - size: shape_texture_size, 650 - mip_level_count: 1, // We'll talk about this a little later 651 - sample_count: 1, 652 - dimension: wgpu::TextureDimension::D2, 653 - // Most images are stored using sRGB, so we need to reflect that here. 654 - format: wgpu::TextureFormat::Rgba8UnormSrgb, 655 - // TEXTURE_BINDING tells wgpu that we want to use this texture in shaders 656 - // COPY_DST means that we want to copy data to this texture 657 - usage: wgpu::TextureUsages::TEXTURE_BINDING | wgpu::TextureUsages::COPY_DST, 658 - label: Some("diffuse_texture"), 659 - // This is the same as with the SurfaceConfig. It 660 - // specifies what texture formats can be used to 661 - // create TextureViews for this texture. The base 662 - // texture format (Rgba8UnormSrgb in this case) is 663 - // always supported. Note that using a different 664 - // texture format is not supported on the WebGL2 665 - // backend. 666 - view_formats: &[], 667 - }); 668 - 669 - queue.write_texture( 670 - TexelCopyTextureInfo { 671 - texture: &shape_diffuse_texture, 672 - mip_level: 0, 673 - origin: wgpu::Origin3d::ZERO, 674 - aspect: wgpu::TextureAspect::All, 675 - }, 676 - &shape_texture_rgba, 677 - wgpu::TexelCopyBufferLayout { 678 - offset: 0, 679 - bytes_per_row: Some(4 * shape_texture_dimensions.0), 680 - rows_per_image: Some(shape_texture_dimensions.1), 681 - }, 682 - shape_texture_size, 683 - ); 684 - 685 - let shape_diffuse_texture_view = 686 - shape_diffuse_texture.create_view(&wgpu::TextureViewDescriptor::default()); 687 - let shape_diffuse_sampler = device.create_sampler(&wgpu::SamplerDescriptor { 688 - address_mode_u: wgpu::AddressMode::ClampToEdge, 689 - address_mode_v: wgpu::AddressMode::ClampToEdge, 690 - address_mode_w: wgpu::AddressMode::ClampToEdge, 691 - mag_filter: wgpu::FilterMode::Linear, 692 - min_filter: wgpu::FilterMode::Nearest, 693 - mipmap_filter: wgpu::FilterMode::Nearest, 694 - ..Default::default() 695 - }); 696 - 697 - let texture_bind_group_layout = 698 - device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { 699 - entries: &[ 700 - wgpu::BindGroupLayoutEntry { 701 - binding: 0, 702 - visibility: wgpu::ShaderStages::FRAGMENT, 703 - ty: wgpu::BindingType::Texture { 704 - multisampled: false, 705 - view_dimension: wgpu::TextureViewDimension::D2, 706 - sample_type: wgpu::TextureSampleType::Float { filterable: true }, 707 - }, 708 - count: None, 709 - }, 710 - wgpu::BindGroupLayoutEntry { 711 - binding: 1, 712 - visibility: wgpu::ShaderStages::FRAGMENT, 713 - // This should match the filterable field of the 714 - // corresponding Texture entry above. 715 - ty: wgpu::BindingType::Sampler(wgpu::SamplerBindingType::Filtering), 716 - count: None, 717 - }, 718 - ], 719 - label: Some("texture_bind_group_layout"), 720 - }); 721 - 722 - let shape_diffuse_bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { 723 - layout: &texture_bind_group_layout, 724 - entries: &[ 725 - wgpu::BindGroupEntry { 726 - binding: 0, 727 - resource: wgpu::BindingResource::TextureView(&shape_diffuse_texture_view), 728 - }, 729 - wgpu::BindGroupEntry { 730 - binding: 1, 731 - resource: wgpu::BindingResource::Sampler(&shape_diffuse_sampler), 732 - }, 733 - ], 734 - label: Some("diffuse_bind_group"), 735 - }); 736 - 737 - let mvp_matrix = shape.mvp_matrix.into(); 738 - let mvp_uniform = TextureTransformUniform { 739 - mvp_matrix, 740 - channel_replacements_r: shape.modulation.channels[0], 741 - channel_replacements_g: shape.modulation.channels[1], 742 - channel_replacements_b: shape.modulation.channels[2], 743 - texture_type: (Into::<u8>::into(shape.modulation.mode)).into(), 744 - pad: Default::default(), 745 - }; 746 - 747 - let mvp_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { 748 - label: Some("MvpMatrix Buffer"), 749 - contents: bytemuck::cast_slice(&[mvp_uniform]), 750 - usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST, 751 - }); 752 - 753 - let mvp_bind_group_layout = 754 - device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { 755 - entries: &[wgpu::BindGroupLayoutEntry { 756 - binding: 0, 757 - visibility: wgpu::ShaderStages::VERTEX | wgpu::ShaderStages::FRAGMENT, 758 - ty: wgpu::BindingType::Buffer { 759 - ty: wgpu::BufferBindingType::Uniform, 760 - has_dynamic_offset: false, 761 - min_binding_size: None, 762 - }, 763 - count: None, 764 - }], 765 - label: Some("mvp_bind_group_layout"), 766 - }); 767 - 768 - let mvp_bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { 769 - layout: &mvp_bind_group_layout, 770 - entries: &[wgpu::BindGroupEntry { 771 - binding: 0, 772 - resource: mvp_buffer.as_entire_binding(), 773 - }], 774 - label: Some("mvp_bind_group"), 775 - }); 776 - 777 - let shader = wgpu::ShaderSource::Wgsl(SHADER.into()); 778 - let shader_module = device.create_shader_module(wgpu::ShaderModuleDescriptor { 779 - label: Some("Shader"), 780 - source: shader, 781 - }); 782 - let render_pipeline_layout = 783 - device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { 784 - label: Some("Render Pipeline Layout"), 785 - bind_group_layouts: &[&texture_bind_group_layout, &mvp_bind_group_layout], 786 - push_constant_ranges: &[], 787 - }); 788 - let render_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor { 789 - label: Some("Render Pipeline"), 790 - layout: Some(&render_pipeline_layout), 791 - vertex: wgpu::VertexState { 792 - module: &shader_module, 793 - entry_point: Some("vs_main"), 794 - buffers: &[Vertex::desc()], 795 - compilation_options: Default::default(), 796 - }, 797 - fragment: Some(wgpu::FragmentState { 798 - module: &shader_module, 799 - entry_point: Some("fs_main"), 800 - targets: &[Some(wgpu::ColorTargetState { 801 - format: texture_desc.format, 802 - blend: Some(wgpu::BlendState::ALPHA_BLENDING), 803 - write_mask: wgpu::ColorWrites::ALL, 804 - })], 805 - compilation_options: Default::default(), 806 - }), 807 - primitive: wgpu::PrimitiveState { 808 - topology: wgpu::PrimitiveTopology::TriangleList, 809 - strip_index_format: None, 810 - front_face: wgpu::FrontFace::Ccw, 811 - cull_mode: Some(wgpu::Face::Back), 812 - // Setting this to anything other than Fill requires Features::NON_FILL_POLYGON_MODE 813 - polygon_mode: wgpu::PolygonMode::Fill, 814 - // Requires Features::DEPTH_CLIP_CONTROL 815 - unclipped_depth: false, 816 - // Requires Features::CONSERVATIVE_RASTERIZATION 817 - conservative: false, 818 - }, 819 - depth_stencil: None, 820 - multisample: wgpu::MultisampleState { 821 - count: 1, 822 - mask: !0, 823 - alpha_to_coverage_enabled: false, 824 - }, 825 - // If the pipeline will be used with a multiview render pass, this 826 - // indicates how many array layers the attachments will have. 827 - multiview: None, 828 - cache: None, 829 - }); 830 - 831 - { 832 - let render_pass_desc = wgpu::RenderPassDescriptor { 833 - label: Some("Render Pass"), 834 - color_attachments: &[Some(wgpu::RenderPassColorAttachment { 835 - view: &texture_view, 836 - resolve_target: None, 837 - ops: wgpu::Operations { 838 - load: wgpu::LoadOp::Load, 839 - store: wgpu::StoreOp::Store, 840 - }, 841 - })], 842 - depth_stencil_attachment: None, 843 - occlusion_query_set: None, 844 - timestamp_writes: None, 845 - }; 846 - let mut render_pass = encoder.begin_render_pass(&render_pass_desc); 847 - 848 - render_pass.set_pipeline(&render_pipeline); 849 - render_pass.set_bind_group(0, &shape_diffuse_bind_group, &[]); 850 - render_pass.set_bind_group(1, &mvp_bind_group, &[]); 851 - render_pass.set_vertex_buffer(0, vertex_buffer.slice(..)); 852 - render_pass.set_index_buffer(index_buffer.slice(..), wgpu::IndexFormat::Uint32); 853 - 854 - render_pass.draw_indexed(0..shape.indices.len() as u32, 0, 0..1); 855 - } 856 - } 857 - encoder.copy_texture_to_buffer( 858 - wgpu::TexelCopyTextureInfo { 859 - aspect: wgpu::TextureAspect::All, 860 - texture: &texture, 861 - mip_level: 0, 862 - origin: wgpu::Origin3d::ZERO, 863 - }, 864 - wgpu::TexelCopyBufferInfo { 865 - buffer: &output_buffer, 866 - layout: wgpu::TexelCopyBufferLayout { 867 - offset: 0, 868 - bytes_per_row: Some(u32_size * render_context.size.x), 869 - rows_per_image: Some(render_context.size.x), 870 - }, 871 - }, 872 - texture_desc.size, 873 - ); 874 - 875 - queue.submit(Some(encoder.finish())); 876 - 877 - let mut image = None; 878 - // We need to scope the mapping variables so that we can 879 - // unmap the buffer 880 - { 881 - let buffer_slice = output_buffer.slice(..); 882 - 883 - // NOTE: We have to create the mapping THEN device.poll() before await 884 - // the future. Otherwise the application will freeze. 885 - let (tx, rx) = futures_intrusive::channel::shared::oneshot_channel(); 886 - buffer_slice.map_async(wgpu::MapMode::Read, move |result| { 887 - tx.send(result).unwrap(); 888 - }); 889 - device.poll(wgpu::PollType::Wait).unwrap(); 890 - rx.receive().await.unwrap().unwrap(); 891 - 892 - let data = &buffer_slice.get_mapped_range()[..]; 893 - 894 - use image::{ImageBuffer, Rgba}; 895 - let buffer: RgbaImage = ImageBuffer::<Rgba<u8>, _>::from_raw( 896 - render_context.size.x, 897 - render_context.size.y, 898 - data.to_owned(), 899 - ) 900 - .unwrap(); 901 - // buffer.save("image.png").unwrap(); 902 - image = Some(DynamicImage::ImageRgba8(buffer)); 903 - } 904 - output_buffer.unmap(); 905 - 906 - image.unwrap() 907 - } 908 - 909 - pub mod texture { 910 - use std::error::Error; 911 - use std::fmt::Debug; 912 - 913 - use glam::UVec2; 914 - use image::GenericImageView; 915 - use wgpu::TextureFormat; 916 - 917 - pub struct Texture { 918 - #[allow(unused)] 919 - pub texture: wgpu::Texture, 920 - pub view: wgpu::TextureView, 921 - pub sampler: wgpu::Sampler, 922 - } 923 - impl Debug for Texture { 924 - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 925 - f.debug_struct("Texture").finish() 926 - } 927 - } 928 - 929 - #[allow(unused)] 930 - impl Texture { 931 - pub fn from_bytes( 932 - device: &wgpu::Device, 933 - queue: &wgpu::Queue, 934 - bytes: &[u8], 935 - label: &str, 936 - ) -> Result<Self, Box<dyn Error>> { 937 - let img = image::load_from_memory(bytes)?; 938 - Self::from_image(device, queue, &img, Some(label)) 939 - } 940 - 941 - pub fn from_image( 942 - device: &wgpu::Device, 943 - queue: &wgpu::Queue, 944 - img: &image::DynamicImage, 945 - label: Option<&str>, 946 - ) -> Result<Self, Box<dyn Error>> { 947 - let rgba = img.to_rgba8(); 948 - let dimensions = img.dimensions(); 949 - 950 - let size = wgpu::Extent3d { 951 - width: dimensions.0, 952 - height: dimensions.1, 953 - depth_or_array_layers: 1, 954 - }; 955 - let texture = device.create_texture(&wgpu::TextureDescriptor { 956 - label, 957 - size, 958 - mip_level_count: 1, 959 - sample_count: 1, 960 - dimension: wgpu::TextureDimension::D2, 961 - format: wgpu::TextureFormat::Rgba8UnormSrgb, 962 - usage: wgpu::TextureUsages::TEXTURE_BINDING | wgpu::TextureUsages::COPY_DST, 963 - view_formats: &[], 964 - }); 965 - 966 - queue.write_texture( 967 - wgpu::TexelCopyTextureInfo { 968 - aspect: wgpu::TextureAspect::All, 969 - texture: &texture, 970 - mip_level: 0, 971 - origin: wgpu::Origin3d::ZERO, 972 - }, 973 - &rgba, 974 - wgpu::TexelCopyBufferLayout { 975 - offset: 0, 976 - bytes_per_row: Some(4 * dimensions.0), 977 - rows_per_image: Some(dimensions.1), 978 - }, 979 - size, 980 - ); 981 - 982 - let view = texture.create_view(&wgpu::TextureViewDescriptor::default()); 983 - let sampler = device.create_sampler(&wgpu::SamplerDescriptor { 984 - address_mode_u: wgpu::AddressMode::ClampToEdge, 985 - address_mode_v: wgpu::AddressMode::ClampToEdge, 986 - address_mode_w: wgpu::AddressMode::ClampToEdge, 987 - mag_filter: wgpu::FilterMode::Linear, 988 - min_filter: wgpu::FilterMode::Nearest, 989 - mipmap_filter: wgpu::FilterMode::Nearest, 990 - ..Default::default() 991 - }); 992 - 993 - Ok(Self { 994 - texture, 995 - view, 996 - sampler, 997 - }) 998 - } 999 - 1000 - pub const DEPTH_FORMAT: wgpu::TextureFormat = wgpu::TextureFormat::Depth32Float; // 1. 1001 - 1002 - pub fn create_depth_texture(device: &wgpu::Device, size: &UVec2, label: &str) -> Self { 1003 - let size = wgpu::Extent3d { 1004 - // 2. 1005 - width: size.x.max(1), 1006 - height: size.y.max(1), 1007 - depth_or_array_layers: 1, 1008 - }; 1009 - let desc = wgpu::TextureDescriptor { 1010 - label: Some(label), 1011 - size, 1012 - mip_level_count: 1, 1013 - sample_count: 1, 1014 - dimension: wgpu::TextureDimension::D2, 1015 - format: Self::DEPTH_FORMAT, 1016 - usage: wgpu::TextureUsages::RENDER_ATTACHMENT // 3. 1017 - | wgpu::TextureUsages::TEXTURE_BINDING, 1018 - view_formats: &[], 1019 - }; 1020 - let texture = device.create_texture(&desc); 1021 - 1022 - let view = texture.create_view(&wgpu::TextureViewDescriptor::default()); 1023 - let sampler = device.create_sampler(&wgpu::SamplerDescriptor { 1024 - // 4. 1025 - address_mode_u: wgpu::AddressMode::ClampToEdge, 1026 - address_mode_v: wgpu::AddressMode::ClampToEdge, 1027 - address_mode_w: wgpu::AddressMode::ClampToEdge, 1028 - mag_filter: wgpu::FilterMode::Linear, 1029 - min_filter: wgpu::FilterMode::Linear, 1030 - mipmap_filter: wgpu::FilterMode::Nearest, 1031 - compare: Some(wgpu::CompareFunction::LessEqual), // 5. 1032 - lod_min_clamp: 0.0, 1033 - lod_max_clamp: 100.0, 1034 - ..Default::default() 1035 - }); 1036 - 1037 - Self { 1038 - texture, 1039 - view, 1040 - sampler, 1041 - } 1042 - } 1043 - 1044 - pub fn create_texture(device: &wgpu::Device, size: &UVec2, label: &str) -> Self { 1045 - let size = wgpu::Extent3d { 1046 - // 2. 1047 - width: size.x.max(1), 1048 - height: size.y.max(1), 1049 - depth_or_array_layers: 1, 1050 - }; 1051 - let desc = wgpu::TextureDescriptor { 1052 - label: Some(label), 1053 - size, 1054 - mip_level_count: 1, 1055 - sample_count: 1, 1056 - dimension: wgpu::TextureDimension::D2, 1057 - format: TextureFormat::Bgra8UnormSrgb, 1058 - usage: wgpu::TextureUsages::RENDER_ATTACHMENT // 3. 1059 - | wgpu::TextureUsages::TEXTURE_BINDING 1060 - | wgpu::TextureUsages::COPY_SRC, 1061 - view_formats: &[], 1062 - }; 1063 - let texture = device.create_texture(&desc); 1064 - 1065 - let view = texture.create_view(&wgpu::TextureViewDescriptor::default()); 1066 - let sampler = device.create_sampler(&wgpu::SamplerDescriptor { 1067 - // 4. 1068 - address_mode_u: wgpu::AddressMode::MirrorRepeat, 1069 - address_mode_v: wgpu::AddressMode::MirrorRepeat, 1070 - address_mode_w: wgpu::AddressMode::MirrorRepeat, 1071 - mag_filter: wgpu::FilterMode::Linear, 1072 - min_filter: wgpu::FilterMode::Linear, 1073 - mipmap_filter: wgpu::FilterMode::Nearest, 1074 - lod_min_clamp: 0.0, 1075 - lod_max_clamp: 100.0, 1076 - ..Default::default() 1077 - }); 1078 - 1079 - Self { 1080 - texture, 1081 - view, 1082 - sampler, 1083 - } 1084 - } 1085 - } 1086 - } 1087 - 1088 - #[cfg(test)] 1089 - mod tests { 1090 - use crate::draw::mask::MaskFaceParts; 1091 - use crate::res::shape::nx::{ResourceShape, SHAPE_MID_DAT}; 1092 - use crate::res::tex::nx::{ResourceTexture, TEXTURE_MID_SRGB_DAT}; 1093 - use binrw::BinRead; 1094 - use glam::uvec2; 1095 - use image_compare::Algorithm; 1096 - 1097 - use super::*; 1098 - use std::{error::Error, fs::File, io::BufReader}; 1099 - 1100 - type R = Result<(), Box<dyn Error>>; 1101 - 1102 - // #[test] 1103 - // #[allow(clippy::too_many_lines)] 1104 - // fn test_render() -> R { 1105 - // let mut tex_file = BufReader::new(File::open(TEXTURE_MID_SRGB_DAT)?); 1106 - // let mut tex_shape = BufReader::new(File::open(SHAPE_MID_DAT)?); 1107 - 1108 - // let mut char = 1109 - // File::open(concat!(env!("CARGO_MANIFEST_DIR"), "/../Jasmine.charinfo")).unwrap(); 1110 - // let char = NxCharInfo::read(&mut char).unwrap(); 1111 - 1112 - // let image = pollster::block_on(render_context_wgpu(RenderContext::new( 1113 - // // &FaceParts::init(&char, 256.0), 1114 - // &char, 1115 - // (&mut tex_shape, &mut tex_file), 1116 - // )?)); 1117 - // let image = image.flipv(); 1118 - 1119 - // image.save(concat!( 1120 - // env!("CARGO_MANIFEST_DIR"), 1121 - // "/test_output/mask-rendered.png" 1122 - // ))?; 1123 - 1124 - // let reference_image = image::open(concat!( 1125 - // env!("CARGO_MANIFEST_DIR"), 1126 - // "/test_data/jasmine-mask.png" 1127 - // )) 1128 - // .unwrap(); 1129 - 1130 - // let similarity = image_compare::rgb_hybrid_compare( 1131 - // &image.clone().into_rgb8(), 1132 - // &reference_image.clone().into_rgb8(), 1133 - // ) 1134 - // .expect("wrong size!"); 1135 - 1136 - // similarity 1137 - // .image 1138 - // .to_color_map() 1139 - // .save(concat!( 1140 - // env!("CARGO_MANIFEST_DIR"), 1141 - // "/test_output/mask-similarity.png" 1142 - // )) 1143 - // .unwrap(); 1144 - 1145 - // let similarity = image_compare::gray_similarity_structure( 1146 - // &Algorithm::MSSIMSimple, 1147 - // &image.into_luma8(), 1148 - // &reference_image.into_luma8(), 1149 - // ) 1150 - // .expect("wrong size!"); 1151 - 1152 - // similarity 1153 - // .image 1154 - // .to_color_map() 1155 - // .save(concat!( 1156 - // env!("CARGO_MANIFEST_DIR"), 1157 - // "/test_output/mask-similarity-grey.png" 1158 - // )) 1159 - // .unwrap(); 1160 - 1161 - // Ok(()) 1162 - // } 1163 - } 1164 - 1165 - mod camera { 1166 - use glam::{Mat4, Vec3}; 1167 - 1168 - pub struct Camera { 1169 - pub eye: Vec3, 1170 - pub target: Vec3, 1171 - pub up: Vec3, 1172 - pub aspect: f32, 1173 - pub fov_y_radians: f32, 1174 - pub znear: f32, 1175 - pub zfar: f32, 1176 - } 1177 - 1178 - impl Camera { 1179 - pub fn build_view_projection_matrix(&self) -> Mat4 { 1180 - let view = Mat4::look_at_rh(self.eye, self.target, self.up); 1181 - let proj = Mat4::perspective_rh(self.fov_y_radians, self.aspect, self.znear, self.zfar); 1182 - proj * view 1183 - } 1184 - } 1185 - 1186 - #[repr(C)] 1187 - #[derive(Debug, Copy, Clone, bytemuck::Pod, bytemuck::Zeroable)] 1188 - pub struct CameraUniform { 1189 - view_proj: [[f32; 4]; 4], 1190 - } 1191 - 1192 - impl CameraUniform { 1193 - pub fn new() -> Self { 1194 - Self { 1195 - view_proj: Mat4::IDENTITY.to_cols_array_2d(), 1196 - } 1197 - } 1198 - 1199 - pub fn update_view_proj(&mut self, camera: &Camera) { 1200 - self.view_proj = camera.build_view_projection_matrix().to_cols_array_2d(); 1201 - } 1202 - } 1203 - }
+2 -1
vfl/src/lib.rs crates/vfl/src/lib.rs
··· 1 1 #![warn(clippy::all, clippy::pedantic)] 2 - #![allow(dead_code)] 2 + #![allow(dead_code, clippy::must_use_candidate)] 3 + 3 4 pub mod charinfo; 4 5 pub mod color; 5 6
vfl/src/res/mod.rs crates/vfl/src/res/mod.rs
vfl/src/res/shape/mod.rs crates/vfl/src/res/shape/mod.rs
+3 -3
vfl/src/res/shape/nx.rs crates/vfl/src/res/shape/nx.rs
··· 1 - use crate::utils::{ReadSeek, Vec3PackedSnorm, inflate_bytes, read_byte_slice, u16_to_f32}; 1 + use crate::utils::{Vec3PackedSnorm, inflate_bytes, u16_to_f32}; 2 2 use binrw::{BinRead, Endian}; 3 - use std::fs::File; 4 3 use std::{ 5 4 error::Error, 6 5 io::{Cursor, Read, Seek, SeekFrom}, 7 6 }; 8 7 9 - pub const SHAPE_MID_DAT: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/ShapeMid.dat"); 8 + pub const SHAPE_MID_DAT: &str = 9 + concat!(env!("CARGO_WORKSPACE_DIR"), "/resources_here/ShapeMid.dat"); 10 10 #[cfg(target_family = "wasm")] 11 11 pub const SHAPE_MID_DAT_LOADED: &[u8] = include_bytes!("../../../ShapeMid.dat"); 12 12
vfl/src/res/tex/mod.rs crates/vfl/src/res/tex/mod.rs
+41 -41
vfl/src/res/tex/nx.rs crates/vfl/src/res/tex/nx.rs
··· 1 - use crate::{ 2 - res::shape::nx::ResourceCommonAttribute, 3 - utils::{ReadSeek, inflate_bytes, read_byte_slice}, 4 - }; 1 + use crate::{res::shape::nx::ResourceCommonAttribute, utils::inflate_bytes}; 5 2 use binrw::BinRead; 6 3 use image::{ImageBuffer, Rgba, RgbaImage}; 7 4 use num_enum::{IntoPrimitive, TryFromPrimitive}; 8 5 use std::error::Error; 9 6 use tegra_swizzle::{block_height_mip0, div_round_up, swizzle::deswizzle_block_linear}; 10 7 11 - pub const TEXTURE_MID_SRGB_DAT: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/NXTextureMidSRGB.dat"); 8 + pub const TEXTURE_MID_SRGB_DAT: &str = concat!( 9 + env!("CARGO_WORKSPACE_DIR"), 10 + "/resources_here/NXTextureMidSRGB.dat" 11 + ); 12 12 13 13 #[derive(BinRead, Debug, Clone, Copy)] 14 14 pub struct ResourceTextureAttribute { 15 15 alignment: u32, 16 16 pub width: u16, 17 17 pub height: u16, 18 - pub format: u8, 18 + pub format: ResourceTextureFormat, 19 19 mip_count: u8, 20 20 tile_mode: u8, 21 21 pad: [u8; 1], ··· 30 30 // Format rundown: 31 31 // https://www.reedbeta.com/blog/understanding-bcn-texture-compression-formats/#comparison-table 32 32 33 - #[derive(IntoPrimitive, TryFromPrimitive, Debug)] 33 + #[derive(IntoPrimitive, TryFromPrimitive, Debug, Clone, Copy, BinRead)] 34 + #[br(repr = u8)] 34 35 #[repr(u8)] 35 36 pub enum ResourceTextureFormat { 36 37 R = 0, // R8Unorm (Ffl Name) ··· 43 44 } 44 45 45 46 impl TextureElement { 46 - pub fn get_texture_bytes(&self, file: &Vec<u8>) -> Result<Vec<u8>, Box<dyn Error>> { 47 + /// Gets the raw bytes of a texture. Takes an argument of the resource file. 48 + /// # Errors 49 + /// - Encounters texture data that isn't Zlib deflated 50 + /// - Deswizzling texture data fails 51 + pub fn get_texture_bytes(&self, file: &[u8]) -> Result<Vec<u8>, Box<dyn Error>> { 52 + use ResourceTextureFormat as Rtf; 53 + 47 54 let start: usize = self.common.offset as usize; 48 55 let end: usize = self.common.offset as usize + self.common.size_compressed as usize; 49 56 50 - // println!("texload"); 51 - 52 57 let range = start..end; 53 - 54 - // let tex_data = read_byte_slice( 55 - // file, 56 - // self.common.offset.into(), 57 - // self.common.size_compressed.try_into()?, 58 - // )?; 59 58 60 59 let tex_data = inflate_bytes(&file[range])?; 61 60 62 61 let needs_swizzling = self.texture.tile_mode == 0; 63 62 64 63 let tex_data = if needs_swizzling { 65 - let block_size = match ResourceTextureFormat::try_from(self.texture.format).unwrap() { 66 - ResourceTextureFormat::R 67 - | ResourceTextureFormat::Rb 68 - | ResourceTextureFormat::Rgba => 1, 69 - ResourceTextureFormat::Bc4 70 - | ResourceTextureFormat::Bc5 71 - | ResourceTextureFormat::Bc7 72 - | ResourceTextureFormat::Astc4x4 => 4, 64 + let block_size = match self.texture.format { 65 + Rtf::R | Rtf::Rb | Rtf::Rgba => 1, 66 + Rtf::Bc4 | Rtf::Bc5 | Rtf::Bc7 | Rtf::Astc4x4 => 4, 73 67 }; 74 68 75 - let bytes_per_pixel = 76 - match ResourceTextureFormat::try_from(self.texture.format).unwrap() { 77 - ResourceTextureFormat::R 78 - | ResourceTextureFormat::Rb 79 - | ResourceTextureFormat::Rgba => 1, 80 - ResourceTextureFormat::Bc4 => 8, 81 - ResourceTextureFormat::Bc5 82 - | ResourceTextureFormat::Bc7 83 - | ResourceTextureFormat::Astc4x4 => 16, 84 - }; 69 + let bytes_per_pixel = match self.texture.format { 70 + Rtf::R | Rtf::Rb | Rtf::Rgba => 1, 71 + Rtf::Bc4 => 8, 72 + Rtf::Bc5 | Rtf::Bc7 | Rtf::Astc4x4 => 16, 73 + }; 85 74 86 75 let height = self.texture.height.into(); 87 76 let block_height = block_height_mip0(div_round_up(height, block_size)); 88 77 89 - // panic!("{}", tex_data.len()); 90 78 deswizzle_block_linear( 91 79 div_round_up(self.texture.width.into(), block_size), 92 80 div_round_up(self.texture.height.into(), block_size), ··· 102 90 Ok(tex_data) 103 91 } 104 92 93 + /// Gets the raw bytes of a texture. Takes an argument of the resource file. 94 + /// # Errors 95 + /// - Encounters texture data that isn't Zlib deflated 96 + /// - Deswizzling texture data fails 97 + /// - Texture decompression fails 98 + /// # Panics 99 + /// - If texture data is empty 105 100 #[cfg(feature = "draw")] 106 - pub fn get_uncompressed_bytes( 107 - &self, 108 - file: &Vec<u8>, 109 - ) -> Result<Option<Vec<u8>>, Box<dyn Error>> { 101 + pub fn get_uncompressed_bytes(&self, file: &[u8]) -> Result<Option<Vec<u8>>, Box<dyn Error>> { 110 102 let normalize_textures = false; 111 103 112 104 if self.texture.width == 0 || self.texture.height == 0 { ··· 118 110 119 111 let mut tex_data_decoded = 120 112 vec![0; (u32::from(self.texture.width) * u32::from(self.texture.height)) as usize]; 121 - match ResourceTextureFormat::try_from(self.texture.format).unwrap() { 113 + match self.texture.format { 122 114 ResourceTextureFormat::Bc7 => { 123 115 texture2ddecoder::decode_bc7( 124 116 &tex_data, ··· 195 187 Ok(Some(tex_data_decoded)) 196 188 } 197 189 190 + /// Gets the raw bytes of a texture. Takes an argument of the resource file. 191 + /// # Errors 192 + /// - Encounters texture data that isn't Zlib deflated 193 + /// - Deswizzling texture data fails 194 + /// - Texture decompression fails 195 + /// # Panics 196 + /// - If texture data is empty 197 + /// - If calculated image container is too small 198 198 #[cfg(feature = "draw")] 199 - pub fn get_image(&self, bytes: &Vec<u8>) -> Result<Option<RgbaImage>, Box<dyn Error>> { 199 + pub fn get_image(&self, bytes: &[u8]) -> Result<Option<RgbaImage>, Box<dyn Error>> { 200 200 let bytes = match self.get_uncompressed_bytes(bytes) { 201 201 Ok(Some(bytes)) => bytes, 202 202 Ok(None) => return Ok(None),
vfl/src/utils.rs crates/vfl/src/utils.rs