Lenticular
A lenticular card of two layers, for Resolume

What it does
An FFGL mixer for Resolume Arena and Avenue, and the fourth mixer in the Stoatworks fleet. A lenticular card is two pictures cut into thin strips and interleaved, A, B, A, B, under a sheet of tiny cylindrical lenses, one lens per strip pair. Each lens focuses the eye onto one point of the print under it, and which strip that point is on depends on the angle the card is seen at. Lenticular models the lens and the print, and what a real card does falls out of it rather than being painted.
The flip: a lens of focal length F focuses rays arriving at angle t onto the print at F tan t from its axis, so the card flips from A to B square on and back again at atan( 1 / 2F ), the edge of the viewing zone. The ghost: a real lens focuses to a spot, not a point, so near the flip the eye sees the mean of the print across it, both pictures at once, and strip bleed softens it further. Moire: if the print's interleave pitch misses the lens pitch, the flip happens in bands of period 1 / | 1/p_L - 1/p_P | that sweep across the picture as the card tilts, which is exactly what a misregistered card looks like.
A viewer at a finite distance sees each column at its own angle, so the flip does not happen all at once: its edge travels across the card, at D sin T from the centre. And each lens shows one sample of its picture, so the picture is stepped at the lens pitch, and the ridges catch the light. Squeeze decides whether each strip holds its picture squeezed, as a real interleave does, or is a window on the picture where it is.
It is chosen as a layer's Blend Mode: the layer below is A, printed in each lens's first strip, and the clip on this layer is B, in the second. The parameter that tilts the card is named Opacity on purpose, because Resolume binds a mixer parameter of that name to the layer's opacity fader, so the fader, or a layer transition, tilts the card from A at 0 to B at 1.
- Chosen as a layer's Blend Mode in Resolume, installed in Extra Effects like any FFGL plugin
- The layer's opacity fader tilts the card, over an Angle Range of up to 45 degrees
- The flip square on and back at the edge of the viewing zone, from the lens's Focal Length
- The ghost near the flip: Focus Spot and the print's Bleed
- Moire bands from an Interleave Pitch that misses the Lens Pitch, sweeping as the card tilts
- A near viewer's Distance: the flip travels across the card
- Ridge Shine and Light Angle for the ridged, stepped look; Squeeze for how the strips are printed
- Universal macOS bundle and a Windows x64 DLL
Where it stands
v0.1.0, and honestly early. The optics are measured, not asserted: an offline harness drives the real plugin class headlessly with two inputs at two different sizes and reads each claim back out of the picture, at two rasters, on the GPU and on Apple's software renderer. Tilted all the way the card is A or B sampled at the lens pitch, 0 bytes wrong in all four channels; it flips square on and flips back at the edge of the viewing zone, atan(1/2F), to 6e-8 rad; a print pitch that misses the lens pitch bands at 1/|1/p_L - 1/p_P|, measured by FFT to 0.0009 cycles a width, and the bands sweep by the predicted phase; a near viewer's flip lands at D sin T to 0.001 px; every check carries a negative control that fails, and all 11 controls change the picture. Render cost on macOS is 0.035 ms a frame at 1080p and 0.11 ms at 4K. The lens is a thin lens in air with a box focus spot, and the ridge highlight is a look, not a measurement of any sheet. It has not yet been loaded into Resolume on macOS. On Windows, Resolume Arena 7.27.1 (software rendering, win-lab) loads it from Extra Effects, offers it as a layer Blend Mode and as a transition, hides only Squeeze (its first parameter, on purpose), binds its Opacity to the layer's opacity fader and ramps it in a layer transition — probed over REST and read from the plugin's own log. A transition that uses it ends with a pop from the card to the plain clip, because Arena's last transition frame is at Opacity 0.94, not 1; no frame of its output in Resolume has been looked at yet. The macOS build is Developer ID-signed and notarised. There is a user guide and a browser demo, which is a port rather than the plugin; no presets and no OpenFX port. Check it in your own rig before trusting it in a show.
Watch it running
Nothing loads from YouTube until you press play.Watch it there instead