Stoatworks Labs

Repousse

Chased metal under a swinging lamp, for Resolume

Betav0.1.1Plugin & ModuleC++ / GLSL
Repousse — Chased metal under a swinging lamp, for Resolume
No screenshot — this one is configuration inside another application.

What it does

An FFGL effect for Resolume Arena and Avenue. Repoussé is sheet metal worked from behind with punches, and two physical facts make the look. The punch sets the finest detail: a sheet can be pushed only as sharply as the tool that pushes it, so the picture's brightness is read as height and then opened and closed by the punch's profile, and detail narrower than the punch is never formed rather than blurred away. And metal is lit, not shaded: a point lamp at a real position with inverse-square falloff, a GGX microfacet highlight with the normal-incidence reflectance of a real metal computed from published refractive indices, a small diffuse term for the patina, and self-shadowing by a march over the same height field.

The lamp hangs on a cord. It is a damped large-angle pendulum with the period its length gives it, integrated on the CPU in double, and an onset in the audio or the Kick button adds angular velocity. That is the only audio coupling: the highlights slide across the relief on the mirror points the microfacet model puts them at, and the pool of light under the lamp swings with it.

Everything else falls out. Lower the lamp and every ridge throws a long raking shadow, so the relief reads far deeper than its sixteen pixels. Roughness spreads the highlight into a sheen and Patina darkens the recesses, because that is where the horizon is high. A big punch gives soft chased work and a fine one crisp engraving; a ridge narrower than the punch is lowered to exactly d²/2R. Smooth takes the terraces out of 8-bit footage before the punch sees them.

Metal mode loses the clip's colour, as a sheet does, and keeps its alpha, so a clip with transparency is a sheet with holes. Clip mode is a painted sheet: the clip as the albedo over a dielectric base. Show Height shows the worked relief as grey, for setting the punch.

  • Height from luma, opened and closed by a punch of 0 to 16 px with the sphere's tip curvature
  • Copper, brass, silver, gold or steel: F0 computed from published n,k data, GGX and height-correlated Smith
  • A point lamp in real units with inverse-square falloff, self-shadowing and horizon occlusion
  • The lamp on a cord: a damped large-angle pendulum with the period its length gives it
  • Kicked by audio onsets or the Kick button; the swing direction steps round the golden angle
  • Smooth against 8-bit terraces, Show Height for setting the punch, Mix over the clip
  • Universal macOS bundle and a Windows x64 DLL

Where it stands

v0.1.0, and honestly early. The physics is measured, not asserted, by an offline harness that drives the real plugin class headlessly at two rasters: five planes of known slope under five lamps read the inverse-square Lambert law at every pixel and channel to 1.8e-7 against a tolerance derived from one float ulp; the highlight on a hemisphere lands on the exact pixel the half-vector point predicts; each metal reflects its computed F0 at normal incidence to 5e-8; the shadow behind a step is h / tan θ within one march step; a ridge narrower than the punch comes out exactly min(H, d²/2R) tall and a wider one keeps its height; the lamp's period, read from its position in the picture over six seconds, is 2π√(L/g) with the large-angle correction to 4 parts in 10⁵ and its decay matches the stated Q. Seventeen negative controls and a one-character mutation of the shipped shader are caught. All 20 swept controls change the picture. Render cost on macOS at the defaults is 2.61 ms/frame at 4K. It has not yet been loaded into Resolume on macOS, and no audio has ever reached it. 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; Cord Length, Damping and Swing could not be shown acting there, because the gate's picture is a still and it never presses Kick, and a pendulum nobody pushes hangs still. The macOS build is Developer ID-signed and notarised. There is a user guide and a browser demo; no presets and no OpenFX port. Check it in your own rig before trusting it in a show.

Watch it running

Repousse video thumbnail

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