Stoatworks Labs

Pepper

Pepper's ghost on glass or foil, for Resolume

Betav0.1.0Plugin & ModuleC++ / GLSL
Pepper — Pepper's ghost on glass or foil, for Resolume
No screenshot. This one's configuration inside another application.

What it does

Two FFGL plugins for Resolume Arena and Avenue: SW Pepper, a mixer, and SW Pepper Feed, an effect. Pepper's ghost is one sheet of clear glass at an angle. It reflects some of every ray and lets the rest through, so a brightly lit picture kept out of sight below the stage shows up floating over whatever's behind the glass. Put SW Pepper in a layer's Blend Mode and the layer below is the stage, this layer is the hidden screen, and the layer's opacity fader is the screen's brightness.

None of it is painted on. Every pixel is a ray traced through the sheet in linear light, so the ghost is Fresnel's reflection at that pixel's angle and the stage gets what the sheet doesn't reflect. A black screen adds exactly nothing. Tilt the sheet and the ghost keystones the way the mirror says; pick float glass, acrylic, polycarbonate or a PET foil and each reflects by its own index, red, green and blue separately; polarise the screen and the ghost vanishes along Brewster's angle. Give the pane some thickness and the back surface's second image appears beside the first, a tint darkens it twice, and a foil left to ripple rings at the mode frequencies of a stretched membrane. Coat it with a few nanometres of aluminium or a quarter wave of titanium dioxide and it reflects what thin-film optics says it does.

Switch the Rig to Pyramid and the same optics run through three or four faces of a plastic pyramid over a phone or a floor screen, seen from where you stand; hang the screen overhead instead and the pane or the pyramid turns over with it. SW Pepper Feed is the other half: it lays your clip out as the cross a real pyramid is fed, each arm mirrored so the face shows it the right way round.

  • A pane, a foil or a three- or four-sided pyramid, with the screen below or overhead
  • Fresnel reflection at every pixel's angle, in linear light: the ghost only adds light
  • Float glass, acrylic, polycarbonate and PET foil, each colour at its own index
  • Polarised screens: Brewster's null, and 45° and 135° sources through every face
  • A thick pane's second image, a tinted sheet, and a foil that ripples at its mode frequencies
  • Aluminium and titanium dioxide coats, by thin-film optics
  • The screen's own viewing-angle falloff
  • SW Pepper Feed: the cross layout a real pyramid hologram is fed
  • Universal macOS bundles and Windows x64 DLLs

Where it stands

v0.1.0, and early days. It's measured by an offline harness driving both plugins' own code on an Apple Silicon Mac, at two rasters and on Apple's software renderer: a black screen adds exactly nothing, a clear sheet reflects what it doesn't let through to three parts in ten million, a polarised screen goes dark at Brewster's angle within three thousandths of a pixel of where each colour's own index puts it, a thick pane's second image lands where Snell's law says, a coated foil matches an independent thin-film model, and the rippling foil rings at all six of a stretched membrane's mode frequencies. It catches twenty-one models that are wrong on purpose and twenty-two one-character sabotages of its own code, and all 29 controls change the picture. It hasn't been loaded into Resolume on macOS. On Windows it loads in Resolume Arena 7.27.1 on software rendering: SW Pepper is offered as a blend mode, hides the one parameter Arena always hides on a mixer, and takes its Opacity from the layer's fader, and SW Pepper Feed passed the Arena check twice with every control moving the picture. Nobody has yet captured a frame of SW Pepper's ghost inside Resolume, and no GPU but one Mac's has run it. The macOS build is Developer ID-signed and notarised. There's a user guide and a browser demo, but no presets or OpenFX port yet. Try it in your own rig before you trust it in a show.