reshaper
reshaper · outputRESHAPER is a coordinate-remap video processor that emulates a CRT raster scan whose horizontal and vertical sweeps are patchable instead of fixed. For every output pixel it reads a horizontal coordinate from the X field and a vertical coordinate from the Y field (the red channel of each mono-video texture), then samples the Z source video at that remapped position. With X and Y unpatched it falls back to identity ramps (screen-u, screen-v), so Z passes straight through like a normal display. Feed X/Y from shaped ramps (e.g. SHAPEDRAMPS folds, triangles, or radial fields) and the source video is rebuilt inside that deformed coordinate space — folded, mirrored, or circularised. On top of the field remap, the source's own brightness at each screen pixel pushes the lookup: luma above mid-grey lifts, below pushes back, scaled by X Disp / Y Disp — the classic Rutt/Etra "raised terrain" displacement. The final color is multiplied by Intensity and the R/G/B tint. Usage: patch a video into Z for a quick scanline display; drive X and/or Y from a ramp generator to warp it, or just dial X Disp / Y Disp for a luma-relief effect from Z alone. Output is a standard video texture, so chain it downstream (e.g. LINES into RESHAPER into MONOGLITCH). There is a live preview screen showing the remapped output, and two switches beside it that do opposite things: SCREEN turns the preview off to reclaim its space (the module goes on rendering either way), and MONITOR hides the control bands so the picture has the whole plate to itself - drag the bottom-right corner to size it, and click MONITOR again to bring the controls back. Either way it is a viewport only; neither changes the output resolution.
the faceplate
inputs
| id | cable | what it does |
|---|---|---|
x | mono-video | X — mono-video horizontal coordinate field. Its red channel replaces the linear horizontal scan ramp, so each output pixel reads its source u from this texture. Unpatched, it defaults to the identity ramp (no horizontal remap); patch a shaped ramp here to fold, mirror, or warp the image along X. mono video stream |
y | mono-video | Y — mono-video vertical coordinate field. Its red channel replaces the linear vertical scan ramp, supplying the source v for each output pixel. Unpatched, it defaults to the identity ramp (no vertical remap); patch a shaped ramp here to deform the image along Y. mono video stream |
z | video | Z — source video to be remapped (polymorphic video; mono-video, image, or keys upcast in cleanly). It is sampled at the remapped (X, Y) coordinate. Unpatched, RESHAPER shows flat mid-grey rather than black so a cold-spawned card isn't a void. RGB video stream |
intensity | cv | intensity — CV input that modulates the Intensity control (linear), scaling the output brightness/contribution of the remapped video. control voltage (CV); modulates intensity (additive offset — ±1 CV sweeps the full range, centered on the knob) |
xDisp | cv | xDisp — CV input that modulates the X Disp control (linear), driving the horizontal luma-displacement amount from automation or another module. control voltage (CV); modulates xDisp (additive offset — ±1 CV sweeps the full range, centered on the knob) |
yDisp | cv | yDisp — CV input that modulates the Y Disp control (linear), driving the vertical luma-displacement amount from automation or another module. control voltage (CV); modulates yDisp (additive offset — ±1 CV sweeps the full range, centered on the knob) |
outputs
| id | cable | what it does |
|---|---|---|
out | video | out — the remapped RGB video (the rendered FBO texture, same image shown in the on-card preview). Chain it into any downstream video module. RGB video stream |
params
| id | label | range | default | curve |
|---|---|---|---|---|
intensity | Intensity | 0..2 | — | linear |
xDisp | X Disp | -1..1 | — | linear |
yDisp | Y Disp | -1..1 | — | linear |
tintR | Tint R | 0..1 | — | linear |
tintG | Tint G | 0..1 | — | linear |
tintB | Tint B | 0..1 | — | linear |
controls
| control | what it does |
|---|---|
| Intensity | Intensity (0..2, default 1) — overall output gain on the remapped video; 0 blacks the output, 1 is unity, above 1 boosts toward clipping (the result is clamped). |
| Tint B | Tint B (0..1, default 1) — multiplies the blue channel of the output; lower to remove blue from the tint. |
| Tint G | Tint G (0..1, default 1) — multiplies the green channel of the output; lower to remove green from the tint. |
| Tint R | Tint R (0..1, default 1) — multiplies the red channel of the output; lower to remove red from the tint. |
| X Disp | X Disp (-1..1, default 0) — horizontal luma displacement. Each pixel's source u is shifted by (sourceLuma − 0.5) × this amount, so bright areas of Z push one way and dark areas the other (Rutt/Etra raised-terrain); 0 disables horizontal displacement. |
| Y Disp | Y Disp (-1..1, default 0) — vertical luma displacement. Each pixel's source v is shifted by (sourceLuma − 0.5) × this amount, lifting bright pixels and pushing dark ones vertically; 0 disables vertical displacement. |
source
reshaper.ts on GitHub.