From ffe76b4a3ebf02364b061f99ad17297deec8594d Mon Sep 17 00:00:00 2001 From: Thierry Berger Date: Sun, 1 Dec 2024 17:00:42 +0100 Subject: [PATCH] Compress wasm (#1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * custom server working for compressing wasm * up dependencies + add brotli in build script * Fix non-macos build * chore :remove the `server` crate + add dist2d/dist3d to .gitignore --------- Co-authored-by: Sébastien Crozet --- .gitignore | 2 ++ Cargo.toml | 8 ++++++-- build_wasm.sh | 5 ++++- src/grid/grid.rs | 8 +++++--- src/grid/sort.rs | 1 + src/pipeline.rs | 5 ++++- 6 files changed, 22 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index c54b2e1..9d74783 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ .vscode .idea dist +dist2d +dist3d assets/**/*.bin \ No newline at end of file diff --git a/Cargo.toml b/Cargo.toml index d3f288c..a8a5ae8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,10 @@ [workspace] members = [ - "crates/wgsparkl-testbed2d", "crates/wgsparkl-testbed3d", "crates/wgsparkl2d", "crates/wgsparkl3d"] + "crates/wgsparkl-testbed2d", + "crates/wgsparkl-testbed3d", + "crates/wgsparkl2d", + "crates/wgsparkl3d", +] resolver = "2" [workspace.dependencies] @@ -15,7 +19,7 @@ encase = { version = "0.10.0", features = ["nalgebra"] } [workspace.lints] rust.unexpected_cfgs = { level = "warn", check-cfg = [ - 'cfg(feature, values("dim2", "dim3"))' + 'cfg(feature, values("dim2", "dim3"))', ] } [patch.crates-io] diff --git a/build_wasm.sh b/build_wasm.sh index 46f5c5d..8b2f27d 100755 --- a/build_wasm.sh +++ b/build_wasm.sh @@ -5,4 +5,7 @@ cargo build --example elasticity3 --release --target wasm32-unknown-unknown --fe wasm-bindgen --no-typescript --target web --out-dir dist2d --out-name elasticity2 ./target/wasm32-unknown-unknown/release/examples/elasticity2.wasm wasm-bindgen --no-typescript --target web --out-dir dist3d --out-name elasticity3 ./target/wasm32-unknown-unknown/release/examples/elasticity3.wasm wasm-opt -Oz -o ./dist2d/opt.wasm ./dist2d/elasticity2_bg.wasm && mv ./dist2d/opt.wasm ./dist2d/elasticity2_bg.wasm -wasm-opt -Oz -o ./dist3d/opt.wasm ./dist3d/elasticity3_bg.wasm && mv ./dist3d/opt.wasm ./dist3d/elasticity3_bg.wasm \ No newline at end of file +wasm-opt -Oz -o ./dist3d/opt.wasm ./dist3d/elasticity3_bg.wasm && mv ./dist3d/opt.wasm ./dist3d/elasticity3_bg.wasm + +brotli ./dist2d/elasticity2_bg.wasm && mv ./dist2d/elasticity2_bg.wasm.br ./dist2d/elasticity2_bg.wasm +brotli ./dist3d/elasticity3_bg.wasm && mv ./dist3d/elasticity3_bg.wasm.br ./dist3d/elasticity3_bg.wasm \ No newline at end of file diff --git a/src/grid/grid.rs b/src/grid/grid.rs index be9df99..00963ca 100644 --- a/src/grid/grid.rs +++ b/src/grid/grid.rs @@ -1,6 +1,6 @@ use crate::dim_shader_defs; use crate::grid::prefix_sum::{PrefixSumWorkspace, WgPrefixSum}; -use crate::grid::sort::{TouchParticleBlocks, WgSort}; +use crate::grid::sort::WgSort; use crate::solver::{GpuParticles, WgParams}; use naga_oil::compose::NagaModuleDescriptor; use std::sync::Arc; @@ -10,6 +10,9 @@ use wgcore::{utils, Shader}; use wgpu::util::DispatchIndirectArgs; use wgpu::{Buffer, BufferAddress, BufferDescriptor, BufferUsages, ComputePipeline, Device}; +#[cfg(target_os = "macos")] +use crate::grid::sort::TouchParticleBlocks; + #[derive(Shader)] #[shader(derive(WgParams), src = "grid.wgsl", shader_defs = "dim_shader_defs")] pub struct WgGrid { @@ -26,8 +29,7 @@ impl WgGrid { grid: &GpuGrid, prefix_sum: &mut PrefixSumWorkspace, sort_module: &'a WgSort, - #[cfg(target_os = "macos")] - touch_particle_blocks: &'a TouchParticleBlocks, + #[cfg(target_os = "macos")] touch_particle_blocks: &'a TouchParticleBlocks, prefix_sum_module: &'a WgPrefixSum, queue: &mut KernelInvocationQueue<'a>, ) { diff --git a/src/grid/sort.rs b/src/grid/sort.rs index 0c42a54..85560d7 100644 --- a/src/grid/sort.rs +++ b/src/grid/sort.rs @@ -25,6 +25,7 @@ pub struct TouchParticleBlocks { pub(crate) touch_particle_blocks: ComputePipeline, } +#[cfg(target_os = "macos")] impl TouchParticleBlocks { pub fn from_device(device: &wgpu::Device) -> Self { #[cfg(feature = "dim2")] diff --git a/src/pipeline.rs b/src/pipeline.rs index 2556eb2..9404d70 100644 --- a/src/pipeline.rs +++ b/src/pipeline.rs @@ -1,6 +1,6 @@ use crate::grid::grid::{GpuGrid, WgGrid}; use crate::grid::prefix_sum::{PrefixSumWorkspace, WgPrefixSum}; -use crate::grid::sort::{TouchParticleBlocks, WgSort}; +use crate::grid::sort::WgSort; use crate::models::GpuModels; use crate::solver::{ GpuParticles, GpuSimulationParams, Particle, SimulationParams, WgG2P, WgGridUpdate, WgP2G, @@ -13,6 +13,9 @@ use wgcore::Shader; use wgpu::Device; use wgrapier::dynamics::{BodyDesc, GpuBodySet, WgIntegrate}; +#[cfg(target_os = "macos")] +use crate::grid::sort::TouchParticleBlocks; + pub struct MpmPipeline { grid: WgGrid, prefix_sum: WgPrefixSum,