Overview
Places stamps on pixels that pass a mask threshold. It can repeat one image or mix several candidates at ratios such as grass A 70 / grass B 20 / flower 10. Center spacing, ground anchors, Y draw order, and tile-edge wrapping are handled together.
Usage tips
- Start with
placement=Randomwhen occasional clusters are desirable. Switch toKeepApartonly when grass, stars, or stones bunch up too heavily. Existing projects remain on Random and keep their previous result. min_distancemeasures center-to-center pixels. Around 3px lightly reduces clusters; around the stamp width greatly reduces overlap. If the node warns that Count did not fit, lower the gap or enlarge the mask area.- Connect
List Create(Image)to Stamp Candidates and an equally sizedList Create(Float)to Candidate Weights. Leave weights disconnected for equal chances, or use 0 to exclude one candidate. - For grass, trees, or characters, combine
anchor=BottomCenterwithdraw_order=BackToFrontY. Roots and feet land on the mask point while lower objects naturally cover higher ones. - For seamless tiles, enable
wrap_x/wrap_y. Overflow pixels continue on the opposite edge, and Keep Apart also measures center gaps across that seam. - Variation parameters are the key to a natural result.
random_flipwithscale_jitteraround 0.3 andbrightness_jitteraround 0.2 removes the copied look. Random Flip includes vertical flips, so leave it off for grass or characters whose base must remain upright. - The range mask determines the effect. Use
path_maskto place grass on the shape of the ground, or threshold acoordinatesY gradient to limit placement to an upper or lower region. - Mask values are not density weights. Every candidate that passes the threshold
has the same selection probability. Set
alpha_enabled=falseto use RGB brightness. - Drive
seedwithseed_rangeto compare different scattering patterns. - With no stamp connected, the node uses a 1px dot. That is often enough for stars or gravel.
- Changing only the weights does not change positions, flips, rotations, or sizes, so material ratios can be compared on the same composition.
Related nodes
path_mask— the go-to way to define the scatter areaseed_range/variant_select— generate different scatter patternsblend— composite the scattered result over a backgroundpath_array— regular placement along a path instead of random scattering
How to use
Basic use
- Connect the
Path Maskoutput tomask. - Set the amount with
count. - Change
seedto change the distribution.
- Connect the
Avoid clusters
- Change
placementtoKeepApart. - Try
min_distance=3–5for small stars or gravel, or roughly the stamp width for grass and wood knots. - On tiles,
wrap_x/wrap_ymakes centers across opposite edges count as neighbors and continues overflow stamp pixels on the opposite side.
- Change
Mix several appearances
- Connect an image list to
stampsand a list of the same length toweights. [7, 2, 1]means roughly 70% / 20% / 10%; the values do not need to sum to 100.- Length mismatch, negative values, and all-zero weights are errors. Zero is useful for temporarily excluding one candidate.
- Connect an image list to
Threshold
0.5places stamps where the mask value is at least half.- A white + alpha mask such as
Path Maskworks as-is. - Values above the threshold do not receive a higher selection probability.
Invert
- When enabled, stamps are placed on the unfilled side.
Examples
Combine with Path Mask
[Multi Path] → [Path Mask] → mask → [Mask Scatter] → [Preview]
Scatter dots without a connected stamp
[Path Mask] → [Mask Scatter(count:32, color:white)] → [Preview]
Use any mask image
[Pixel Canvas] → mask → [Mask Scatter]
Create a natural cluster with variation
When batch-producing grass, stones, stars, or similar assets from one stamp:
[grass stamp] → stamp → [Mask Scatter(random_flip:on, scale_jitter:0.4, brightness_jitter:0.3)]
The same seed always produces the same result (deterministic).
Scatter two grass variants and a flower from their bases
[grass A] ─┐
[grass B] ─┼→ [List Create(Image)] → stamps ┐
[flower] ─┘ ├→ [Mask Scatter(anchor:BottomCenter,
[7,2,1] → [List Create(Float)] → weights ───┘ draw_order:BackToFrontY)]
Notes
- Two stamps are never assigned the same center pixel.
- The stamp images themselves can overlap.
KeepApartguarantees center spacing, not footprint separation. Large, wide, or scale-jittered stamps can still overlap when larger thanmin_distance.- If all requested stamps do not fit, the node outputs those that fit and shows a warning
on
min_distance. - Only the center is guaranteed to lie inside the mask. A larger stamp footprint can extend outside it.
- The output dimensions match the input mask image.
- All variation is derived deterministically from
seed. - When Stamp Candidates is connected, it takes priority over the single Stamp input.