Skip to content

About

Real-time Navier-Stokes desktop wallpaper — WebGPU compute shaders (Lively Wallpaper)

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fluid Flow

A real-time fluid simulation as a desktop wallpaper. Not a video loop — an actual Navier-Stokes solver running on your GPU, 8 compute passes per frame. Your cursor stirs it. When you're not touching it, it drifts.

preview

⤓ Download the latest release · Try it in your browser

Install

  1. Get Lively Wallpaper — free, open source (Microsoft Store or GitHub)
  2. Download fluid-flow-wallpaper.zip from Releases
  3. Drag the zip onto the Lively window, then click the wallpaper to apply

Customize

Right-click the wallpaper in Lively → Customise:

Setting Effect
Vorticity Swirl strength — how long small whirls survive before dissipating
Color fade speed How quickly dye fades to black
Cursor splat size Width of the trail your mouse leaves
Ambient activity Idle color puffs. Set to 0 for cursor-only
Simulation quality Pressure solver iterations: 20 / 40 / 60
Frame rate 30 FPS (recommended) or 60 FPS

How it works

This is Jos Stam's Stable Fluids (SIGGRAPH '99) implemented in WGSL compute shaders on WebGPU. Every frame runs a fixed pass pipeline:

curl → vorticity confinement → advect velocity → splat →
divergence → Jacobi pressure solve ×N → subtract ∇p → advect dye → draw
  • Semi-Lagrangian advection — each cell traces backward along the velocity field and samples where it came from. Unconditionally stable at any timestep.
  • Pressure projection — a Jacobi-relaxed Poisson solve enforces incompressibility. The solver is warm-started from the previous frame's solution instead of cleared, which buys convergence for free.
  • Vorticity confinement — reinjects the small-scale swirl that grid advection numerically diffuses away.
  • Dual-resolution grids — velocity and pressure solve on a coarse grid; dye advects at 1024p on top of it. All state lives in ping-pong texture pairs with bind groups cached by swap state, so the frame loop allocates nothing.

Wallpaper-specific behavior: capped at 30 FPS by default, drops to 20 solver iterations, and fully idles when hidden behind fullscreen apps or when Lively pauses playback — it should never show up on your battery graph.

The full write-up and an interactive version with a per-pass debug HUD live on my portfolio.

Requirements

  • Windows 10/11 with an up-to-date WebView2 runtime (Lively renders web wallpapers through it, and this one needs WebGPU)
  • Roughly any GPU from the last 8 years

Seeing "WebGPU not available"? Your WebView2 runtime is outdated. Update it via Windows Update or microsoft.com/webview2, then re-apply the wallpaper. If it persists, open an issue with your Windows version and GPU.

License

MIT — do whatever you want with it. If you build something on top of it, I'd genuinely like to see it.


Built by Abhigyan Gandhi · MSc High-Performance Graphics & Games Engineering, University of Leeds

About

Real-time Navier-Stokes desktop wallpaper — WebGPU compute shaders (Lively Wallpaper)

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages