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 Prefab Palette Painting & Controls Visuals & Variation Transform & Placement Hierarchy, Tags, Layers & Scripts Texture Channel Packer Shortcuts Reference Troubleshooting 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.

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. Hovering over any thumbnail renders an expanded, high-resolution preview card that automatically rotates the object. Right-click a thumbnail to open the prefab, create a variant, or toggle its active state in the palette.
Hotkeyed Item Selection [Shift + 1–0] & Deselect All [Shift + D] When a single prefab group is active, the first 10 prefabs display number badges (10) over their thumbnails. Press Shift + [1–0] (or 1–0 directly while holding Ctrl + Alt in Line/Path mode) to toggle individual prefabs in or out of your active selection on the fly, even while actively drawing lines or paths. Full Numpad key support is also included. Pressing Shift + D instantly clears all selected items in your palette without interrupting your workflow. Swapping groups preserves your selections and shifts the badges to the new group's items.
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 & Overrides 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. You can also configure specific overrides for Spawn Layers, Paintable Layers, Parent Objects, and Terrain Splatmap Filters on a per-group basis for complex multi-group setups.
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.

Painting Controls

Select between Paint, Erase, Recolor, and Measure tabs at the top of the panel. Pressing the hotkey for Erase, Recolor, or Measure while already in those modes will intelligently flip you back to Paint mode. 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. Line Mode retains physical boundary memory across continuous clicks so corners and multi-segment lines automatically stitch together end-to-end without leaving leftover gaps or overlaps. You can even swap prefab groups mid-action to seamlessly connect different object types like walls and gates.
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. Grid sizing is completely decoupled from the brush size, and you can click and drag the mouse to dynamically increase grid bounds.
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 engine uses chord-length iterations to calculate exact physical dimensions, perfectly locking objects like walls end-to-end even around sharp bends. You can swap prefab groups mid-action, and each segment independently tracks assigned prefabs on the fly. You can also click any existing path node handle in the Scene View to select it and retroactively toggle items or groups in your palette to update that segment instantly!
Measure Mode [Q / Shift+Q] Interactive measurement tools for checking scene distances. Press Q for Line measuring and Shift + Q for Grid measuring. Measurements persist on-screen when switching back to other modes until ESC is pressed.

Brush Settings

Setting Description
Live Prefab Previews [F] Renders true 1:1 holographic previews of the prefab in the scene exactly as it will be placed, allowing you to preview rotation, scale, and placement logic prior to clicking. Toggle on or off with F.
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.
Use Terrain Splatmaps When painting on Unity Terrains, filters prefab spawning by a specific terrain texture layer (e.g., grass, dirt, rock) and a minimum blend weight threshold. This prevents unwanted spawning (such as grass on dirt roads) across all placement modes, with full support for real-time live preview culling and per-group overrides.
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 Placement [U] When enabled, prefabs are placed at random positions within the brush radius rather than exactly at the cursor. Applies to all placement modes (Paint, Line, Grid, etc.), not just scatter mode. Toggle with U.
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.

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.

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.
Check Clearance Toggle [D] Toggles clearance checking on or off. Turning this off skips overlap detection entirely, allowing for vastly improved performance during rapid scatter placement when clipping isn't a concern. Toggle with D.
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. The maximum allowed padding spawn offset has been increased so objects can fall from higher up.
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.

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. You can also override Parent Objects per-group in the palette settings.
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, and set specific overrides per-group in the palette.
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.

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.

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
F Toggle Live Prefab Previews (1:1 holographic placement preview)
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 (retains boundary memory for continuous stitching)
Ctrl + Shift + Drag Grid mode — paint snapped to an independently scalable grid
G Enter / finish Paint Path mode (chord-length iteration)
Q Enter Measurement Mode — Line measuring tool
Shift + Q Enter Measurement Mode — Grid measuring tool
Enter Finish and populate the current path
ESC Clear current path / exit persistent Measurement Mode
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 Placement (applies to all modes)
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
D Toggle Check Clearance (disable for fast scatter placement)
H Toggle Use Physics Fall
J Toggle Post-Placement Rotate
B Toggle Randomize Brightness
V Toggle Apply Color Tint
19 / 0 Switch palette group (recalculates continuous Line/Path spacing on the fly)
Shift + 10 / Numpad Toggle individual prefabs (1–10) in or out of active selection on the fly (can also press 1–0 directly without Shift while holding Ctrl+Alt in Line/Path mode)
Shift + D Deselect all currently selected palette items

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 aren't spawning on my terrain when Use Terrain Splatmaps is checked
Make sure the selected Terrain Layer matches the texture you want to paint on (e.g., Layer 0 for Grass) and that the surface at your brush location meets or exceeds the Min Weight threshold. If your terrain texture blend is very subtle or faded at the edges, try lowering the Min Weight slider (e.g., down to 0.2 or 0.3) to allow spawning on transitional blends.
Objects are overlapping or clipping into each other
Enable Smart Clearance [I] and ensure Check Clearance [D] is toggled on — 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.

Support, Contact & Custom Integration

For all technical assistance, bug reports, asset configuration help, and general support, please reach out via email using the Contact Form. This is the primary and most reliable way to get help with any problems you encounter with the packages.

You can also use this form to inquire about custom freelance technical art services. If your project requires external 3D models to be integrated into the DPT ecosystem—including bespoke vertex-data packing, procedural wood grain mapping, GPU wind systems, or game-ready LOD budgeting—get in touch to discuss your specific needs and availability.

Email Contact (Preferred for all Support):
For troubleshooting, bug reports, publisher licensing, and freelance inquiries, please use the Contact Form on the DPT Games Hub.
DPT Community Discord:
While the contact form is the best way to get direct help with issues, you are also welcome to join the Discord Server to share feedback and connect with other users.