Skip to content

Commit

Permalink
Compress wasm (#1)
Browse files Browse the repository at this point in the history
* 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 <[email protected]>
  • Loading branch information
Vrixyz and sebcrozet authored Dec 1, 2024
1 parent 844605d commit ffe76b4
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 7 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,6 @@
.vscode
.idea
dist
dist2d
dist3d
assets/**/*.bin
8 changes: 6 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -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]
Expand All @@ -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]
Expand Down
5 changes: 4 additions & 1 deletion build_wasm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
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
8 changes: 5 additions & 3 deletions src/grid/grid.rs
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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 {
Expand All @@ -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>,
) {
Expand Down
1 change: 1 addition & 0 deletions src/grid/sort.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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")]
Expand Down
5 changes: 4 additions & 1 deletion src/pipeline.rs
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -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,
Expand Down

0 comments on commit ffe76b4

Please sign in to comment.