The BROWSER VIEWPORT as a video source (LOCAL ONLY). Zero inputs, one video OUT whose contents are what you currently SEE in this tab — the visible canvas pane — so you can feed LOOPBACK -> RECORDERBOX to record your viewport, or -> any effect for live self-referential feedback. Mechanism: the card captures the current tab via the Screen Capture API (getDisplayMedia({ video: { displaySurface: "browser" }, preferCurrentTab: true, selfBrowserSurface: "include" }) — the Start capture button is the required user gesture), runs it in a hidden <video>, and the engine samples each frame into a WebGL2 texture exactly like CAMERA; a crop step then windows the tab frame down to the app viewport element's on-screen rectangle (measured per frame, pushed to the engine as LOCAL per-viewer state — never synced) so OUT is just the active viewport, letterbox-fit into the engine frame (black bars, never cropping edges away). Because the preview shows the tab it is captured from, an on-card preview is intentionally recursive (a video-feedback tunnel). Params: gain (0..2 RGB multiplier), crop (viewport vs whole-tab, ON by default). Capture needs a gesture and can be stopped from the browser's share bar (the card returns to idle with a re-capture button); getDisplayMedia is feature-detected, degrading to a disabled unsupported state where the API is missing.
LOOPBACK turns the BROWSER VIEWPORT into a video source: its single output carries what you currently SEE in this tab — the visible canvas pane — so you can feed it into RECORDERBOX to record your viewport, or into any video effect for live self-referential feedback. The card acquires the current tab with the Screen Capture API (getDisplayMedia with preferCurrentTab + self-capture allowed — the Start capture button is the required user gesture), runs the captured tab in a hidden <video>, and the engine samples each frame into a GPU texture (exactly like CAMERA). A crop step then windows that tab frame down to the app viewport element's on-screen rectangle so the output is just the active viewport, not the surrounding browser/app chrome; the cropped region is letterbox-fit into the engine frame (black bars rather than cropping edges away) so the WHOLE viewport is preserved. Because the preview shows the tab it is captured from, a live on-card preview is intentionally recursive (a video-feedback tunnel) — that is expected, not a bug. Usage: drop LOOPBACK in, click Start capture and confirm the tab in the picker, then patch OUT into RECORDERBOX (record the viewport) or a mixer/effect. Capture needs a gesture and can be stopped from the browser's share bar (the card returns to idle with a re-capture button); where the Screen Capture API is unavailable the card shows a disabled unsupported state.
the faceplate
0 inputs · 1 outputs · 2 params
outputs
id
cable
what it does
out
video
Video output carrying the captured browser viewport: cropped to the visible pane (or the whole tab when Crop is off), letterbox-fit into the engine frame, and RGB gain-multiplied. Patch into RECORDERBOX to record the viewport, or into any downstream video module.
RGB video stream
params
id
label
range
default
curve
gain
Gain
0..2
—
linear
crop
Crop
0..1
—
discrete
controls
control
what it does
Crop
Crop (discrete 0/1, default 1 = on). ON crops the captured tab down to the visible canvas pane's on-screen rectangle (measured per frame from the viewport element), so OUT is just the active viewport; OFF passes the WHOLE captured tab. The crop is per-viewer local render state (each collaborator's viewport differs) and never distorts the source aspect — it letterbox-fits, preserving the full region.
Gain
Gain (linear, 0 to 2, default 1). RGB multiplier applied to the captured frame in the shader (src.rgb * gain, unclamped): 0 = black, 1 = unity, 2 = doubled/clipped. Handy to brighten a dim viewport before recording.