Stoatworks Labs

Plumbicon

A tube camera for Resolume

Betav0.1.0Plugin & ModuleC++ / GLSL
Plumbicon — A tube camera for Resolume
No screenshot — this one is configuration inside another application.

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 — a single function of about fifteen lines of GLSL — and everything a tube camera is famous for is what is left over.

A highlight that charged the target harder than the beam can discharge is still there on the next field and is read out again: that is lag. A moving highlight has left that residue at every point it passed over, so it drags a comet tail that nothing draws. Past the target's capacity more light is not more charge, so highlights block up and carry no detail. And a second, far slower store biases the sensitivity down where the target has been bright, etching faster than it recovers: burn-in. Three more things fall out that were not aimed at — 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 is drawn rather than derived — it is a different mechanism, secondary electrons landing back round a highlight — and it is flagged as such everywhere it appears. Custom hands the eight tube-defining controls back to the operator.

Be honest about the input: a real 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; 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 is old-cathode's, the sibling plugin: put plumbicon first and old-cathode after it and you have 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 honestly early. The model lives in GLSL, so it is measured rather than asserted by a harness that drives the real plugin class headlessly: a saturated highlight switched off reads 1.000 for four fields, 0.277 on the fifth against 0.2769813 predicted, then exactly zero; Two Fields runs the tail for 12 fields against 6, and adjacent rows follow the alternating recursion to 2.6e-7; a 64 px highlight moving 4 px a field leaves a 16 px tail against 16 predicted, at two rasters; patches ten and a hundred times past capacity read the same bits, capacity × gain exactly; the burn tracks its closed form to 2e-7 over 400 fields of rise and 300 of recovery; and a beam above capacity is the identity to 5.96e-8. All 19 swept controls measurably change the picture, all six shaders compile, and the fleet's test host oxbow loads it and renders 120 frames cleanly. Render cost on macOS is 0.60–0.64 ms/frame at 720p, 1.20–1.30 at 1080p and 4.50–4.63 at 4K; the memory is the real cost — two RGBA32F buffers, 253 MB at 4K, doubled by Two Fields. 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; Recovery and Burn Rate could not be shown moving on the gate's still picture, because they act only on motion and over many 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 can be shown in 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 cannot run the physics, because a hosted runner has no GPU. There is a user guide and a browser demo, which is a port rather than the plugin; no OpenFX port. Check it in your own rig before trusting it in a show.

Watch it running

Plumbicon video thumbnail

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