DPT Games Prefab Painter

Paint prefabs directly into your scene with randomized transforms, scale, and per-instance color variation. Everything needed to start painting is included and ready to use out of the box.

Features

Quick Navigation: Getting Started 1. Prefab Palette 2. Painting & Controls 3. Visuals & Variation 4. Transform & Placement 5. Hierarchy, Tags, Layers & Scripts 6. Texture Channel Packer 7. Shortcuts Reference 8. Troubleshooting 9. Support

Getting Started

Open the painter and start placing assets in just a few steps.

Quick Start

  1. Open Tools → DPT Games → Prefab Painter from the Unity menu bar.
  2. Drag prefabs or a folder of assets into the palette drop zone.
  3. Set Paintable Layer to match the layer your terrain or ground surfaces use.
  4. Assign a Parent Object or click New to create a fresh one.
  5. Click the green START PAINTING ['] button.
  6. Hold Ctrl + Left Click and drag across scene surfaces to paint prefabs.
Undo: Every paint stroke, erase, line, grid, and path action is fully registered with Unity's undo system. Use Ctrl + Z and Ctrl + Y freely.

1. Prefab Palette

The palette is where you manage which prefabs the painter can place. It supports multiple groups, saveable presets, and several ways to add and remove assets.

Control Description
Active Palette File & Save As New Saves your current palette as a reusable project asset. Load different palettes via the object field to switch between prop sets or biome themes instantly.
Thumbnail Grid Shows icon previews for all loaded prefabs. Hover over any thumbnail to see a larger preview and the asset name. Right-click a thumbnail to open the prefab, create a variant, or toggle its active state in the palette.
Spawn Weight Select one or more prefabs in the palette to reveal the Selected Item Settings panel. Use the Spawn Weight slider or field to control how frequently that prefab appears relative to others during painting — a value of 2 makes it spawn twice as often as a prefab weighted at 1. A small w badge on the thumbnail indicates a non-default weight is active. Weights are saved with the palette file.
Groups The first group acts as your main active palette. Add more groups with + Add Group to organise assets by type, biome, or any other category. Press 19 / 0 to switch between groups quickly.
Marquee Selection Click and drag over the thumbnail grid to select multiple prefabs at once. Use this to bulk-move or remove a set of assets.
Drag to Scene Drag any prefab from the palette directly into the Scene view for manual one-off placement.
Drop to Remove Drag selected prefabs into this zone to remove them from the palette.

2. Painting Controls

Switch between Paint, Erase, and Recolor tabs at the top of the panel. Use the large green button to start painting and the red button to stop.

Placement Modes

Mode How It Works
Paint Mode The default mode. Hold Ctrl + Left Click and drag to continuously paint prefabs onto surfaces within the brush radius. A spawn count estimate (~N) is shown when Scatter Mode is active.
Scatter Mode [O] Places a large number of prefabs randomly across the full brush area in a single stroke. Ideal for painting dense ground cover like grass or rocks across wide areas. Toggle it on or off with O.
Line Mode Hold Ctrl + Alt + Drag to paint prefabs in a straight line from your starting point. Useful for fences, walls, or road edges. Displays an estimated placement count while dragging.
Grid Mode Hold Ctrl + Shift + Drag to paint prefabs snapped to a regular grid pattern. Good for structured layouts like floor tiles, crates, or crops. Shows an estimated placement count while dragging.
Paint Path [G] Places prefabs along a smooth curved path. Press G to enter path mode, then Ctrl + Left Click to place nodes. Press G again or Enter to finish — the tool will populate the curve with prefabs spaced evenly along it. Shows an estimated placement count before you finish.

Brush Settings

Setting Description
Paintable Layer Only surfaces on this layer will receive prefabs. Make sure your terrain or ground mesh uses a matching layer, otherwise raycasts will pass through and nothing will be placed.
Brush Shape [C] Switches between Circle and Square brush footprints. Press C to cycle.
Brush Radius [ [ / ] ] Controls the size of the brush area. Use [ to shrink and ] to grow the radius interactively in the scene.
Randomize Scatter [U] When enabled, prefabs are placed at random positions within the brush radius rather than exactly at the cursor. When disabled, all placements land at the cursor position.
Min Spacing [M / Shift+M] Sets the minimum distance between placed objects. Use M to step the value up and Shift+M to step it down. When Smart Clearance is on, object size is also factored in — see Transform & Hierarchy.
Spawn Rate [X / Shift+X] Controls how quickly prefabs are placed during a held drag. Lower values place objects faster. Use X to increase the interval and Shift+X to decrease it.
Stretch Spacing To Fit [S] Only visible in the editor window when Path Paint is active. If true, slightly stretches or squashes spacing to perfectly close a path loop. Turn OFF for rigid modular tiles (like roads) to prevent seams.
Brush Handle Color Changes the color of the brush circle in the scene view. Adjust this if the default color is hard to see against your terrain.

3. Visuals & Variation

Per-instance visual variation using the DPT shader pipeline. These options add variety across painted objects without creating extra materials or breaking GPU batching.

Setting Description
Randomize Brightness [B] Applies a random brightness offset to each placed prefab via the DPT_ShaderVariation component. Helps break up flat, uniform lighting across repeated assets.
Apply Color Tint [V] Applies a color tint and optional HSV variance to each placed prefab. Useful for adding natural color variation to foliage, rocks, or any asset using the DPT shader.
Shader Integration: DPT shaders read per-instance variation values from the GPU Renderer Shader User Value (RSUV) stream. This is fully compatible with Unity 6's GPU Resident Drawer — variation has zero impact on draw call counts. The Color Property Name field is only editable when a standard URP Lit fallback shader is detected. In that case, a Material Property Block is used.

4. Transform & Placement

Controls how placed prefabs are oriented, scaled, named, and organised in the scene hierarchy.

Setting Description
Align to Ground [N] Rotates each placed prefab so its up axis matches the surface normal it lands on. Useful for objects on slopes or uneven terrain.
Randomize Y Rotation [Y] Rotates each placed prefab randomly around its vertical axis. Helps break up repetitive silhouettes when painting many of the same asset.
Randomize Scale [L] Applies a random scale to each placed prefab between a minimum and maximum value you define. When disabled, a single fixed scale slider is shown instead.
Fixed Scale Active when Randomize Scale is off. Applies a uniform scale to every placed prefab.
Allow Stacking [K] When enabled, prefabs can be placed on top of previously painted objects — useful for layering props, such as painting moss or debris on top of rocks. When disabled, the painter will not place objects on other painted children of the same parent.
Place By Collider [P] Positions prefabs based on the bottom of their collider bounds rather than their pivot point. This prevents objects with off-centre pivots from sinking into the ground. For prefabs without colliders, a temporary collider is generated automatically.
Smart Clearance [I] Automatically accounts for each prefab's physical size when spacing objects. This prevents overlapping even when Min Spacing is set low. Increasing Min Spacing adds extra gap on top of the object's natural footprint.
Use Physics Fall [H] After placement, runs a short editor-side physics simulation so prefabs fall and settle naturally under gravity. Good for filling uneven terrain, rock piles, or any scene where you want objects to rest realistically rather than float at the surface hit point.
Post-Placement Rotate [J] After placing a prefab or group (via Scatter, Line, Grid, or Path), the tool pauses and lets you rotate the result by moving your mouse. The rotation pivots around the centre of the placed group and projects grounding onto the surface in real time. Click to confirm.

5. Hierarchy, Tags & Scripts

Options for organizing painted objects, overriding object settings, and injecting components at paint time.

Setting Description
Parent Object & Name All painted prefabs are placed as children of the assigned parent object. Set a name here and click New to create a fresh parent. The tool names each placed child sequentially using your chosen naming convention.
Naming Convention Sets the prefix or pattern used when naming each spawned object. Objects are numbered sequentially—for example Rock_001, Rock_002, and so on.
Override Tag & Layer Forces all placed objects to use the tag and layer you specify here, ignoring the values stored on the source prefab. You can also choose whether child objects are included.
Script Component Injection Attach custom C# components automatically as prefabs are painted without creating prefab variants.
  • Root — Attaches the component to the instantiated root object.
  • Named Child — Attaches the component to a child object with a matching name (case-sensitive).
  • Skip If Already Exists — Prevents duplicate components from being added.

6. Texture Channel Packer

The DPT shader uses a packed texture format that combines metallic, occlusion, detail, and smoothness data into a single file. You can create these using the built-in packer at Tools → DPT Games → Texture Channel Packer.

  1. Assign your source maps to the channel slots:
  2. Configure per-channel options:
  3. If a slot is left empty, use the Empty Value slider to set a constant fallback for that channel.
  4. Click Pack and Save Texture to generate the packed map.

Required Unity Import Settings

Before packing, make sure all source textures have these settings in the Unity Inspector:

Brightness Conversion: The Convert Brightness option handles the conversion from 24-bit RGB maps to usable scalar data natively in the editor — no external tools needed.

7. Shortcuts Reference

All shortcuts are active while the painter is open and painting is enabled. They do not interfere with Unity's built-in editor shortcuts.

Shortcut Action
' Toggle painting on / off
Ctrl + Left Click Paint prefabs (hold and drag to paint continuously)
Ctrl + Right Click Erase painted objects under the brush
Ctrl + Alt + Drag Line mode — paint along a straight line
Ctrl + Shift + Drag Grid mode — paint snapped to a grid
G Enter / finish Paint Path mode
Enter Finish and populate the current path
S Toggle Stretch Spacing To Fit, only viewable when Path Paint is on.
[ / ] Decrease / increase brush radius
C Cycle brush shape (Circle / Square)
O Toggle Scatter mode
U Toggle Randomize Scatter
M / Shift+M Step Min Spacing up / down
X / Shift+X Step Spawn Rate up / down
N Toggle Align to Ground
Y Toggle Randomize Y Rotation
L Toggle Randomize Scale
K Toggle Allow Stacking
P Toggle Place By Collider
I Toggle Smart Clearance
H Toggle Use Physics Fall
J Toggle Post-Placement Rotate
B Toggle Randomize Brightness
V Toggle Apply Color Tint
19 / 0 Switch palette group

8. Troubleshooting

Prefabs are not being placed when I paint
The most common cause is a layer mismatch. The painter only places objects on surfaces assigned to the Paintable Layer. Check that your terrain or ground mesh uses the correct layer in its Inspector, and that the Paintable Layer setting in the painter matches. Also confirm painting is active — the button should be red and read Stop Painting.
Objects are overlapping or clipping into each other
Enable Smart Clearance [I] — this automatically uses each prefab's physical size to determine safe spacing. If you want extra gap between objects on top of that, increase Min Spacing. Note that spacing is only checked against other children of the same parent object; objects across different parent objects are not checked against each other.
Objects are stacking on top of each other in towers
Check that Allow Stacking [K] is not enabled unless you specifically want objects to stack. When stacking is off, the painter will not place objects on top of previously painted children of the same parent.
All objects look identical / color variation has no effect
Make sure Randomize Brightness [B] or Apply Color Tint [V] is enabled. Also confirm your prefabs use a DPT shader — standard URP Lit shaders do not support per-instance RSUV variation.
I accidentally painted over an area, can I undo?
Yes. Every paint, erase, line, grid, and path action is registered with Unity's undo system. Press Ctrl + Z to undo. You can also switch to Erase mode and use Ctrl + Right Click to remove objects individually.
Physics Fall doesn't seem to do anything
Make sure your prefabs have a collider, or enable Place By Collider [P] so the tool can interact with the physics system correctly. The simulation runs briefly in editor time — if objects appear to snap back, check that no scripts are overriding their transforms on start.
Does randomizing scale and rotation break GPU batching?
No. Unity 6's GPU Resident Drawer and SRP Batcher work with unique per-instance transform matrices. Randomizing scale, rotation, or position has no negative effect on draw call counts.

9. Support & Custom Pipeline Integration

If your project needs custom integration with the DPT ecosystem — including vertex data packing, normal array setup, GPU wind systems, or bespoke shader features — freelance technical art services are available. This also extends to general asset production: hard surface modelling, stylized prop creation, and game-ready LOD work tailored to your project's constraints.

For freelance or consulting enquiries, contact: support.dptgames [at] gmail.com with the subject line [Contract Inquiry].

Standard Support: For bug reports, setup questions, and licensing enquiries, contact: support.dptgames [at] gmail.com with the subject line [Support Request].