
What it does
Four scopes in one FFGL effect for Resolume Arena and Avenue: a waveform with luma and both parades, a vectorscope, a 256-bin histogram, and a picture-assist mode that recolours the picture itself for exposure and focus. A Layout control decides whether the scope replaces the picture or sits over it, so the same effect covers a dedicated monitor layer and an in-frame confidence display.
The thing worth understanding before trusting a reading is that a scope inside a VJ host never sees a video signal. It sees whatever RGB the engine has in the texture by the time the effect runs, and by then three decisions have already been made and thrown away: which matrix took the clip from Y'CbCr to RGB, whether studio-range levels were expanded, and whether the colour has been multiplied by its alpha.
None of the three is recorded in the pixels, and every one of them changes the reading. A BT.709 clip read as BT.601 throws every vectorscope target about 5.7° off its box. Unexpanded studio levels put reference white at 92 IRE. A clip at half layer opacity reads a stop down. Each looks like a mildly misadjusted picture rather than a measurement error, which is exactly what makes it dangerous — so all three are explicit settings and none of them is guessed.
Everything the scopes plot and every line of every graticule they draw comes out of one module. The vectorscope's target boxes are computed from the matrix the shader is plotting with rather than transcribed from a picture of a real scope, so choosing a matrix moves the boxes and the trace together and there is no combination of settings that quietly makes a mismatched signal look correct.
- Waveform — luma, RGB parade and Y Cb Cr parade, over a −10 to 110 IRE graticule so super-white and sub-black stay visible
- Vectorscope — target boxes and skin-tone line derived from the selected matrix, 75% or 100% bars, 1× to 8× zoom
- Histogram — RGB, luma or both across 256 bins, accumulated in 32-bit float so the tallest bins keep counting
- Picture assist — false colour, zebras and Sobel focus peaking, applied to the picture itself
- Scope Only or Overlay, with size, position, opacity and a scope background that can go fully transparent
- Matrix (BT.601 / 709 / 2020), range (full or 16–235) and unpremultiply as explicit settings, never heuristics
- Universal macOS bundle and a Windows DLL
Where it stands
Built, measured and released as v0.1.0. A scope is unusually testable — what it claims is a number — so an offline harness drives the real plugin class in a headless GL context against 75% and 100% colour bars in all three matrices, with the expected readings derived from the same module the shaders take their uniforms from. The waveform trace lands on each bar's luma to within 0.08 IRE, which is the readback's row quantisation rather than the maths; the vectorscope trace lands within 1.2 px of each derived target box; the histogram spikes in the right bin and in no other. The GLSL's false-colour banding agrees with an independent C++ implementation on every column of a ramp, and all nineteen parameters are swept and shown to affect the output. It has never once been loaded into Resolume — so whether the input really arrives premultiplied is unconfirmed, and that is the one assumption an offline harness structurally cannot test. Performance has never been measured, and the Windows binary is built and shipped but has never been run.
Watch it running
Nothing loads from YouTube until you press play.Watch it there instead