Stoatworks Labs

Throw

Your clip, thrown onto a real wall, for Resolume

Betav0.1.0Plugin & ModuleC++ / GLSL
Throw — Your clip, thrown onto a real wall, for Resolume
No screenshot. This one's configuration inside another application.

What it does

An FFGL effect for Resolume Arena and Avenue: SW Throw. A texture map paints the picture onto a surface. A projector doesn't. Here every pixel of the clip is a ray of light leaving a lens at a real place in the room, and where it meets the wall it brings as much light as the pixel, times how squarely it meets the surface, over the square of how far it travelled. The wall gives that light back in its own colour, and you're watching from somewhere else.

Everything else falls out of that. Red brick eats the blue, so a white clip comes back brick-red. A face turned from the lens is dimmer, and one turned right away gets only the room's light. The relief shadows itself: the deep side of a corrugation, the far side of a drape fold. Stand off to one side and the picture slides over the relief, kinking across mortar joints and rippling over the folds; walk to the lens and it all goes straight again. Galvanised sheet, tread plate and glazed tile throw back the lens itself, coloured by whatever bit of the clip is aimed there. And a projector can't project black, so the wall shows through every dark part of the clip.

Everything is at its real size: UK metric brick in four bonds, 3-inch corrugated or box-profile cladding, aluminium tread plate, pleated cotton drapes, feather-edge weatherboard, metro tiles, crumpled paper, or a height map or photo of your own. The projector has a position, a throw, lumens and a black level, shifted or pointed with its keystone; the room has its light; and the viewer has a place to stand. Depth exaggerates the relief when the real thing is too subtle for a show.

  • Eight surfaces at their real size, plus a height map or photo of your own
  • Light by the inverse-square and cosine laws, from a projector at a real place in the room
  • Shadows from the relief, and parallax: the picture slides over it as the viewer moves
  • The lens's own highlight on zinc, aluminium and glaze, from published optical constants
  • No black: the projector's black level and the room's light set the floor
  • Lens Shift or Pointed, with the keystone and the uneven light a pointed projector gives
  • Height, Normals, Light, Shadow and Albedo views
  • Universal macOS bundle and a Windows x64 DLL

Where it stands

v0.1.0, and early days. It's measured by an offline harness driving the plugin's own code on an Apple Silicon Mac, at two rasters and on Apple's software renderer: a flat wall gives the clip back to three parts in ten million from any projector and viewer, every pixel of a tilted plane carries the light the inverse-square and cosine laws say, a recess shows the picture where the parallax formula puts it to under a thousandth of a pixel, a step's shadow is the length the geometry says to within a pixel, and the lens's highlight on zinc sits at the mirror point. It catches eighteen models that are wrong on purpose and twenty-three 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 and renders in Resolume Arena 7.27.1 on software rendering, with every control as declared, and 28 of the 29 measurably changed Arena's picture of a still; Surface File can't be tested that way, but the height map it loaded did change the picture. 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.

Watch it running

Throw video thumbnail

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