Releases: stoatworks-labs/millpond
Release list
v0.1.0
Water, as an FFGL effect for Resolume Arena and Avenue. The clip becomes the bed of a pond seen from above, and the water obeys linear water-wave theory exactly. Every frame the surface is Fourier-transformed on the GPU, and each wavelength is advanced by the phase the capillary-gravity dispersion relation gives it on finite depth, then damped by viscosity. Drop a pebble, skim a stone or let it rain. The still disc inside each ring, the long waves racing ahead, the caustic net on the bed and the sun's glints all fall out of the physics rather than being drawn.
What is verified
By tools/verify.sh on an M4 Max, macOS 26.4, on 2026-09-23:
- Gravity and capillary rings against the exact Cauchy–Poisson integral for the same crater, at every grid point: 0.006–0.019% of the ring.
- The still disc inside the ring: still to 0.01–0.77% of the ring's height, with its edge 0.7–1.2 cm from the Airy prediction.
- Shallow water: in 1 cm of water nothing outruns √(gh).
- Walls: the walled pond is its own mirror image to 3.6e-5. Open: no energy kept.
- Refraction against Snell's law, both axes, two rasters: worst 0.036 mm on 9.3 mm of displacement.
- Fresnel reflection to 1.8e-4; the caustic net conserves light to 0.2% under heavy rain and focuses by the landing map's Jacobian.
- A skim's hops shorten exactly linearly; the rain is Poisson at the rate asked for; every host GL binding comes back as the host left it.
- 13 deliberately wrong models, all detected. All 31 swept parameters measurably change the picture.
- Render cost 0.9 ms/frame at 720p, 1.0 at 1080p, 2.4 at 4K. These are macOS figures only.
- Loaded, registered, listed and rendered in Resolume Arena 7.27.1 on Windows on 2026-09-23, with the shaders compiling and all 40 controls matching their declarations. This was on a software rasteriser (Mesa llvmpipe) in a VM, not on a GPU.
What is not
- Never run on a GPU in Resolume, never loaded into Arena on macOS, and no frame timing taken on Windows.
- Arena's control sweep never presses Drop or Skim, so it could not see Surface Tension, Banks, Pebble Size, Heading and Throw Speed. The harness measures all five live.
- No real audio has reached it in a host, so Resolume's 64-bin FFT mapping is assumed.
- Linear theory: no breaking waves, crown splashes or Worthington jets. The camera looks straight down, and the sky is one colour.
- No user guide, no browser demo, no OpenFX port, no factory presets.
The macOS build is signed and notarised; the Windows build is unsigned, so SmartScreen warns once.
Full Changelog: https://github.com/stoatworks-labs/millpond/commits/v0.1.0