Visualizers and FX Rack
Process a visualizer with FX Rack, try the Jellyfish contour example, and draw paths with supported hand controls.
BeamTracer FX Rack processes the visualizer already on your canvas. Open EFFECTS in Visualizer mode or FX Rack in Performer mode, add an effect, and adjust the controls. For a camera performance, add Visual Source and choose a supported hand tracking visualizer to place the artwork over your picture.
Can I use FX Rack with visualizers?
Yes. FX Rack can process any visualizer in Visualizer or Performer mode. Select a visualizer, open EFFECTS or FX Rack, and add effects. For Jellyfish, TRACK with FOLLOW set to CONTOURS draws lines on the moving picture itself; no camera or uploaded video is required.
Effects run in the order shown in the rack. Put EDGES before TRACK to trace the visualizer before adding tracking lines, and FILM GRAIN after TRACK to texture the finished picture. Switch the rack ON or off to compare the processed visualizer with the original.
How do I play a shader with my preset?
Open the Shader Library with the </> button in the Performer control bar and click a shader. It plays on a layer with the preset instead of replacing it, and it stays when you change presets.
- BEHIND puts the shader under the visualizer and blends the visualizer over it: SCREEN or LIGHTEN lets the shader glow through the visualizer's dark areas.
- IN FRONT puts the shader over the visualizer and blends it in with the BLEND you pick (Normal, Multiply, Screen, Overlay, Soft Light, Darken, Lighten, Color Dodge).
- DISPLACE draws the shader nowhere and uses it to warp the picture instead. See How do I warp the picture with a shader?
- OPACITY fades the shader. REMOVE, or clicking the lit shader again, takes the layer away.
- The FX Rack processes the shader and the visualizer together, and RENDER VIDEO includes the shader layer.
The library starts with eight shaders made for BeamTracer, each moving with the music:
- Aurora Curtains: ribbons of northern light that ripple with the mids and brighten on the beat. Made for BEHIND.
- Starfield Warp: stars streaking toward you, longer as the music gets louder and jumping on the beat. Made for BEHIND.
- Light Leaks: warm film flares drifting across the frame and flaring on the beat. Made for IN FRONT with SCREEN.
- Spectrum Halo: the live spectrum as a ring of bars in the middle of the frame, lows at the top. Made for IN FRONT.
- Cavern: the view from inside an organic cave of glossy blue terraces with copper rims, slowly turning and tilting. The rock swells with the bass, the terraces ripple on the beat and the highs brighten their sheen. Its sliders are BAND DENSITY, RUGOSITY, ORBIT SPEED and LIGHT. Made for BEHIND.
- Audio Plasma, Beat Tunnel and Waveform Rings: the original three.
Hover a shader in the library to see it move.
How do I warp the picture with a shader?
Pick a shader in the Shader Library, then click DISPLACE. The shader disappears from view and bends the visualizer instead, like looking through moving liquid. DISPLACE adds SHADER DISPLACE to the FX Rack for you, and the Shader Library shows its AMOUNT and MODE under the layer controls.
- AMOUNT sets how far the picture moves (0 to 0.6). Start at the default and raise it for a stronger warp.
- MODE picks how the shader moves the picture. LUMA PUSH moves it along ANGLE wherever the shader is bright. LUMA OUTWARD pushes it out from the middle. VECTOR moves it by the shader's red and green, where mid gray stays still.
- In the FX Rack, SHADER DISPLACE also has ANGLE, SMOOTH (softens the warp) and SCALE (zooms the shader's pattern), and every slider can follow the music, a MIDI knob or OSC like other effects.
To make the warp pulse with the music, open SHADER DISPLACE in the FX Rack, select Assign modulation beside AMOUNT and choose Beat pulse. The picture then warps harder on every beat.
Shaders that fill the frame with bright, changing color, such as Audio Plasma, warp the picture the most. Aurora Curtains and Waveform Rings warp it about half as much, and sparse shaders such as Starfield Warp only a little. SHADER DISPLACE also works with BEHIND and IN FRONT, which warps the picture while the shader is still drawn.
How do I change a shader's settings?
Under the layer controls, PARAMETERS lists the shader's own settings as sliders. Every built-in shader has a few, such as BRIGHTNESS, SCALE, SPEED or HUE SHIFT. An imported shader gets sliders for the tunable numbers in its code: values it declares as uniform float (or vec2 to vec4), and decimal #define and const float values, up to eight. Numbers the code needs to stay fixed, such as loop counts and array sizes, are left alone. RESET returns the sliders to the shader's own values.
Each slider can follow the music: pick BASS, MID, HIGH, VOLUME or BEAT beside it, as on FX Rack sliders. Sliders can also be mapped to MIDI and OSC with LEARN. Settings and music assignments are kept with the shader and saved with your scenes.
How do I import a Shadertoy shader?
Click IMPORT SHADER, paste the shader's code and give it a name. BeamTracer runs it the way Shadertoy does: mainImage, iTime, iTimeDelta, iFrame, iResolution, iMouse, iDate, iChannel0 to iChannel3, iChannelResolution and the rest of the GLSL ES 3.00 language work as written. Before the shader is saved, BeamTracer compiles it. If it does not compile, the dialog shows the line and the reason, nothing is saved, and the shader already playing keeps playing.
A shader with several tabs. Shadertoy keeps Common, Buffer A to Buffer D and Image in separate tabs. Paste them as one piece of code, with a line like these above each tab's code:
// ---- Common ----
// ---- Buffer A ----
// ---- Image ----Common is added to every pass. Each buffer renders at the size of the stage, and a buffer can read its own previous frame, so feedback trails and simulations work. Code with no such lines is a single Image pass.
Channels. The dialog lists every iChannel the code reads, for each pass, and what it reads: NONE, AUDIO (the music, as Shadertoy's audio input: the spectrum on the first row, the waveform on the second), BUFFER A to BUFFER D, IMAGE (a picture from your computer, kept in this browser with the shader), KEYBOARD, or one of three textures BeamTracer generates: NOISE, SOFT NOISE and ROCK. Each channel also has a FILTER (nearest, linear or mipmap) and a WRAP (clamp or repeat). The dialog starts with its best reading of the code:
- A channel read the way Shadertoy's music is read (rows at 0.25 and 0.75) starts as AUDIO.
- In a shader with buffers, a channel starts as the buffer in the same slot: iChannel0 reads Buffer A, iChannel1 Buffer B. A two-pass bloom whose Image reads Buffer A works as pasted.
- Any other channel starts as ROCK (or NOISE for lookups), and the dialog says so: "This shader reads an image on iChannel0. Pick one, or keep ROCK." Shadertoy's own textures are not included; pick a picture of your own if the shader expects one.
Cubemap inputs, sound shaders (mainSound), video and webcam inputs are not supported.
How do I make an imported shader move with the music?
Turn on MUSIC DRIVES TIME under the shader's layer controls. The music then sets the pace of the shader's time: it slows in quiet passages, speeds up as the bass and volume rise, and gets a short push forward on each beat, so a shader written with no sound in mind moves with your track. SPEED (0 to 3) sets the overall pace, and AUDIO (0 to 2) sets how much the music speeds it up. It is on to start with for an imported shader that does not read the music itself. OPACITY, SPEED, AUDIO and MUSIC DRIVES TIME can be mapped to MIDI and OSC like other controls.
For deeper reactions, imported code can read the music directly. These values run from 0 to 1:
| Uniform | What it follows |
|---|---|
audioVolume | The overall loudness |
audioBass | The bass |
audioMids | The mids |
audioHighs | The highs |
audioBeat | The beat, rising on each hit |
For example, to lengthen a shader's spikes with the bass and flash them on the beat:
float spikeLength = 0.3 + 0.5 * audioBass;
col *= 1.0 + 0.6 * audioBeat;What happens when an imported shader is too heavy or does not work?
The rest of BeamTracer keeps running. The visualizer, the FX Rack, the music and the controls do not depend on the shader.
- A shader that does not compile is not saved, and the dialog shows why.
- An imported shader starts small and finds the largest resolution it can draw without slowing the page. If it is too slow even at the smallest resolution, it stops, and its tile says Too heavy for this machine — paused.
- If the graphics reset while an imported shader is running, the shader stops and its tile says so.
- BeamTracer remembers these, so reloading the page does not run the shader again. Click its tile to try again.
Imported shaders keep their authors' licenses
A shader you import stays under its author's license, and many Shadertoy shaders are licensed for non-commercial use only. Shader code on Shadertoy that names no license is under Shadertoy's default, CC BY-NC-SA 3.0 (attribution, non-commercial, share-alike). BeamTracer grants no license to imported shaders and does not review them. You are responsible for having the rights to use a shader, especially in paid shows, client work and published videos. Keep the author's credit with it. See the Terms of Service (Intellectual Property, Imported Material).
How do I draw a path for a visualizer to follow?
In a visualizer such as Birds, set Hand to Draw Path, then point with one finger and trace a curve. Show Path displays the stroke while the flock follows it. Hold an open palm briefly, or double-click the picture, to clear the path.
Some visualizers also move with your hands. Under their own Hand Tracking settings, Follow brings them to your raised hand and as near as you hold it to the camera, Scatter sends them away, and Draw Path lets you trace a loop in the air with one finger for them to run. Put your camera under them with Visual Source and set its Visualizer to Over:
- Biojelly: follows your hand or flees it, and runs a path you draw
- Birds: follows your hand or flees it, and runs a path you draw; new birds pour out of your open mouth
- Fish Impressions: follows your hand or flees it, and runs a path you draw
- Fluidic Balls: follows your hand or flees it, and runs a path you draw
- Man In White: follows your hand or flees it, and runs a path you draw
- Particle Equalizer: follows your hand or flees it, and runs a path you draw
- Particle Man: follows your hand or flees it, and runs a path you draw
- Strange Attractors: follows your hand or flees it, and runs a path you draw
- Tube Trails: follows your hand or flees it, and runs a path you draw
Over any visualizer, camera or video, the rack's own Particles can follow you too: raise Hand Stir and the particles near your hand, or your fingertip while you point, swirl around it. Turn a video into particles
Where do I go next?
Return to the FX Rack overview to choose another task. Compare controls in the effects reference, or follow the rendering guide to save your result.