Raster Brush

Paint directly onto images with a brush.

What it does

Raster Brush stamps a brush shape onto a canvas at a position. It takes a position and an active signal each frame, usually wired from Pointer, and lays down a stamp at the size, rotation, opacity and Color set on the node. With Surface disconnected, a blank canvas is created at project resolution and the painting persists on the node. Wire a canvas into Surface and the paint goes onto that instead, so a Raster Brush inside a Feedback Loop accumulates strokes over time.

Brush defaults to a soft round dot shaped by Hardness. Any image can be wired in as a custom stamp: a white brush plus a Color tint gives tinted painting, a full-colour brush gives decals or sprite stamping. Wire Surface into a 3D geometry's UV space rather than a flat canvas and the paint lands on that mesh's texture, Albedo or Emissive.

When to use it

ParameterTypeDefaultWhat it does
surfaceRaster—Surface texture to paint onto. Leave disconnected to auto-create a blank canvas at project resolution
brushRaster—Brush shape texture — any raster image. White brush + color tint = painting. Full-color brush = decals/sprites
positionVec3(0.5, 0.5, 0)Paint position in normalized coordinates (X, Y, Z) (wire from Pointer node)
sizeNumber20Brush size in pixels
rotationVec3(0, 0, 0)Brush rotation in degrees (X, Y, Z) (wire from expression for random scatter)
opacityNumber1Brush opacity per stamp. Wire Pointer.pressure here for pressure-sensitive painting
colorColorrgba(1.00, 1.00, 1.00, 1.00)Color tint multiplied with brush texture. Use with a white/grayscale brush for colored painting
activeBooleanfalseEnable to paint — wire from Pointer button output for interactive drawing
stroke_idNumber0—
stroke_pointsString"[]"—
blend_modeString"Over"Blend mode for compositing brush onto canvas. One of: Over, Add, Multiply, Screen, Overlay, Subtract, Difference, Darken, Lighten, Soft Light, Hard Light, Vivid Light, Linear Light, Pin Light, Hard Mix, Exclude, Color Dodge, Color Burn, Linear Burn, Divide, Under, Atop, Inside, Outside, Xor, Hue, Saturation, Color, Luminosity, Glow, Reflect, Average.
uniform_scaleBooleantrueLock aspect ratio. Disable for non-uniform brush scaling
scale_xNumber1Horizontal scale multiplier
scale_yNumber1Vertical scale multiplier
paint_targetString"Albedo"Which PBR texture map to paint into when painting on 3D geometry. One of: Albedo, Emissive.
paint_resolutionString"1024"Resolution of the paint texture in pixels (square). Higher = more detail, more GPU memory. One of: 512, 1024, 2048, 4096.
eraseBooleanfalseErase mode — removes paint using the brush shape
hardnessNumber0.500Brush hardness: 0 = very soft edges, 1 = hard/sharp edges
canvas_positionVec3(0, 0, 0)—
canvas_rotationVec3(0, 0, 0)—
canvas_zoomNumber1—
canvas_scaleNumber1—

Gotchas

Active paints only while it is true. Paint persists across frames only when the output is looped back into Surface, most often inside a Feedback Loop. Without that loop, each cook starts from a blank or freshly wired canvas and previous stamps are gone.

Uniform Scale locks brush width and height together. Turn it off to reveal Scale X and Scale Y for a stretched or squashed stamp.

A fast, curved pointer gesture still lays down a smooth stroke. Every pointer sample between cooks is recorded and a curve is walked through them, rather than one stamp per frame.

Worked example

  1. Add a Raster Brush. Leave Surface disconnected to paint on a fresh blank canvas.

  2. Wire Pointer.position into Position and Pointer.left_button into Active.

  3. Wrap the node in a Feedback Loop, feeding its output back into its own Surface, so strokes accumulate as you draw.

  4. Raise Size for a bigger stamp, lower Hardness for a softer edge, and set Color to change the paint tint.

  5. Enable Erase to remove paint with the same brush shape instead of adding it.

See also

Image · Blur · Rasters (images)