diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..6d291ee --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,36 @@ +name: CI + +on: + workflow_dispatch: + push: + branches: ["master"] + pull_request: + branches: ["master"] + +env: + CARGO_TERM_COLOR: always + +jobs: + build: + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - uses: Swatinem/rust-cache@v2 + - name: Build + run: cargo build --verbose --all-features + + checks: + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + with: + components: rustfmt, clippy + - uses: Swatinem/rust-cache@v2 + - name: Format + run: cargo fmt -- --check --verbose + - name: Lint + run: cargo clippy --all-targets --all-features -- -D warnings diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a7474a6..2c97fbf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,7 +2,7 @@ name: Release on: push: - tags: ['v*'] + tags: ["v*"] env: CARGO_TERM_COLOR: always @@ -14,9 +14,9 @@ jobs: permissions: id-token: write steps: - - uses: actions/checkout@v5 - - uses: rust-lang/crates-io-auth-action@v1 - id: auth - - run: cargo publish - env: - CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }} \ No newline at end of file + - uses: actions/checkout@v5 + - uses: rust-lang/crates-io-auth-action@v1 + id: auth + - run: cargo publish + env: + CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }} diff --git a/coverage/README.md b/coverage/README.md index a75560e..883f722 100644 --- a/coverage/README.md +++ b/coverage/README.md @@ -2,8 +2,10 @@ This directory contains code coverage reports. -The coverage reports are generated using the [run.ps1](./run.ps1) script. To run the script, you need to install [cargo-llvm-cov](https://crates.io/crates/cargo-llvm-cov) and [cargo-nextest](https://crates.io/crates/cargo-nextest). +The coverage reports are generated using the [run.ps1](./run.ps1) (for Windows) and [run.sh](./run.sh) (for Linux/\*nix) scripts. + +To run the script, you need to install [cargo-llvm-cov](https://crates.io/crates/cargo-llvm-cov) and [cargo-nextest](https://crates.io/crates/cargo-nextest). > [!NOTE] > -> Because the crate requires GPU support, the coverage report is not run in CI. \ No newline at end of file +> Because the crate requires GPU support, the coverage report is not run in CI. diff --git a/coverage/coverage.rs b/coverage/coverage.rs new file mode 100644 index 0000000..8812102 --- /dev/null +++ b/coverage/coverage.rs @@ -0,0 +1,117 @@ +macro_rules! cargo { + ($arg:literal $(, $fmt_args:expr),* $(,)?) => {{ + let cmd_arg = format!($arg, $($fmt_args),*); + let args = cmd_arg.split_whitespace(); + + println!("cargo {}", cmd_arg); + + let status = std::process::Command::new("cargo") + .args(args) + .status() + .expect("failed to execute process"); + + assert!(status.success(), "command 'cargo {}' failed", cmd_arg); + }}; +} + +fn main() { + let exe_path = std::env::current_exe().expect("current exe"); + + let mut manifest_path = exe_path.parent().expect("exe parent").to_path_buf(); + while std::fs::read_dir(&manifest_path) + .expect("read dir") + .find(|entry| entry.as_ref().expect("entry").file_name() == "Cargo.toml") + .is_none() + { + manifest_path = manifest_path.parent().expect("parent").to_path_buf(); + } + + let coverage_path = manifest_path.join("coverage"); + let lcov_path = coverage_path.join("lcov.info"); + let lcov_path_str = lcov_path.to_str().expect("lcov path"); + let badge_path = coverage_path.join("badge.json"); + let model_path = coverage_path.join("model.ply"); + let model_path_str = model_path.to_str().expect("model path"); + + println!("Running coverage..."); + + cargo!("llvm-cov clean --workspace"); + + println!("Running 'simple' example"); + cargo!("llvm-cov run --example simple --all-features -- -m {model_path_str}"); + + println!("Running 'multi-model' example"); + cargo!( + "llvm-cov run --example multi-model --all-features -- -m {model_path_str} -m {model_path_str}" + ); + + println!("Running 'selection' example"); + cargo!("llvm-cov run --example selection --all-features -- -m {model_path_str}"); + + println!("Running doctests"); + // `--doctests` flag is currently unstable + // cargo!("llvm-cov --no-report --doctests --all-features"); + cargo!("test --doc"); + + println!("Running tests"); + cargo!("llvm-cov --no-report nextest --all-features"); + + println!("Generating coverage report"); + cargo!("llvm-cov report --lcov --output-path {lcov_path_str}"); + + println!("Generating badge"); + + let lcov = std::fs::read_to_string(&lcov_path).expect("read lcov.info"); + let mut total: u64 = 0; + let mut covered: u64 = 0; + + for line in lcov.lines() { + if !line.starts_with("DA:") { + continue; + } + + let mut parts = line[3..].split(','); + let _line_number = parts.next(); + let hits_str = parts.next(); + + let Some(hits_str) = hits_str else { + continue; + }; + let Ok(hits) = hits_str.parse::() else { + continue; + }; + + total += 1; + if hits != 0 { + covered += 1; + } + } + + let badge_percentage: u64 = if total == 0 { + 100 + } else { + ((covered as f32 / total as f32) * 100.0).round() as u64 + }; + + let badge_color = if badge_percentage >= 80 { + "brightgreen" + } else if badge_percentage >= 50 { + "yellow" + } else { + "red" + }; + + let badge_json = format!( + r#" +{{ + "schemaVersion": 1, + "label": "coverage", + "message": "{badge_percentage}%", + "color": "{badge_color}" +}} + "# + ); + std::fs::write(&badge_path, badge_json.trim().to_owned() + "\n").expect("write badge.json"); + + println!("Done"); +} diff --git a/coverage/lcov.info b/coverage/lcov.info index 50fc8b8..5e3ee75 100644 --- a/coverage/lcov.info +++ b/coverage/lcov.info @@ -23,10 +23,10 @@ FN:26,_RINvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtB3_12CameraBuffe FN:72,_RINvMs3_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtB6_9CameraPod3newNtNtBa_6camera6CameraECs49roiI3Bpf9_6simple FNDA:3,_RINvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtB3_12CameraBuffer6updateNtNtB7_6camera6CameraECs8HrPP4l0PAj_3mod FNDA:27,_RINvMs3_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtB6_9CameraPod3newNtNtBa_6camera6CameraECs8HrPP4l0PAj_3mod -FNDA:50,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtB2_12CameraBuffer15update_with_pod +FNDA:679,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtB2_12CameraBuffer15update_with_pod FNDA:23,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtB2_12CameraBuffer3new FNDA:3,_RNvXs1_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtB5_12CameraBufferINtNtCs6joXTnudZij_4core7convert7TryFromNtNtNtCslVmKeilYcE_4wgpu3api6buffer6BufferE8try_from -FNDA:96,_RNvXs_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtB4_12CameraBufferNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer13BufferWrapper6buffer +FNDA:91,_RNvXs_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtB4_12CameraBufferNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer13BufferWrapper6buffer FNDA:1,_RNvXs0_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtNtNtCslVmKeilYcE_4wgpu3api6buffer6BufferINtNtCs6joXTnudZij_4core7convert4FromNtB5_12CameraBufferE4from FNDA:3,_RNCNvXs1_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtB7_12CameraBufferINtNtCs6joXTnudZij_4core7convert7TryFromNtNtNtCslVmKeilYcE_4wgpu3api6buffer6BufferE8try_from0Bb_ FNDA:0,_RINvMNtNtCsegerxfp6ECu_16wgpu_3dgs_viewer6buffer6cameraNtB3_12CameraBuffer6updatepEB7_ @@ -39,8 +39,8 @@ FNDA:0,_RNvXs1_NtNtCsegerxfp6ECu_16wgpu_3dgs_viewer6buffer6cameraNtB5_12CameraBu FNDA:0,_RNvXs_NtNtCsegerxfp6ECu_16wgpu_3dgs_viewer6buffer6cameraNtB4_12CameraBufferNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer13BufferWrapper6buffer FNDA:0,_RINvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtB3_12CameraBuffer6updateNtNtB7_6camera6CameraECs5eqtLxP0hPX_11multi_model FNDA:0,_RINvMs3_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtB6_9CameraPod3newNtNtBa_6camera6CameraECs5eqtLxP0hPX_11multi_model -FNDA:27,_RINvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtB3_12CameraBuffer6updateNtNtB7_6camera6CameraECs8i3LEZ4i8f6_9selection -FNDA:27,_RINvMs3_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtB6_9CameraPod3newNtNtBa_6camera6CameraECs8i3LEZ4i8f6_9selection +FNDA:656,_RINvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtB3_12CameraBuffer6updateNtNtB7_6camera6CameraECs8i3LEZ4i8f6_9selection +FNDA:656,_RINvMs3_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtB6_9CameraPod3newNtNtBa_6camera6CameraECs8i3LEZ4i8f6_9selection FNDA:0,_RINvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtB3_12CameraBuffer6updateNtNtB7_6camera6CameraECs49roiI3Bpf9_6simple FNDA:0,_RINvMs3_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer6cameraNtB6_9CameraPod3newNtNtBa_6camera6CameraECs49roiI3Bpf9_6simple FNF:8 @@ -54,29 +54,29 @@ DA:19,23 DA:20,23 DA:22,23 DA:23,23 -DA:26,30 -DA:27,30 -DA:28,30 -DA:31,50 -DA:32,50 -DA:33,50 -DA:37,96 -DA:38,96 -DA:39,96 +DA:26,659 +DA:27,659 +DA:28,659 +DA:31,679 +DA:32,679 +DA:33,679 +DA:37,91 +DA:38,91 +DA:39,91 DA:43,1 DA:44,1 DA:45,1 DA:51,3 DA:52,3 DA:53,3 -DA:72,54 -DA:73,54 -DA:74,54 -DA:75,54 -DA:76,54 -DA:77,54 -DA:78,54 -DA:79,54 +DA:72,683 +DA:73,683 +DA:74,683 +DA:75,683 +DA:76,683 +DA:77,683 +DA:78,683 +DA:79,683 BRF:0 BRH:0 LF:33 @@ -154,10 +154,10 @@ FNDA:32,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer13indirect_argsNtB2_18In FNDA:32,_RNvMs3_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer13indirect_argsNtB5_27RadixSortIndirectArgsBuffer3new FNDA:37,_RNvMs8_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer13indirect_argsNtB5_21IndirectIndicesBuffer3new FNDA:1,_RNvXs1_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer13indirect_argsNtB5_18IndirectArgsBufferINtNtCs6joXTnudZij_4core7convert7TryFromNtNtNtCslVmKeilYcE_4wgpu3api6buffer6BufferE8try_from -FNDA:88,_RNvXs4_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer13indirect_argsNtB5_27RadixSortIndirectArgsBufferNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer13BufferWrapper6buffer +FNDA:717,_RNvXs4_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer13indirect_argsNtB5_27RadixSortIndirectArgsBufferNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer13BufferWrapper6buffer FNDA:1,_RNvXs6_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer13indirect_argsNtB5_27RadixSortIndirectArgsBufferINtNtCs6joXTnudZij_4core7convert7TryFromNtNtNtCslVmKeilYcE_4wgpu3api6buffer6BufferE8try_from FNDA:98,_RNvXs9_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer13indirect_argsNtB5_21IndirectIndicesBufferNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer13BufferWrapper6buffer -FNDA:88,_RNvXs_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer13indirect_argsNtB4_18IndirectArgsBufferNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer13BufferWrapper6buffer +FNDA:717,_RNvXs_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer13indirect_argsNtB4_18IndirectArgsBufferNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer13BufferWrapper6buffer FNDA:1,_RNvXsb_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer13indirect_argsNtB5_21IndirectIndicesBufferINtNtCs6joXTnudZij_4core7convert4FromNtNtNtCslVmKeilYcE_4wgpu3api6buffer6BufferE4from FNDA:1,_RNCNvXs1_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer13indirect_argsNtB7_18IndirectArgsBufferINtNtCs6joXTnudZij_4core7convert7TryFromNtNtNtCslVmKeilYcE_4wgpu3api6buffer6BufferE8try_from0Bb_ FNDA:1,_RNCNvXs6_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6buffer13indirect_argsNtB7_27RadixSortIndirectArgsBufferINtNtCs6joXTnudZij_4core7convert7TryFromNtNtNtCslVmKeilYcE_4wgpu3api6buffer6BufferE8try_from0Bb_ @@ -191,9 +191,9 @@ DA:22,32 DA:23,32 DA:25,32 DA:26,32 -DA:34,88 -DA:35,88 -DA:36,88 +DA:34,717 +DA:35,717 +DA:36,717 DA:40,1 DA:41,1 DA:42,1 @@ -208,9 +208,9 @@ DA:67,32 DA:68,32 DA:70,32 DA:71,32 -DA:79,88 -DA:80,88 -DA:81,88 +DA:79,717 +DA:80,717 +DA:81,717 DA:85,1 DA:86,1 DA:87,1 @@ -259,15 +259,15 @@ FN:61,_RNvMNtCsegerxfp6ECu_16wgpu_3dgs_viewer6cameraNtB2_6Camera8pitch_by FN:80,_RNvMNtCsegerxfp6ECu_16wgpu_3dgs_viewer6cameraNtB2_6Camera9get_right FN:90,_RNvXs_NtCsegerxfp6ECu_16wgpu_3dgs_viewer6cameraNtB4_6CameraNtB4_11CameraTrait10projection FN:86,_RNvXs_NtCsegerxfp6ECu_16wgpu_3dgs_viewer6cameraNtB4_6CameraNtB4_11CameraTrait4view -FNDA:110,_RNvMNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6cameraNtB2_6Camera11get_forward +FNDA:1997,_RNvMNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6cameraNtB2_6Camera11get_forward FNDA:25,_RNvMNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6cameraNtB2_6Camera3new -FNDA:28,_RNvMNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6cameraNtB2_6Camera6yaw_by -FNDA:27,_RNvMNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6cameraNtB2_6Camera7move_by -FNDA:27,_RNvMNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6cameraNtB2_6Camera7move_up -FNDA:28,_RNvMNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6cameraNtB2_6Camera8pitch_by -FNDA:27,_RNvMNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6cameraNtB2_6Camera9get_right -FNDA:56,_RNvXs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6cameraNtB4_6CameraNtB4_11CameraTrait10projection -FNDA:56,_RNvXs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6cameraNtB4_6CameraNtB4_11CameraTrait4view +FNDA:657,_RNvMNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6cameraNtB2_6Camera6yaw_by +FNDA:656,_RNvMNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6cameraNtB2_6Camera7move_by +FNDA:656,_RNvMNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6cameraNtB2_6Camera7move_up +FNDA:657,_RNvMNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6cameraNtB2_6Camera8pitch_by +FNDA:656,_RNvMNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6cameraNtB2_6Camera9get_right +FNDA:685,_RNvXs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6cameraNtB4_6CameraNtB4_11CameraTrait10projection +FNDA:685,_RNvXs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer6cameraNtB4_6CameraNtB4_11CameraTrait4view FNDA:0,_RNvMNtCsegerxfp6ECu_16wgpu_3dgs_viewer6cameraNtB2_6Camera11get_forward FNDA:0,_RNvMNtCsegerxfp6ECu_16wgpu_3dgs_viewer6cameraNtB2_6Camera3new FNDA:0,_RNvMNtCsegerxfp6ECu_16wgpu_3dgs_viewer6cameraNtB2_6Camera6yaw_by @@ -288,33 +288,33 @@ DA:45,25 DA:46,25 DA:47,25 DA:48,25 -DA:51,27 -DA:52,27 -DA:53,27 -DA:56,27 -DA:57,27 -DA:58,27 -DA:61,28 -DA:62,28 -DA:63,28 -DA:66,28 -DA:67,28 -DA:68,28 -DA:71,110 -DA:72,110 -DA:73,110 -DA:74,110 -DA:75,110 -DA:77,110 -DA:80,27 -DA:81,27 -DA:82,27 -DA:86,56 -DA:87,56 -DA:88,56 -DA:90,56 -DA:91,56 -DA:92,56 +DA:51,656 +DA:52,656 +DA:53,656 +DA:56,656 +DA:57,656 +DA:58,656 +DA:61,657 +DA:62,657 +DA:63,657 +DA:66,657 +DA:67,657 +DA:68,657 +DA:71,1997 +DA:72,1997 +DA:73,1997 +DA:74,1997 +DA:75,1997 +DA:77,1997 +DA:80,656 +DA:81,656 +DA:82,656 +DA:86,685 +DA:87,685 +DA:88,685 +DA:90,685 +DA:91,685 +DA:92,685 BRF:0 BRH:0 LF:36 @@ -371,10 +371,10 @@ FNDA:0,_RNvMCsegerxfp6ECu_16wgpu_3dgs_viewerINtB2_6ViewerpE31update_model_transf FNDA:0,_RNvMCsegerxfp6ECu_16wgpu_3dgs_viewerINtB2_6ViewerpE34update_gaussian_transform_with_podB2_ FNDA:0,_RNvMCsegerxfp6ECu_16wgpu_3dgs_viewerINtB2_6ViewerpE6renderB2_ FNDA:0,_RNvXs_Csegerxfp6ECu_16wgpu_3dgs_viewerNtB4_19ViewerCreateOptionsNtNtCs6joXTnudZij_4core7default7Default7default -FNDA:27,_RINvMCsh1qtJxU4GWl_16wgpu_3dgs_viewerNtB3_6Viewer13update_cameraNtNtB3_6camera6CameraECs8i3LEZ4i8f6_9selection +FNDA:656,_RINvMCsh1qtJxU4GWl_16wgpu_3dgs_viewerNtB3_6Viewer13update_cameraNtNtB3_6camera6CameraECs8i3LEZ4i8f6_9selection FNDA:1,_RINvMCsh1qtJxU4GWl_16wgpu_3dgs_viewerNtB3_6Viewer16new_with_optionsNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core8gaussian9GaussiansECs8i3LEZ4i8f6_9selection FNDA:1,_RNvMCsh1qtJxU4GWl_16wgpu_3dgs_viewerNtB2_6Viewer22update_model_transformCs8i3LEZ4i8f6_9selection -FNDA:27,_RNvMCsh1qtJxU4GWl_16wgpu_3dgs_viewerNtB2_6Viewer6renderCs8i3LEZ4i8f6_9selection +FNDA:656,_RNvMCsh1qtJxU4GWl_16wgpu_3dgs_viewerNtB2_6Viewer6renderCs8i3LEZ4i8f6_9selection FNDA:0,_RINvMCsh1qtJxU4GWl_16wgpu_3dgs_viewerNtB3_6Viewer13update_cameraNtNtB3_6camera6CameraECs49roiI3Bpf9_6simple FNDA:0,_RINvMCsh1qtJxU4GWl_16wgpu_3dgs_viewerNtB3_6Viewer16new_with_optionsNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core8gaussian9GaussiansECs49roiI3Bpf9_6simple FNDA:0,_RINvMCsh1qtJxU4GWl_16wgpu_3dgs_viewerNtB3_6Viewer3newNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core8gaussian9GaussiansECs49roiI3Bpf9_6simple @@ -472,14 +472,14 @@ DA:196,14 DA:197,14 DA:198,14 DA:199,14 -DA:202,28 -DA:203,28 -DA:204,28 -DA:205,28 -DA:206,28 -DA:207,28 -DA:208,28 -DA:209,28 +DA:202,657 +DA:203,657 +DA:204,657 +DA:205,657 +DA:206,657 +DA:207,657 +DA:208,657 +DA:209,657 DA:212,12 DA:213,12 DA:214,12 @@ -523,14 +523,14 @@ DA:260,1 DA:261,1 DA:262,1 DA:263,1 -DA:266,40 -DA:267,40 -DA:268,40 -DA:270,40 -DA:271,40 -DA:273,40 -DA:274,40 -DA:275,40 +DA:266,669 +DA:267,669 +DA:268,669 +DA:270,669 +DA:271,669 +DA:273,669 +DA:274,669 +DA:275,669 DA:287,22 DA:288,22 DA:289,22 @@ -1087,7 +1087,7 @@ FNDA:0,_RNvMs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12preprocessorINtB4_12Preprocess FNDA:8,_RNCNvMs0_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12preprocessorINtB7_12PreprocessorNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsuE22new_without_bind_group0Cs8i3LEZ4i8f6_9selection FNDA:1,_RNvMNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12preprocessorINtB2_12PreprocessorNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsuE17create_bind_groupCs8i3LEZ4i8f6_9selection FNDA:1,_RNvMs0_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12preprocessorINtB5_12PreprocessorNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsuE22new_without_bind_groupCs8i3LEZ4i8f6_9selection -FNDA:27,_RNvMs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12preprocessorINtB4_12PreprocessorNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsE10preprocessCs8i3LEZ4i8f6_9selection +FNDA:656,_RNvMs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12preprocessorINtB4_12PreprocessorNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsE10preprocessCs8i3LEZ4i8f6_9selection FNDA:1,_RNvMs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12preprocessorINtB4_12PreprocessorNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsE24create_bind_group_staticCs8i3LEZ4i8f6_9selection FNDA:1,_RNvMs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12preprocessorINtB4_12PreprocessorNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsE3newCs8i3LEZ4i8f6_9selection FNDA:0,_RNCNvMs0_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12preprocessorINtB7_12PreprocessorNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsuE22new_without_bind_group0Cs49roiI3Bpf9_6simple @@ -1177,12 +1177,12 @@ DA:257,14 DA:258,14 DA:259,14 DA:260,14 -DA:263,40 -DA:264,40 -DA:266,40 -DA:267,40 -DA:269,40 -DA:270,40 +DA:263,669 +DA:264,669 +DA:266,669 +DA:267,669 +DA:269,669 +DA:270,669 DA:274,30 DA:275,30 DA:276,30 @@ -1385,16 +1385,16 @@ FN:812,_RNvYpNtNtNtCsegerxfp6ECu_16wgpu_3dgs_viewer12radix_sorter9wgpu_sort16Sor FNDA:22,_RNvMs0_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorterINtB5_11RadixSorteruE23new_without_bind_groups FNDA:15,_RNvMs0_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorterINtB5_11RadixSorteruE4sort FNDA:14,_RNvMs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorterNtB4_11RadixSorter3new -FNDA:40,_RNvMs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorterNtB4_11RadixSorter4sort +FNDA:669,_RNvMs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorterNtB4_11RadixSorter4sort FNDA:30,_RNvMNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorterINtB2_11RadixSorteruE18create_bind_groupsB4_ FNDA:52,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB2_9GPUSorter17bind_group_layout FNDA:30,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB2_9GPUSorter17general_info_data -FNDA:55,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB2_9GPUSorter23record_prefix_histogram +FNDA:684,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB2_9GPUSorter23record_prefix_histogram FNDA:30,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB2_9GPUSorter26create_internal_mem_buffer FNDA:30,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB2_9GPUSorter28create_internal_sort_buffers -FNDA:55,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB2_9GPUSorter28record_scatter_keys_indirect +FNDA:684,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB2_9GPUSorter28record_scatter_keys_indirect FNDA:30,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB2_9GPUSorter30create_internal_keyval_buffers -FNDA:55,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB2_9GPUSorter35record_calculate_histogram_indirect +FNDA:684,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB2_9GPUSorter35record_calculate_histogram_indirect FNDA:22,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB2_9GPUSorter3new FNDA:91,_RNvNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sort15histo_blocks_ru FNDA:91,_RNvNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sort16keys_buffer_size @@ -1403,10 +1403,10 @@ FNDA:31,_RNvNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sort22keys_b FNDA:0,_RNvXs0_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB5_11SortBuffersNtB5_16SortBuffersTrait10bind_group FNDA:0,_RNvXs0_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB5_11SortBuffersNtB5_16SortBuffersTrait12state_buffer FNDA:0,_RNvXs0_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB5_11SortBuffersNtB5_16SortBuffersTrait3len -FNDA:55,_RNvXs1_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB5_19InternalSortBuffersNtB5_16SortBuffersTrait10bind_group +FNDA:684,_RNvXs1_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB5_19InternalSortBuffersNtB5_16SortBuffersTrait10bind_group FNDA:0,_RNvXs1_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB5_19InternalSortBuffersNtB5_16SortBuffersTrait12state_buffer FNDA:0,_RNvXs1_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB5_19InternalSortBuffersNtB5_16SortBuffersTrait3len -FNDA:55,_RINvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB3_9GPUSorter13sort_indirectNtB3_19InternalSortBuffersEB7_ +FNDA:684,_RINvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB3_9GPUSorter13sort_indirectNtB3_19InternalSortBuffersEB7_ FNDA:0,_RINvMNtNtCsegerxfp6ECu_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB3_9GPUSorter13sort_indirectpEB7_ FNDA:0,_RINvMNtNtCsegerxfp6ECu_16wgpu_3dgs_viewer12radix_sorter9wgpu_sortNtB3_9GPUSorter4sortpEB7_ FNDA:0,_RNvMNtCsegerxfp6ECu_16wgpu_3dgs_viewer12radix_sorterINtB2_11RadixSorterpE18create_bind_groupsB4_ @@ -1468,16 +1468,16 @@ DA:50,14 DA:51,14 DA:52,14 DA:53,14 -DA:56,40 -DA:57,40 -DA:58,40 -DA:59,40 -DA:60,40 -DA:61,40 -DA:62,40 -DA:63,40 -DA:64,40 -DA:66,40 +DA:56,669 +DA:57,669 +DA:58,669 +DA:59,669 +DA:60,669 +DA:61,669 +DA:62,669 +DA:63,669 +DA:64,669 +DA:66,669 DA:71,22 DA:72,22 DA:73,22 @@ -1759,46 +1759,46 @@ DA:521,0 DA:522,0 DA:523,0 DA:524,0 -DA:526,55 -DA:527,55 -DA:528,55 -DA:529,55 -DA:530,55 -DA:531,55 -DA:532,55 -DA:533,55 -DA:534,55 -DA:535,55 -DA:536,55 -DA:537,55 -DA:538,55 -DA:539,55 -DA:540,55 -DA:541,55 -DA:543,55 -DA:544,55 -DA:545,55 -DA:546,55 -DA:547,55 -DA:548,55 -DA:549,55 -DA:550,55 -DA:551,55 -DA:552,55 -DA:553,55 -DA:556,55 -DA:557,55 -DA:558,55 -DA:559,55 -DA:560,55 -DA:561,55 -DA:562,55 -DA:563,55 -DA:564,55 -DA:566,55 -DA:567,55 -DA:568,55 -DA:569,55 +DA:526,684 +DA:527,684 +DA:528,684 +DA:529,684 +DA:530,684 +DA:531,684 +DA:532,684 +DA:533,684 +DA:534,684 +DA:535,684 +DA:536,684 +DA:537,684 +DA:538,684 +DA:539,684 +DA:540,684 +DA:541,684 +DA:543,684 +DA:544,684 +DA:545,684 +DA:546,684 +DA:547,684 +DA:548,684 +DA:549,684 +DA:550,684 +DA:551,684 +DA:552,684 +DA:553,684 +DA:556,684 +DA:557,684 +DA:558,684 +DA:559,684 +DA:560,684 +DA:561,684 +DA:562,684 +DA:563,684 +DA:564,684 +DA:566,684 +DA:567,684 +DA:568,684 +DA:569,684 DA:571,0 DA:572,0 DA:573,0 @@ -1820,26 +1820,26 @@ DA:592,0 DA:594,0 DA:595,0 DA:596,0 -DA:598,55 -DA:599,55 -DA:600,55 -DA:601,55 -DA:602,55 -DA:603,55 -DA:604,55 -DA:605,55 -DA:606,55 -DA:607,55 -DA:609,55 -DA:610,55 -DA:611,55 -DA:613,55 -DA:614,55 -DA:616,55 -DA:617,55 -DA:619,55 -DA:620,55 -DA:621,55 +DA:598,684 +DA:599,684 +DA:600,684 +DA:601,684 +DA:602,684 +DA:603,684 +DA:604,684 +DA:605,684 +DA:606,684 +DA:607,684 +DA:609,684 +DA:610,684 +DA:611,684 +DA:613,684 +DA:614,684 +DA:616,684 +DA:617,684 +DA:619,684 +DA:620,684 +DA:621,684 DA:628,0 DA:629,0 DA:630,0 @@ -1854,17 +1854,17 @@ DA:641,0 DA:642,0 DA:643,0 DA:644,0 -DA:658,55 -DA:659,55 -DA:660,55 -DA:661,55 -DA:662,55 -DA:663,55 -DA:664,55 -DA:666,55 -DA:667,55 -DA:668,55 -DA:669,55 +DA:658,684 +DA:659,684 +DA:660,684 +DA:661,684 +DA:662,684 +DA:663,684 +DA:664,684 +DA:666,684 +DA:667,684 +DA:668,684 +DA:669,684 DA:672,0 DA:673,0 DA:674,0 @@ -1996,9 +1996,9 @@ DA:878,0 DA:909,0 DA:910,0 DA:911,0 -DA:913,55 -DA:914,55 -DA:915,55 +DA:913,684 +DA:914,684 +DA:915,684 DA:917,0 DA:918,0 DA:919,0 @@ -2072,10 +2072,10 @@ FNDA:0,_RNvMs0_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer8rendererINtB5_8RendererNtNtNtC FNDA:0,_RNvMs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer8rendererINtB4_8RendererNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsE24create_bind_group_staticCs5eqtLxP0hPX_11multi_model FNDA:1,_RNvMNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer8rendererINtB2_8RendererNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsuE17create_bind_groupCs8i3LEZ4i8f6_9selection FNDA:1,_RNvMs0_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer8rendererINtB5_8RendererNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsuE22new_without_bind_groupCs8i3LEZ4i8f6_9selection -FNDA:27,_RNvMs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer8rendererINtB4_8RendererNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsE16render_with_passCs8i3LEZ4i8f6_9selection +FNDA:656,_RNvMs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer8rendererINtB4_8RendererNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsE16render_with_passCs8i3LEZ4i8f6_9selection FNDA:1,_RNvMs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer8rendererINtB4_8RendererNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsE24create_bind_group_staticCs8i3LEZ4i8f6_9selection FNDA:1,_RNvMs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer8rendererINtB4_8RendererNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsE3newCs8i3LEZ4i8f6_9selection -FNDA:27,_RNvMs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer8rendererINtB4_8RendererNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsE6renderCs8i3LEZ4i8f6_9selection +FNDA:656,_RNvMs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer8rendererINtB4_8RendererNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsE6renderCs8i3LEZ4i8f6_9selection FNDA:0,_RNvMNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer8rendererINtB2_8RendererNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsuE17create_bind_groupCs49roiI3Bpf9_6simple FNDA:0,_RNvMs0_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer8rendererINtB5_8RendererNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsuE22new_without_bind_groupCs49roiI3Bpf9_6simple FNDA:0,_RNvMs_NtCsh1qtJxU4GWl_16wgpu_3dgs_viewer8rendererINtB4_8RendererNtNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer8gaussian41GaussianPodWithShSingleCov3dSingleConfigsE16render_with_passCs49roiI3Bpf9_6simple @@ -2134,36 +2134,36 @@ DA:143,14 DA:144,14 DA:145,14 DA:146,14 -DA:149,40 -DA:150,40 -DA:151,40 -DA:152,40 -DA:153,40 -DA:154,40 -DA:155,40 -DA:156,40 -DA:157,40 -DA:158,40 -DA:159,40 -DA:160,40 -DA:161,40 -DA:162,40 -DA:163,40 -DA:164,40 -DA:165,40 -DA:166,40 -DA:167,40 -DA:169,40 -DA:170,40 -DA:173,40 -DA:174,40 -DA:175,40 -DA:176,40 -DA:177,40 -DA:178,40 -DA:179,40 -DA:180,40 -DA:181,40 +DA:149,669 +DA:150,669 +DA:151,669 +DA:152,669 +DA:153,669 +DA:154,669 +DA:155,669 +DA:156,669 +DA:157,669 +DA:158,669 +DA:159,669 +DA:160,669 +DA:161,669 +DA:162,669 +DA:163,669 +DA:164,669 +DA:165,669 +DA:166,669 +DA:167,669 +DA:169,669 +DA:170,669 +DA:173,669 +DA:174,669 +DA:175,669 +DA:176,669 +DA:177,669 +DA:178,669 +DA:179,669 +DA:180,669 +DA:181,669 DA:185,30 DA:186,30 DA:187,30 @@ -2349,8 +2349,8 @@ FN:138,_RNvXs7_NtNtCsegerxfp6ECu_16wgpu_3dgs_viewer9selection6bufferNtB5_24Viewp FN:175,_RNvXsa_NtNtCsegerxfp6ECu_16wgpu_3dgs_viewer9selection6bufferNtB5_33PreprocessorInvertSelectionBufferNtNtCs3BY6ADzPIDT_14wgpu_3dgs_core6buffer13BufferWrapper6buffer FN:181,_RNvXsb_NtNtCsegerxfp6ECu_16wgpu_3dgs_viewer9selection6bufferNtNtNtCslVmKeilYcE_4wgpu3api6buffer6BufferINtNtCs6joXTnudZij_4core7convert4FromNtB5_33PreprocessorInvertSelectionBufferE4from FN:189,_RNvXsc_NtNtCsegerxfp6ECu_16wgpu_3dgs_viewer9selection6bufferNtB5_33PreprocessorInvertSelectionBufferINtNtCs6joXTnudZij_4core7convert7TryFromNtNtNtCslVmKeilYcE_4wgpu3api6buffer6BufferE8try_from -FNDA:16,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer9selection6bufferNtB2_15ViewportTexture3new -FNDA:31,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer9selection6bufferNtB2_15ViewportTexture4view +FNDA:11,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer9selection6bufferNtB2_15ViewportTexture3new +FNDA:21,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer9selection6bufferNtB2_15ViewportTexture4view FNDA:23,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer9selection6bufferNtB2_15ViewportTexture7texture FNDA:8,_RNvMs4_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer9selection6bufferNtB5_24ViewportTextureF32Buffer3new FNDA:9,_RNvMs4_NtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer9selection6bufferNtB5_24ViewportTextureF32Buffer6update @@ -2393,30 +2393,30 @@ FNDA:0,_RNvXsb_NtNtCsegerxfp6ECu_16wgpu_3dgs_viewer9selection6bufferNtNtNtCslVmK FNDA:0,_RNvXsc_NtNtCsegerxfp6ECu_16wgpu_3dgs_viewer9selection6bufferNtB5_33PreprocessorInvertSelectionBufferINtNtCs6joXTnudZij_4core7convert7TryFromNtNtNtCslVmKeilYcE_4wgpu3api6buffer6BufferE8try_from FNF:21 FNH:21 -DA:16,16 -DA:17,16 -DA:18,16 -DA:19,16 -DA:20,16 -DA:21,16 -DA:22,16 -DA:23,16 -DA:24,16 -DA:25,16 -DA:26,16 -DA:27,16 -DA:28,16 -DA:29,16 -DA:30,16 -DA:32,16 -DA:34,16 -DA:35,16 +DA:16,11 +DA:17,11 +DA:18,11 +DA:19,11 +DA:20,11 +DA:21,11 +DA:22,11 +DA:23,11 +DA:24,11 +DA:25,11 +DA:26,11 +DA:27,11 +DA:28,11 +DA:29,11 +DA:30,11 +DA:32,11 +DA:34,11 +DA:35,11 DA:38,23 DA:39,23 DA:40,23 -DA:43,31 -DA:44,31 -DA:45,31 +DA:43,21 +DA:44,21 +DA:45,21 DA:57,15 DA:58,15 DA:59,15 @@ -2544,9 +2544,9 @@ FNDA:7,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer9selection17viewport_selectorNtB FNDA:1,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer9selection17viewport_selectorNtB2_16ViewportSelector5clear FNDA:6,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer9selection17viewport_selectorNtB2_16ViewportSelector5start FNDA:6,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer9selection17viewport_selectorNtB2_16ViewportSelector6render -FNDA:8,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer9selection17viewport_selectorNtB2_16ViewportSelector6resize +FNDA:3,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer9selection17viewport_selectorNtB2_16ViewportSelector6resize FNDA:6,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer9selection17viewport_selectorNtB2_16ViewportSelector6update -FNDA:24,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer9selection17viewport_selectorNtB2_16ViewportSelector7texture +FNDA:14,_RNvMNtNtCsh1qtJxU4GWl_16wgpu_3dgs_viewer9selection17viewport_selectorNtB2_16ViewportSelector7texture FNDA:0,_RNvMNtNtCsegerxfp6ECu_16wgpu_3dgs_viewer9selection17viewport_selectorNtB2_16ViewportSelector16set_brush_radius FNDA:0,_RNvMNtNtCsegerxfp6ECu_16wgpu_3dgs_viewer9selection17viewport_selectorNtB2_16ViewportSelector3new FNDA:0,_RNvMNtNtCsegerxfp6ECu_16wgpu_3dgs_viewer9selection17viewport_selectorNtB2_16ViewportSelector5clear @@ -2642,16 +2642,16 @@ DA:295,3 DA:296,3 DA:298,3 DA:301,6 -DA:304,24 -DA:305,24 -DA:306,24 +DA:304,14 +DA:305,14 +DA:306,14 DA:309,1 DA:310,1 DA:311,1 DA:312,1 -DA:317,8 -DA:318,8 -DA:319,8 +DA:317,3 +DA:318,3 +DA:319,3 BRF:0 BRH:0 LF:95 diff --git a/coverage/run.ps1 b/coverage/run.ps1 index a9655ad..9c3d3c4 100644 --- a/coverage/run.ps1 +++ b/coverage/run.ps1 @@ -1,59 +1,9 @@ -$BASE_DIR = $PSScriptRoot -$LCOV_PATH = "$BASE_DIR/lcov.info" +$TARGET_DIR = "$PSScriptRoot\..\target\coverage" -echo "Running coverage..." - -cargo llvm-cov clean --workspace - -echo "Running 'simple' example" -cargo llvm-cov run --example simple --all-features -- -m "$BASE_DIR/model.ply" - -echo "Running 'multi-model' example" -cargo llvm-cov run --example multi-model --all-features -- -m "$BASE_DIR/model.ply" -m "$BASE_DIR/model.ply" - -echo "Running 'selection' example" -cargo llvm-cov run --example selection --all-features -- -m "$BASE_DIR/model.ply" - -# `--doctests` flag is currently unstable -# echo "Running doctests" -# cargo llvm-cov --no-report --doctests --all-features -cargo test --doc # Run doctests without tracking coverage - -echo "Running tests" -cargo llvm-cov --no-report nextest --all-features - -echo "Generating coverage report" -cargo llvm-cov report --lcov --output-path "$LCOV_PATH" - -echo "Generating badge" -$total = 0 -$covered = 0 -Select-String -Path "$LCOV_PATH" -Pattern "DA:" | ForEach-Object { - if ($_ -match "DA:\d+,(\d+)") { - $total++ - if ($matches[1] -ne "0") { - $covered++ - } - } -} - -$badge_percentage = if ($total -eq 0) { 100 } else { [math]::Round(($covered / $total) * 100) } -$badge_color = if ($badge_percentage -ge 80) { - "brightgreen" -} elseif ($badge_percentage -ge 50) { - "yellow" -} else { - "red" +if (!(Test-Path -Path $TARGET_DIR)) { + New-Item -ItemType Directory -Path $TARGET_DIR | Out-Null } -"{ - `"schemaVersion`": 1, - `"label`": `"coverage`", - `"message`": `"$badge_percentage%`", - `"color`": `"$badge_color`" -}" | Out-File -FilePath "$BASE_DIR/badge.json" -Encoding ascii - -# echo "Cleaning up" -# rm "$BASE_DIR/output.ply" - -echo "Done" +rustc "$PSScriptRoot\coverage.rs" -o "$TARGET_DIR\coverage.exe" +& "$TARGET_DIR\coverage.exe" +Remove-Item "$TARGET_DIR\coverage.exe" \ No newline at end of file diff --git a/coverage/run.sh b/coverage/run.sh new file mode 100644 index 0000000..4806ef0 --- /dev/null +++ b/coverage/run.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env sh +set -eu + +SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) +TARGET_DIR="$SCRIPT_DIR/../target/coverage" + +mkdir -p "$TARGET_DIR" + +OUT_BIN="$TARGET_DIR/coverage" + +cleanup() { + rm -f "$OUT_BIN" +} +trap cleanup 0 + +rustc "$SCRIPT_DIR/coverage.rs" -o "$OUT_BIN" +"$OUT_BIN"