# spherro
[](https://crates.io/crates/spherro)
A smoothed particle hydrodynamics fluid simulator. Built with rust, and compiled to wasm. Check out the demo [here](https://apps.karthikkaranth.me/spherro/).
## Building
### Dependencies
All instructions have been tested on Ubuntu 18.04, with the versions:
* rust 1.35.0
* wasm-pack 0.8.1
* npm 6.9.0
* node v10.16.0
### Steps to build
* Install:
* [The standard rust toolchain](https://www.rust-lang.org/tools/install)
* [wasm-pack](https://rustwasm.github.io/wasm-pack/installer/)
* [npm](https://www.npmjs.com/get-npm)
* Clone this repo: `git clone https://github.com/medakk/spherro`
* In the root folder of the repo, run `wasm-pack build`
* In the `www` folder, run:
```
npm install
npm run start
```
This will start a server(defaults to http://localhost:8080) serving spherro.
## Debugging
Running `cargo run --bin spherro-bin --release` starts a [kiss3d](https://docs.rs/kiss3d/0.20.1/kiss3d/)-based viewer that can be used to debug the simulator without going through the browser.
Running `cargo bench` starts a headless dambreak simulation with a fixed time step. This can be used to test performance changes.
## References
* [SPH Fluids in Computer Graphics](https://cg.informatik.uni-freiburg.de/publications/2014_EG_SPH_STAR.pdf), _EUROGRAPHICS 2014_
## License
[MIT License](LICENSE)