Skip to content

Releases: stoatworks-labs/toolpath

Release list

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 23 Sep 23:59

CNC pocketing from a distance field, as an FFGL effect for Resolume Arena and Avenue, shown as SW Toolpath. A router clears a pocket with a round tool whose centre can only go where the whole disc fits, and the path that does it is the pocket's offset contours, the level sets of its distance field. So one field is the whole CAM job: the bright part of the clip is the pocket, jump flooding on the GPU gives its field on a lattice of two pixels a texel, the offset levels are traced into ordered passes, and a tool runs them at Feed, stamping its disc into a cut that persists.

Nothing is drawn: inside corners keep a fillet of exactly the tool's radius, a slot narrower than the tool is never entered, a stepover wider than the tool leaves ridges of stock, and a big pocket takes longer than a small one. Latch machines one grab of the clip; Live re-cuts every frame. Reveal, Engrave, Paths (the CAM preview) and Field (a glow, bevel or outline from the same field) show it four ways.

What is verified

By tools/verify.sh on an M4 Max, macOS 26.4.1, on 2026-09-23, at two rasters (320×180 and 1280×720):

  • The flooded field is exact (6 ULP) on rectilinear shapes and within 0.58 px at 720p on curved ones, against an exact Euclidean distance transform and a bound of √2 texels; without the 1+JFA prepass one case is 23 px out.
  • A square pocket's inside corners keep a fillet of radius 36.002 px for a 36 px tool, every boundary point within 0.06 px of that circle.
  • A slot 2 px narrower than the tool is never entered; one 5 px wider is cut end to end.
  • Past a stepover of one diameter, ridges stand s − 2r wide to within 0.15 px; at or below it there are none.
  • The tool covers exactly Feed pixels of path a second, at 60 and at 30 fps (error 1e-14).
  • Eight perturbed plugins each fail their check, and one character changed in the shipped GLSL is caught by three of them.
  • All 25 sweepable controls change the picture; oxbow loads it as SW Toolpath / TP01 / effect and renders 120 frames.
  • Render cost at the defaults: Latch 0.16 ms/frame at 4K; Live 6.5 ms at 720p, 7.3 at 1080p and 9.0 at 4K. macOS figures only.
  • Windows, in Resolume Arena 7.27.1 (win-lab, Mesa llvmpipe, no GPU, 2026-09-24): a CI build of this source loads from Extra Effects, registers as SW Toolpath / TP01 / effect, all 31 host controls match the declaration, it renders and Arena's log stays clean: all 9 of the fleet gate's checks, in two runs. Some controls were inconclusive at the gate's thumbnail size, a different set each run; the harness sweep proves every one live. Software rendering says nothing about a GPU or about speed.

What is not

  • Never loaded into Resolume on macOS.
  • The pocket is decided on a lattice of two pixels a texel, so its walls are two-pixel steps and anything narrower than the lattice is not seen. One tool, one depth, no ramping, and no finishing pass along the medial axis, so a pocket whose last pass falls short of its middle keeps an island there.
  • The default Threshold (0.5 by luma) is the bright part of the picture; on darker footage lower it, or use Invert or Detect On Chroma.
  • No OpenFX port and no presets. There is a user guide at https://stoatworks-labs.com/software/toolpath/guide/.

The macOS build is Developer ID-signed and notarised by the release pipeline after publication; if macOS refuses a download, it predates the signing, so download it again. The Windows build is unsigned, so SmartScreen warns once.