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
Interactive painting: Pointer.position into Position, Pointer.left_button into Active, the node inside a Feedback Loop.
Stamping decals, sprites or scattered marks onto an image.
Painting a texture directly onto 3D geometry, Albedo or Emissive.
Erasing paint using the brush shape.
Spawning material into a simulation by drawing it in.
| Parameter | Type | Default |
|---|---|---|
surface | OneOf([FieldOf(Raster)]) | — |
brush | OneOf([FieldOf(Raster)]) | — |
position | Vec3 | (0.5, 0.5, 0) |
size | Number | 20 |
rotation | Vec3 | (0, 0, 0) |
opacity | Number | 1 |
color | Color | rgba(1.00, 1.00, 1.00, 1.00) |
active | Boolean | false |
stroke_id | Number | 0 |
stroke_points | String | "[]" |
blend_mode | String | "Over" |
uniform_scale | Boolean | true |
scale_x | Number | 1 |
scale_y | Number | 1 |
paint_target | String | "Albedo" |
paint_resolution | String | "1024" |
erase | Boolean | false |
hardness | Number | 0.500 |
canvas_position | Vec3 | (0, 0, 0) |
canvas_rotation | Vec3 | (0, 0, 0) |
canvas_zoom | Number | 1 |
canvas_scale | Number | 1 |
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
Add a Raster Brush. Leave Surface disconnected to paint on a fresh blank canvas.
Wire Pointer.position into Position and Pointer.left_button into Active.
Wrap the node in a Feedback Loop, feeding its output back into its own Surface, so strokes accumulate as you draw.
Raise Size for a bigger stamp, lower Hardness for a softer edge, and set Color to change the paint tint.
Enable Erase to remove paint with the same brush shape instead of adding it.