Workflows
Masking
Bitmap brushes and vector paths on the same surface, with full undo and layer compositing.
Moonshine’s mask editor combines two complementary tools on the same canvas:
- Bitmap brush — pressure-responsive, freehand painting with size, falloff, opacity, and erase modes
- Vector paths — Bezier-handle-editable shapes for resolution-independent edges
You can use either, both, or layer them in any combination. Each mask is layered with its own visibility and opacity, like compositing layers in image software.
Opening the mask editor
Select a projector. Open the Masks panel. The mask editor takes over the viewport — you’re now painting onto the projector’s output texture.
The brush is selected by default. Switch to vector mode via the toolbar or with V.
Bitmap brush
The brush has four parameters:
- Size — brush radius in pixels
- Falloff — soft edge gradient. Zero falloff is a hard circle; full falloff is a smooth Gaussian
- Opacity — per-stroke alpha
- Erase mode — toggles whether the stroke adds or removes from the mask
The brush is pressure-responsive on supported tablets. Pressure modulates size and opacity together — light pressure makes a smaller, fainter stroke; full pressure uses the configured size and opacity.
Vector paths
Vector paths are Bezier curves. Click to add anchor points; drag while clicking to set the outgoing tangent handle.
After placing points, use the path-edit mode to:
- Drag any anchor to reposition
- Drag a tangent handle to reshape the curve
- Cmd/Ctrl-click an anchor to convert between sharp and smooth
- Delete an anchor with Backspace
The path is closed by clicking the first anchor, or pressing Enter. Closed paths fill; open paths render as a stroke only (useful when you want a soft edge along a line, not a filled region).
Layers
Each mask in the stack is a layer. The stack composites top-to-bottom by default. Each layer has:
- A visibility toggle
- An opacity slider
- A blend mode (normal, multiply, screen, etc.)
You can reorder layers by drag, duplicate them, and rename them. Layer names show in the panel sidebar — name them after what they do (“soft top edge,” “logo cutout”) so collaborators understand the stack at a glance.
Undo
The mask editor has a 50-step undo stack. Each brush stroke or vector path edit pushes a snapshot.
Undo is keyboard-driven — Cmd/Ctrl + Z to undo, Cmd/Ctrl + Shift + Z to redo. The undo stack is per-mask, not global — undoing in one mask layer doesn’t affect another.
Compositing model
Masks composite onto the projector output as alpha. White is fully visible; black is fully masked; gray values produce soft edges. Layer composition determines the final alpha:
- Normal mode replaces the alpha at non-zero pixels
- Multiply mode darkens further (useful for stacking soft edges)
- Screen mode lightens (useful for combining cutout regions)
Pick the blend mode that matches the operation you’re trying to do; if you’re not sure, normal is the right default.
Performance
The bitmap brush stores strokes as a per-projector raster on the TouchDesigner side. Stroke count is essentially unlimited; the raster is fixed-resolution. Vector paths are stored as control point lists and rasterized on demand.
If you have many vector paths with very fine detail across many projectors, the rasterization can become noticeable at scene-change time. In practice you’ll never feel this on a normal show.
Collaboration
Masks lock per-layer. You can paint on layer A while a collaborator paints on layer B on the same projector. The lock is on the layer entity, not the projector — fine-grained enough that two operators can work on the same projector at the same time.
Related
- Projectors — masks belong to projectors
- Scenes — mask state per scene