home/ atoms/ hydra-output-buffers

Hydra has four independent output buffers (o0–o3) that render separately and can be cross-mixed

Hydra maintains four independent virtual output framebuffers named o0, o1, o2, o3, each backed by a GPU frame buffer and able to render a different visual. A chain routes to a buffer by naming it inside .out() — .out() with no argument defaults to o0. A chain in one buffer does not disturb the others. For monitoring, render() with no argument tiles all four in a grid, while render(o2) shows one buffer full-screen; by default only o0 is displayed. The real power is cross-mixing: any buffer can be read back as a texture with src(o1) and used as a source, blend target, or modulate target in another chain — enabling feedback, layering, and inter-patch compositing entirely in the browser. Two fundamental operations connect buffers: blend() does arithmetic on pixel colors, and modulate() uses one buffer’s colors to warp another’s coordinates. This framebuffer model is directly inspired by analog video patch bays, and it is a core live-performance tool: build a visual on a hidden buffer while another is live, then switch which buffer is shown to stage a transition.

Examples

osc(10).out(o0)
noise().out(o1)
render()            // all four quadrants
render(o1)          // o1 full screen
osc(20,0.1,0.8).out(o0)
osc(10,0.2,0.8).diff(o0).out(o1)   // composite o0 into o1
render(o1)

src(o0).add(src(o1)).out(o2) — combine a camera feed and an oscillator. Prepare o1 while o0 is live, then render(o1) to cut to it.

Assessment

Explain what render() with no arguments does vs render(o2). Route two different oscillators to o0 and o1, composite them with diff() into a third buffer, and show the result on screen. Distinguish blend from modulate in terms of which property of the input signal each uses, and describe how a performer uses multiple buffers to stage a visual transition.

“hydra contains four separate virtual outputs that can each render different visuals”
corpus · hydra-getting-started-official-interactive-tutorial · chunk 1
“By default, the environment contains four separate output buffers that can each render different graphics. The outputs are accessed by the variables o0, o1, o2, and o3.”
corpus · hydra-livecoding-networked-visuals-source-repo · chunk 3
“This will divide the screen into four, showing each output in a different section”
“in height adjustable outfits and you can sort of growl each of them into and out of each other so to see all of all of them they do this function rendered”
corpus · live-coding-visuals-with-hydra-olivia-jack-no-bounds-eulerro · chunk 1
“blend operations are sort of just doing arithmetic on on pixel colors but I another thing that I sort of borrowed from modular synthesizer land was the idea of modulating something”
corpus · olivia-jack-hydra-live-coding-visuals-in-the-browser-talk · chunk 2