wobble

← wobble · the long version, plus every default hotkey.

Welcome, Wobbler!

Wobble does everything possible on the GPU. If you saw Redshift and wondered why compositing is still so slow, that's what this is for. Where possible, all nodes are compiled into a single compute shader. Nodes that break the flow glow red.

To get the best out of it you will need as fast an SSD as possible, and a good GPU. It is free compositing for people with expensive computers.

01 Cache on read, render in real time

If you have fast storage, the bottleneck is often the EXR compression decode.

Wobble caches Read nodes locally and runs the comp in real time on the GPU. If your storage is fast enough, this is the most wobbly way to work.

Read (cached locally)
→
comp, real time on GPU
→
Viewer

02 Setting up the cache

RAMOn by default. Size with --cache-gb N (default is a quarter of your RAM, 4–24 GB).
NVMeMenubar → cache… → pick a folder on a fast drive and set a size limit. It is saved for next time. Frames load in ~10–20 ms instead of a full EXR decode.
Per ReadEach Read node has RAM cache and NVMe cache toggles, plus an in/out frame range.
ViewerTimeline → cache viewer. Only when you ask. Bakes the finished comp so playback skips the GPU work. Any edit clears it.

Set a Read's out point past the last frame to watch a render arrive. Missing frames show black and fill in as they land.

03 Z and X: pin properties and HUD

In the node graph, hold a key and click a node:

Z+ click: pin its properties panel
X+ click: pin its viewer controls (HUD)

Click again to unpin. Pinned nodes show a small dot.

Shift+Z+click or Shift+X+click clears the bin and solos that node's settings.

Menubar hud: select / pin switches between "follow the selection" and "pinned only". clear empties the HUD.

04 Z X C V B N: drag sensitivity

Hold while dragging any value (slider, number, gizmo):

Z×0.01 very fine
X×0.1 fine
C×⅓ slower
V×3 faster
B×10 much faster
N×30 fastest

05 RGB slider modifiers

RGB sliders move all three channels together by default. Hold a key while dragging:

GMove one channel on its own
SSaturation
DOrange ↔ cyan (warm / cool)
FGreen ↔ magenta

S, D and F never change brightness. The slider lines preview what the drag will do.

06 Ctrl-drag a slider onto the viewer

Hold Ctrl and drag any row out of the properties panel. Drop it on the viewer to get a floating HUD slider for that value.

07 E Expression links

Press E in the graph to open the patch bay. Each node shows its values: inputs on the left, outputs on the right.

Linked values glow amber.

08 ` Radial menus

In the graph: hold the key, flick toward an option, let go.

`Node ops: group, ungroup, unify size, tidy, swap inputs, bypass, frame, region…
⌥+`Global sources: your common inputs (like a crypto or utility Read), anywhere in the graph.
⌘+`Region sources: the same, for the region you're in.
Shift+`Show and edit all hidden wires (amber).

09 Regions

A region is a named, coloured area of the graph. Think one per render layer: FG, ENV, CHAR.

10 Groups

A group is a backdrop that wraps its nodes, shaped to fit them. It is only for looks: it never changes the picture.

⌘GGroup the selected nodes
⌘⇧GUngroup

Drop a node inside a group to add it. Drag a member away and the backdrop stretches to follow.

Group = tidy label. Region = owns nodes and has its own sources.

11 All default hotkeys

Most can be remapped from keys… in the menubar. The key under the cursor belongs to that pane.

App

⌘+SSave setup
⌘+⇧+SSave setup as…
⌘+OOpen setup…
⌘+ZUndo
⌘+⇧+ZRedo
QFullscreen the pane under the cursor
⌘+QFullscreen + node overlay
EscBack to the panelled layout
WShow / hide the properties bar
YCurve editor
LBrowse for media
SpacePlay / pause

Viewer

AShow alpha
PPixel readout under the pointer
⇧+PHold the current sample beside the live one
R / HomeFit image to viewer
HVector HUD
Shift-dragScrub the timeline
Ctrl-click gizmoGo to its node

Node graph

TabNode search
EnterOpen the selected tool / Noise / 2dini
Delete / ⌫Delete selection
R / HomeFrame selection (all when empty)
EExpression-link mode
`Node-ops radial menu
⌥+`Global source menu
⌘+`Region source menu
⇧+`Node-patch mode (hidden wires)
MMove selection to region
DBypass
UUnify node size
TTidy
SSwap two inputs
AAlign swipe (hold + drag)
ZPin properties panels (tap = selection, click = node)
XPin viewer controls (tap = selection, click = node)
GPick up / drop a noodle from the selected port
.Hold + click a wire: routing dot (drag for tension)
⌘+GGroup
⌘+⇧+GUngroup
1 2View in slot A / B
3 4View in second pane's slot A / B
⌘+↑ ⌘+↓Swap node with parent / child
Ctrl+A / ⌘+ASelect all
⌘+C ⌘+X ⌘+VCopy / cut / paste (Ctrl works too)
Ctrl-dragSlice wires
ShiftWire the courting pair

Navigation (every canvas)

Alt-drag / middle-dragPan
Ctrl+Alt-dragDrag zoom
⌘+right-dragDolly zoom

While dragging values

hold ZXCVBNDrag rate ×0.01 · ×0.1 · ×⅓ · ×3 · ×10 · ×30
hold GRGB slider: one channel on its own
hold SRGB slider: saturation
hold DRGB slider: orange ↔ cyan
hold FRGB slider: green ↔ magenta

Paint

[ ]Brush smaller / larger (Shift = softness, Alt = opacity)
Alt-clickSet clone source