Stoatworks Labs

Wheel

A single-chip DLP projector for Resolume

Betav0.1.0Plugin & ModuleC++ / GLSL
Wheel — A single-chip DLP projector for Resolume
No screenshot — this one is configuration inside another application.

What it does

An FFGL effect for Resolume Arena and Avenue. A single-chip DLP projector does not show a colour picture. It shows a red one, then a green one, then a blue one, and on many wheels a white or CMY segment too, in turn, through a spinning filter wheel in front of a micromirror chip. The eye adds them up.

It only adds them up correctly if the eye is still relative to the screen. When the eye moves, pursuing a moving object or in a saccade across a bright frame, each colour field lands on the retina in a different place. That is the rainbow effect, and it is the whole plugin: the model is a retina, not a filter. Each sub-field is shown for its segment's duration and integrated displaced by the eye's travel during it.

Everything recognisable falls out of that. A still eye shows no fringe at any wheel speed, however fast the clip moves, because the DMD holds the frame. A pursued object fringes and so does the background. A faster wheel packs the fringe tighter. A white segment brightens whites and leaves saturated colours where they were. Under motion the DMD's binary-weighted bit planes break greys into bands. Eye Mode picks Still, a set Pursuit, Track (the clip's own dominant motion) or Saccade, a burst of eye velocity fired by an audio onset or by hand.

Three-chip mode is the other kind of projector fringe for comparison: no wheel, three panels, and the static misconvergence between them.

  • A retina that integrates the colour sub-fields, not a colour-fringe filter
  • RGB, RGBW, RGBCMY (BrilliantColor order) and Custom wheels at 1x to 6x
  • Still, Pursuit, Track and Saccade eyes; a saccade fired by an audio onset or by hand
  • A still eye reconstructs the input exactly, at every wheel speed
  • Binary-weighted DMD bit planes that break greys into bands under motion
  • Three-chip mode with per-panel offsets and rotation for static misconvergence
  • Linear-light integration, with the picture linearised on the way in
  • Universal macOS bundle and a Windows x64 DLL

Where it stands

v0.1.0, and honestly early. The model is measured, not asserted, by an offline harness that drives the real plugin class headlessly at two rasters: a still eye returns the input with 0 bytes different at all five wheel speeds on a moving clip; at 6 px a frame on a 1x wheel red is green translated by 2.0000 px, bitwise over 910,080 pixels, and 1.0000 at 2x; per-channel energy is unchanged under pursuit to 1.1e-4; RGBW at full White Gain takes grey 64 to 128 as predicted; three-chip offsets are exact to the pixel; the saccade decays by e⁻¹ over Saccade Time to 0.3676 against 0.3679; and 12 of 12 negative controls and a one-character mutation of the shipped shader are caught. All 23 swept controls change the picture. Render cost on macOS is 0.90 ms/frame at 1080p and 3.29 at 4K at the defaults; the heaviest wheel under pursuit is 19.1 ms at 4K. It has not yet been loaded into Resolume on macOS. On Windows it has: a build of this source loads, registers and renders in Resolume Arena 7.27.1 on software rendering (win-lab, no GPU), with every parameter as declared; Saccade Size and Saccade Time could not be shown moving there, because a saccade needs an audio onset or a Fire press the gate cannot send. The audio path has only seen synthetic spectra, and the Track eye is one global motion estimate, not per object. There is a user guide and a browser demo, which is a port rather than the plugin; no presets and no OpenFX port. The macOS builds are signed and notarised. Check it in your own rig before trusting it in a show.

Watch it running

Wheel video thumbnail

Nothing loads from YouTube until you press play.Watch it there instead