Stoatworks Labs

Filament

A wall of incandescent bulbs, for Resolume

Betav0.1.0Plugin & ModuleC++ / GLSL
Filament — A wall of incandescent bulbs, for Resolume
No screenshot — this one is configuration inside another application.

What it does

An FFGL effect for Resolume Arena and Avenue. The picture is 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 the temperature above ambient; and the difference heats the wire's own mass, sized from the lamp's wattage and voltage.

Every 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 as a camera's shutter would collect it.

Nothing is 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 in 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.

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. Look controls set the halo, the bloom, the exposure and the mix. The wall paints the whole frame, so the output is 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 honestly early. The filaments are measured, not asserted, by an offline harness that drives the real plugin class headlessly and reads each bulb's temperature back through the plugin's own probes: at a steady voltage a filament settles where power in balances power out, at rated voltage 2799.95 K against 2800; its light sits on the Planckian locus to 1e-6 in xy and moves redward with every step down; a cold start follows the equation to 0.004 K and reaches 90% in 65 ms where a lamp without tungsten's inrush would take 135; switch-off follows T to the fourth plus conduction, its time constant 2.5 times longer at 1200 K than at 2400 K; a triac-dimmed filament ripples at exactly twice the mains, 7.4 times more on a 25 W lamp than a 500 W one; and a resize mid-fade keeps every temperature exactly. Six deliberately broken models each fail their check, and a one-character mutation of the shipped shader is caught. All 14 controls change the picture. The checks verify the stated model, not a real lamp: 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. It has not yet been loaded into Resolume on macOS. 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 and all 14 controls moving the picture; Wattage, Mains and Ambient Temp read weakly there, because the gate's picture is a 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

Filament video thumbnail

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