Video Chaining
Visual objects connect together to form a video pipeline — the output of one object feeds into the input of the next, letting you layer, blend, and transform visuals in real time.

In this example, a hydra object and a glsl object each produce a pattern. They feed into a third hydra object which subtracts them together using src(s0).sub(s1).out(o0).
This is similar to shader graphs in TouchDesigner, Unity, Blender, and Substance Designer.
How It Works
Visual objects have orange inlets and outlets (circles on the top and bottom of the node):
- Orange inlet — accepts a video frame as input
- Orange outlet — outputs a video frame to the next object
Connect orange outlet → orange inlet to chain them:
[p5] → [pipe.hydra] → [pipe.gl] → [bg.out]
To hear — er, see — anything, connect the final object to bg.out or use Output to Background.
Try It
Exercise — Visual passthrough
- Create a
p5object and write something that draws to the canvas - Create a
pipe.hydrapreset (Enter→ searchpipe.hydra) - Connect the orange outlet of
p5to the orange inlet ofpipe.hydra - Connect
pipe.hydratobg.out— the p5 sketch appears as the background
Exercise — Blend two visuals
- Create two visual objects (e.g.
p5andglsl) - Create a
sub.hydrapreset — it has two orange inlets - Connect both visual objects to the two inlets of
sub.hydra - Connect
sub.hydratobg.out— the two visuals are subtracted together
Getting Started with Presets
The preset library has ready-made building blocks for video chaining. Enable them via the Preset Packs sidebar:
pipe.hydra,pipe.gl— pass video through unchanged; the simplest starting point for chainingdiff.hydra,add.hydra,sub.hydra— blend two video inputs with Hydra- Check the hydra and glsl docs for more preset ideas
Output to Background
Right-click any visual object (or use its ··· menu) and choose Output to background to make it the fullscreen output. This overrides any bg.out connection.
- Click Output to background again on the same object to clear the override
- Switching to a different object replaces the current output — only one at a time
- This is great for live performance; it is not saved across sessions
Wireless Video Routing
Route video across the patch without cables using send.vdo <channel> and recv.vdo <channel>:
[p5] → [send.vdo main] [recv.vdo main] → [bg.out]
Useful for keeping large patches readable by removing long-distance orange cables.
Performance
Objects on the rendering pipeline are significantly faster than main-thread objects — they avoid expensive pixel copies between GPU and CPU.
For high-performance video chaining, prefer:
See Also
- hydra — Hydra video synthesizer
- glsl — GLSL shaders
- canvas — Offscreen canvas (rendering pipeline)
- send.vdo — Send video to a named channel
- recv.vdo — Receive video from a named channel
- Audio Chaining
- Data Types
- Rendering Pipeline