Stoatworks Labs

Filament

A wall of incandescent bulbs, for Resolume

Betav0.1.0Plugin & ModuleC++ / GLSL
Filament — A wall of incandescent bulbs, for Resolume
Filament

What it does

An FFGL effect for Resolume Arena and Avenue. The picture's shown on a wall of incandescent bulbs, and each bulb is a tungsten filament heated by current. Its light is its temperature, and its temperature follows the wire's heat balance. Electrical power comes in as V squared over a resistance that follows tungsten's published resistivity, fifteen times lower cold than hot. Radiated power leaves as T to the fourth, conducted power leaves in proportion to how far it is above ambient, and whatever's left over heats the wire's own mass, which is sized from the lamp's wattage and voltage.

Each bulb's dimmer is set by the average of its cell of the clip. The drive is the mains itself, 50 Hz at 230 V or 60 Hz at 120 V, through a sine-wave dimmer, a square-law one or a leading-edge triac that chops each half-cycle, and the equation is integrated per bulb on the GPU in fourth-order Runge-Kutta substeps small enough to follow the waveform. The light is Planck's law at each filament's temperature through the CIE 1931 observer, averaged over the frame the way a camera's shutter would collect it.

None of it's animated by hand. A dimmed bulb goes red as well as dark (a 60 W lamp is 2816 K at full and 1975 K at 45%). A flash comes up in tens of milliseconds and dies away over hundreds, slowing as it cools, so moving pictures smear into warm trails. A cold bulb surges, drawing fifteen times its rated power. A small filament ripples at twice the mains frequency and a big one hardly at all, and a 1000 W lamp lags where a 10 W one snaps.

The Wall controls set the grid (up to 160 by 90), the gap, clear, frosted or coloured glass, a flat Pixel Mode, and RGB gels that put three filaments behind red, green and blue in every cell. The Look controls set the halo, the bloom, the exposure and the mix. The wall paints the whole frame, so the output's opaque at full mix whatever the clip's alpha.

  • A tungsten filament per bulb, solved on the GPU: I squared R heating, T to the fourth radiation, conduction, and a heat capacity from the wire's mass
  • Tungsten's resistivity from Forsythe and Worthing's 1925 table: cold bulbs surge at fifteen times their rated power
  • The mains waveform through a sine, square-law or triac dimmer, at 50 Hz / 230 V or 60 Hz / 120 V
  • Light from Planck's law through the CIE 1931 observer, so dimming is a warm fade, averaged over the frame like a shutter
  • Wattage from 10 to 1000 W: small lamps snap and ripple, big lamps lag
  • Up to a 160 by 90 wall, clear, frosted or coloured glass, RGB gels, a flat Pixel Mode, halo and bloom
  • Universal macOS bundle and a Windows x64 DLL

Where it stands

v0.1.0, and early days. It hasn't been loaded into Resolume on macOS yet. On Windows it has: a build loads, registers and renders in Resolume Arena 7.27.1 on software rendering (no GPU), with every parameter as declared and all 14 controls moving the picture, though Wattage, Mains and Ambient Temp only read weakly there because the test picture is a still. The filaments are measured offline, by a harness driving the real plugin and reading each bulb's temperature back through the plugin's own probes: a filament at rated voltage settles at 2799.95 K against 2800, its light sits on the Planckian locus and reddens as it dims, a cold start follows the equation and reaches 90% in 65 ms (135 without tungsten's inrush), switch-off slows as it cools, a triac-dimmed filament ripples at twice the mains, and resizing mid-fade keeps every temperature. Six models broken on purpose each fail their check, and a one-character sabotage of the shipped shader is caught. That proves the model does what I say it does. Whether a real lamp agrees is another matter: three of its constants (emissivity 0.30, half the coil's surface radiating, 15% of the power conducted) are assumptions that set every time constant, and no real bulb has been measured against it. The macOS build is signed and notarised. There's a user guide and a browser demo, but no presets and no OpenFX port. Try it in your own rig before you trust it in a show.

Watch it running

Filament video thumbnail

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