Interactive 2D fluid dynamics simulation with Euler and FLIP solvers, powered by a Rust physics engine compiled to WebAssembly.
An interactive fluid simulation sandbox that combines a high-performance physics core (written in Rust and compiled to WebAssembly) with a responsive web UI (React + TypeScript) and PixiJS for high-performance 2D rendering.
- Physics engine implemented in Rust and compiled to WebAssembly for accurate, real-time simulation
- Two fluid solvers: Euler (grid-based) and FLIP (particle-based hybrid)
- Interactive drawing tools: paint fluid, walls, and erase
- Configurable wind vector and particle emitter position
- Draggable obstacle (ball) that interacts with fluid
- Adjustable simulation parameters: gravity, time step, solver iterations, over-relaxation
- FLIP-specific settings: PIC/FLIP ratio, drift compensation, particle separation
- Visual overlays: grid, velocity vectors, density visualization, FPS counter
- Responsive UI with draggable property editor panels
Open the app locally with bun run dev and try:
- Draw fluid and walls using the pencil tool from the sidebar
- Drag the obstacle ball to interact with the fluid
- Toggle between Euler and FLIP implementations
- Adjust wind direction using the vector canvas in settings
- Configure emitter position and simulation parameters
- Rust + wasm-bindgen for the physics engine
- React + TypeScript for the UI, TailwindCSS for styling, PixiJS for rendering
MIT
notaroomba.dev · GitHub GitHub @NotARoomba