# fluid_core
GPU-accelerated real-time fluid simulation library for Rust (`wgpu` backend).
`fluid_core` is the reusable SDK crate. Window/event-loop code should stay in your app layer.
## Install
```toml
[dependencies]
fluid_core = "0.1"
```
## What This Crate Provides
- `FluidEngine`: main engine entry point
- `FluidConfig`: runtime simulation and rendering parameters
- `InputManager`: mouse/touch/programmatic input injection
- `RenderContext`: borrow-safe GPU context snapshot for UI integration
## Quick Start
```rust
use fluid_core::{FluidConfig, FluidEngine};
// `window` can be any type implementing HasWindowHandle + HasDisplayHandle.
let mut engine = FluidEngine::new(&window, width, height, &FluidConfig::default()).await;
loop {
engine.update(dt);
engine.render()?;
}
```
## Input Injection
```rust
// Pointer-based input
engine.input.pointer_down(0, x, y, None);
engine.input.pointer_move(0, x, y);
engine.input.pointer_up(0);
// Programmatic splat
engine.input.inject(0.5, 0.5, 1200.0, -900.0, [1.0, 0.5, 0.0]);
```
## API Reference
- Crate-local API notes: [api.md](api.md)
- Online docs (after release): https://docs.rs/fluid_core
## License
MIT
## Credits
This project is inspired by the original JavaScript/WebGL implementation:
https://github.com/PavelDoGreat/WebGL-Fluid-Simulation