Intaglio
Engraved line shading for Resolume

What it does
An FFGL effect for Resolume Arena and Avenue. An engraving has no greys. The plate has lines, and tone is made by how close together they are and how fat each one is: a line swells where the tone darkens and tapers where it lightens. Intaglio makes that the whole model. Each point's darkness becomes a coverage, and the line's width is that coverage times the pitch, so a mid-grey prints lines exactly as wide as the paper between them. At the dark limit the line is as wide as the pitch and the plate goes solid; at the light limit it tapers to nothing.
The shading of an engraving, detail that survives in the darks as line weight rather than as mud, and the moiré where two hatch sets cross all follow from that model. None of them is drawn separately. When one set of lines runs out of range, a second and then a third come in at other angles, progressively and below a threshold, so the cross-hatching arrives with the shadows. However the sets are engaged, their union is worked out so the plate still prints the tone it was asked for.
The lines obey the picture because they follow a flow field built from the structure tensor of the tone. It is the same field nib draws its strokes along, copied from it rather than derived a second time. The two plugins differ on a flat grey area: nib draws nothing there, because there is no edge, and Intaglio fills it with evenly spaced lines of the pitch and weight that grey calls for. Turn Coherence to zero and the flow is ignored, leaving a plain global hatch at one angle. That is the effect without the idea in it, one slider away.
The plate has the qualities of the real thing: ink and paper colours, the veil of ink a wiped plate keeps, an uneven bite, and the burr a drypoint needle throws up beside its furrow, which holds extra ink on one side of every line. Invert makes a white-line engraving, where the burin cuts the highlights instead of the shadows. That gives a different drawing from swapping the two colours.
Every length is a fraction of the frame height, never a number of pixels, so the same settings give the same drawing at 720p and at 4K. That is checked rather than claimed: every measurement runs at two rasters and fails if they disagree.
- Tone carried by line weight: solid at black, bare paper at white, measured at both ends
- A ruling that follows the picture, on the structure-tensor flow field copied from nib
- Coherence at zero falls back to a plain global hatch, so the comparison is one slider
- One to three hatch sets, each engaging with the shadows, with the union kept exact
- Line Pitch in lines across the frame, a weight curve, and floor and ceiling weights
- Detect on luminance, a single channel or saturation, whichever carries the picture
- Ink and paper colours, plate tone, bite and drypoint burr
- Invert for a white-line engraving, not a colour swap
- Universal macOS bundle and a Windows x64 DLL
Where it stands
v0.1.0, and honestly early. The central claims are measured by an offline harness that drives the real plugin class headlessly, and every check runs at two rasters and fails if they disagree. A black input prints a coverage of 1.000000 and a white one 0.000000, for one, two and three sets. Coverage follows the weight curve to within 0.0005 at five tones. 33 lines are counted across a window 32.0 pitches wide. Lines come out 0.00° and 0.02° from perpendicular to a known gradient, and a 62° cross-hatch measures 62.00°. The flow field sits 0.49° from the test rings' analytic tangent at its best setting. Five deliberately wrong models are all detected, and all 25 controls measurably change the picture. Render cost on macOS (Apple Silicon) is 0.59 ms/frame at 720p, 1.19 at 1080p and 4.57 at 4K. 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), passing all nine of the fleet's host checks with every parameter as declared and every control moving the picture. Where the flow turns sharply the ruling is an approximation, and lines converge, shear and split. An evenly spaced family of curves following an arbitrary field does not exist. Three hatch sets at exactly 60° over-cover by about 2.5%, and the finest rulings on a 4K frame alias. There is a browser demo, which is a port rather than the plugin; no OpenFX port and no factory presets. There is a user guide. Check it in your own rig before trusting it in a show.
Watch it running
Nothing loads from YouTube until you press play.Watch it there instead