Skip to content

Releases: stoatworks-labs/wipe

Release list

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 23 Sep 21:51

A 1970s vision mixer's analogue pattern generator, as an FFGL mixer for Resolume Arena and Avenue, shown as SW Wipe — the fleet's second mixer, after genlock. It wipes this layer in over the layer below the way the hardware did: not from a stored picture of a shape, but from a few waveforms — a horizontal ramp, a vertical ramp and their parabolas — compared against the fader. Horizontal, Vertical, Box, Diamond, Circle, Clock and Matrix are each a formula in those ramps.

What falls out rather than being drawn: softness is the comparator's gain, so a circle's edge is softer near its middle, where the parabola is flatter; the border is a second comparator; modulation is a sine added to the waveform, which wobbles the edge and travels; a circle is an ellipse unless Aspect Comp is on. Edge law is what the hardware did; Area law makes the B area exactly the fader. Positioner, Multiple, Reverse and Flip-Flop are all there.

Install it in Extra Effects, like every FFGL plugin, and choose it as the upper layer's Blend Mode. The layer's opacity fader drives the wipe: the fader is a parameter named Opacity, and Resolume binds that name to the layer's opacity. Before release the repo said "Extra Mixers" and called the fader Position; both were fixed from what genlock measured in Arena.

What is verified

By tools/verify.sh on an M4 Max, macOS 26.4, on 2026-09-23, at 640×360 and 320×180:

  • Two inputs at two sizes with two MaxUVs: no padding pixel reaches the picture. A null input array, zero inputs, one input, a null A and a null B all return FF_FAIL without crashing.
  • Opacity 0 is A and Opacity 1 is B bitwise, on all seven patterns, with softness, border, modulation, multiple, positioner and rotation all on.
  • A hard edge lands on its column with 0 pixels wrong; a soft edge is recovered by integration to 0.0000 px.
  • Aspect Comp on: eight circle radii agree to 0.0007 px; off: the ellipse's axes are in the picture's ratio, 1.7778.
  • Area law puts every pattern's B area within 0.33 px of area of the fader.
  • The circle's soft edge is 41.855, 23.449 and 14.318 px wide at three radii, each the parabola's closed form to 0.001; the border follows the same slope.
  • The modulator's sine comes back at 16.0000 px of 16, RMS residual 0.0000 px, and travels by exactly −π/2 in a quarter second at 1 Hz.
  • A one-character mutation of the shipped GLSL fails five checks.
  • All 21 sweepable controls change the picture; oxbow sees SW Wipe / WP01 / mixer / inputs 2..2.
  • Render cost 0.12 ms/frame at 4K. Area law adds a CPU solve on frames where something changed: under 0.06 ms for one pattern, about 3 ms for a box and 7–8 ms for a circle at Multiple 8×8. macOS figures only.
  • Windows, in Resolume Arena 7.27.1 (win-lab, Mesa llvmpipe, no GPU, 2026-09-23), a CI build probed by hand over Arena's REST API and the plugin's own log, because the fleet's Arena gate cannot gate a mixer: it loads from Extra Effects and registers as SW Wipe / WP01 / category 2, beside Resolume's own blend modes; it is offered in every layer's Blend Mode list; set as one, it initialises on Mesa's GL 4.5 core context with no error in either log; the layer's opacity at 0.3, 0.7 and 1.0 reads back as the mixer's Opacity, and a write to the mixer's own Opacity is overridden by the layer's; and the mixer panel shows 25 of the 26 parameters — Aspect Comp, the first, is hidden, exactly as genlock's first parameter was, which is why a control whose default is right sits there.

What is not

  • No frame of its output in Resolume has been looked at. A mixer's picture exists only in the composition, which Arena's API does not serve.
  • Never loaded into Resolume on macOS. Whether a layer's transition or autopilot also drives Opacity, and whether Resolume ever calls a mixer with one input, are still open.
  • Aspect Comp cannot be reached in Resolume; it stays on, so circles are round.
  • With Aspect Comp on, Multiple H counts copies per picture height of width, so the cells stay square: Multiple H 4 on a 16:9 picture gives about seven across.
  • Premultiplied alpha is assumed. No presets, no OpenFX port, no browser demo. There is a user guide at https://stoatworks-labs.com/software/wipe/guide/.

The macOS build is now Developer ID-signed and notarised (signed on 2026-09-24, after publication); a copy downloaded before then is unsigned, so if macOS refuses it, download it again. The Windows build is unsigned, so SmartScreen warns once.