Stoatworks Labs
Plumbicon — A tube camera for Resolume
Plumbicon

What it does

An FFGL effect for Resolume Arena and Avenue. A camera tube's target is a photoconductive layer that stores charge. Light charges it, the scanning beam reads it by taking the charge away, and the beam can only take so much per pass. plumbicon models that one store, in a single function of about fifteen lines of GLSL, and everything a tube camera is famous for is what's left over.

A highlight that charged the target harder than the beam can discharge is still there on the next field and gets read out again: that's lag. A moving highlight leaves that residue at every point it passed over, so it drags a comet tail that nothing draws. Past the target's capacity, more light isn't more charge, so highlights block up and carry no detail. And a second, much slower store biases the sensitivity down where the target has been bright, etching faster than it recovers: burn-in. Three more things fell out that I wasn't aiming for. A smear changes colour, because the store is per channel. Two Fields doubles the tail, because the beam visits each line every other field. And Two Fields twitters on motion, and only on motion.

Type picks Plumbicon, Saticon, Vidicon or Image Orthicon: the same model with different constants, from the plumbicon's short tail and near-linear response to the vidicon's nine-field smear, heavy burn and 0.65 gamma. The Image Orthicon's black halo is the one term that's drawn rather than derived, because it's a different mechanism (secondary electrons landing back round a highlight), and it's flagged as such everywhere it appears. Custom hands the eight tube-defining controls back to you.

A word about the input. A proper comet tail comes from something a hundred times brighter than peak white, and a clip has nothing above white in it. Sensitivity is the exposure that pushes the clip's own highlights past what the beam can keep up with, which is why the defaults are a slightly over-exposed plumbicon. Target Capacity ÷ Beam Current is the length of the tail in fields, and Beam Current ÷ Sensitivity is where the picture starts blocking up.

This is the camera, not the screen. Nothing here models a display: no phosphor, ghosting, vertical hold or shadow mask. That's the job of old-cathode, the sibling plugin. Put plumbicon first and old-cathode after it and you've got the whole chain, camera then monitor.

  • A charge-storage target read by a current-limited beam: lag, comet tails and blocked highlights all fall out of one function
  • Linear discharge, as a real target has — full for a few fields, one partial field, then exactly nothing
  • Plumbicon, Saticon, Vidicon and Image Orthicon tube types, plus Custom
  • Burn-in from a second, slower accumulator that etches faster than it recovers
  • Frame or Two Fields scan cadence — the tail doubles and moving edges twitter
  • Transfer gamma, dark current and leakage recovery as real tube properties
  • Faceplate halation, and the Image Orthicon's black halo, declared as the one drawn term
  • Time counted in fields, as tube lag is specified, not seconds
  • 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, but Recovery and Burn Rate couldn't be shown moving on the host check's still picture, because they only act on motion and over many fields. The fleet's test host, oxbow, loads it and renders 120 frames cleanly. The model is measured by an offline harness driving the real plugin class: a saturated highlight's tail matches its prediction field by field, Two Fields runs the tail for 12 fields against 6, a moving highlight leaves a 16 px tail against 16 predicted at two rasters, the burn tracks its closed form over 400 fields of rise and 300 of recovery, all 19 swept controls change the picture, and all six shaders compile. Render cost on macOS is 0.60–0.64 ms a frame at 720p, 1.20–1.30 at 1080p and 4.50–4.63 at 4K. The memory's the expensive bit: two RGBA32F buffers, 253 MB at 4K, doubled by Two Fields. The tube constants are judged rather than taken off a data sheet, the burn is far faster than a real tube's so it shows up within a take, the halation is two Gaussians rather than a measured spread, and Field Mode models the scan cadence rather than an interlaced signal. CI can't run the physics, because a hosted runner has no GPU. There's a user guide and a browser demo, which is a port rather than the plugin, but no OpenFX port. Try it in your own rig before you trust it in a show.

Watch it running

Plumbicon video thumbnail

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