Most game artists reach for Substance Painter the moment texturing comes up — and for complex multi-layer projects, that makes sense. But for stylized props, hand-painted characters, or rapid prototyping, Blender's built-in Texture Paint mode is faster, costs nothing, and produces game-ready results without leaving the software you're already using. This guide walks you through the complete workflow, from canvas setup to engine export.
Setting Up Your Canvas: UV Maps and Image Slots
Texture painting requires a properly unwrapped UV map and at least one image texture node wired into your material before you pick up a brush. Skip this step and you'll paint into nothing.
Start in the UV Editor. With your mesh in Edit Mode, select all faces and run UV > Smart UV Project or a manual Unwrap depending on your mesh's complexity. Smart UV Project works well for hard-surface props; manual unwrapping with seams gives cleaner results for characters. Keep texel density consistent — a pixel-per-unit ratio between 10–20 is typical for game props at 2048×2048 resolution.
Once unwrapped, switch to the Shader Editor. Add an Image Texture node and connect it to the Base Color input of your Principled BSDF. Click New on the image texture node and create a 2048×2048 image (4096 for hero assets). Name it clearly: `char_goblin_basecolor_2048`. Leave it as a blank white canvas or a flat color base.
Critical: the image texture node must be selected (highlighted in the node editor) before you enter Texture Paint mode. Blender paints to whichever image texture node is active — if none is selected, brushstrokes disappear.
```python
# Quick-check your UV islands aren't overlapping
# In Blender's Python console:
import bpy
obj = bpy.context.active_object
uv_layer = obj.data.uv_layers.active
print(f"UV layer: {uv_layer.name}")
print(f"Loops: {len(uv_layer.data)}")
```
For PBR workflows, create a separate image texture node and new image for each channel you plan to paint: Base Color, Roughness, and Metallic. You'll switch between them during painting by selecting the relevant node in the Shader Editor.
![]()
Blender's Texture Paint Tools: Brushes, Masks, and Stencils
Blender's Texture Paint mode (Tab into it from the viewport header dropdown, or press Ctrl+Tab) gives you a surprisingly capable brush engine once you learn its layout.
Essential brushes:
| Brush | Best Use |
|---|---|
| Draw | Basic color application, opacity-controlled |
| Soften | Blur transitions between paint regions |
| Smear | Push wet paint, great for organic blends |
| Clone | Sample from another part of the mesh or reference image |
| Fill | Flood-fill a UV island with a flat color |
| Mask | Protect regions from paint — non-destructive |
Set Blend Mode to Mix for standard painting, or switch to Multiply/Screen for darkening/lightening passes. Use Falloff curves to control brush pressure response — a sharp falloff gives you crisp edges for stylized cell-shaded looks; a smooth falloff suits realistic skin.
Stencil projection is underused but powerful. Go to the brush settings, enable Texture, load a grunge or noise image, set Mapping to Stencil, then position and scale it in the viewport with RMB drag. Paint through it to stamp weathering, rust, or damage patterns in a single stroke.
Face masking (toggle in the header with the face icon) lets you isolate a single UV island for painting — indispensable when you have tightly packed UVs and don't want color bleeding across seams.
For hard-surface assets like crates or weapons, combine Fill to block in flat colors per region, then use Draw with a low-opacity speckle texture to add surface variation. Three or four passes in this sequence produces a hand-painted look in under ten minutes per prop.
Painting PBR Channels Directly
Texture painting isn't limited to Base Color. For a full PBR material, you'll paint Roughness and optionally Metallic directly in Blender, giving you control over surface finish without opening a separate app.
Roughness pass: Create a new 2048×2048 image (enable 32-bit float for precision), wire it into Roughness on the Principled BSDF. Select that node in the Shader Editor. In Texture Paint mode, disable color management by setting the Image Editor's view transform to Raw — roughness is a grayscale linear value, not sRGB. White (1.0) = fully rough, black (0.0) = mirror smooth. Paint highlight areas (raised edges, worn metal) lighter; recessed areas darker for cavity-style variation.
Metallic pass: Same process. Most game props are either 0 (non-metal) or 1 (metal) — paint in black-and-white only. Intermediate values represent unusual materials like carbon fiber and are rarely needed.
Layering tip: For complex assets, use Blender's Vertex Color paint as a low-fidelity mask during concepting, then promote to a proper texture once you're happy with the distribution. This non-destructive iteration is much faster than committing to full-resolution paint immediately.
![]()
Exporting Painted Textures for Unity, Unreal Engine 5, and Godot 4
Painted textures live inside your .blend file until you save them explicitly. Go to Image Editor > Image > Save As for each texture. Choose PNG for Base Color (sRGB) and 16-bit PNG or EXR for Roughness/Metallic (linear data). Name files with a consistent convention:
```
asset_name_basecolor.png
asset_name_roughness.png
asset_name_metallic.png
asset_name_normal.png ← baked separately via Cycles
```
Unity: Import textures, set Base Color to sRGB, Roughness and Metallic to Linear (uncheck sRGB in the texture import settings). Use URP's Lit shader or HDRP's Lit. Assign your textures to the matching channels in the material inspector.
Unreal Engine 5: In the texture asset settings, set Roughness and Metallic to TC_Grayscale compression and uncheck sRGB. Base Color stays at TC_Default (sRGB). UE5's M_Basic_Surface material or any PBR master material accepts these directly.
Godot 4: Import textures, set Roughness and Metallic imports to Compress > Lossless and ensure sRGB is unchecked in the import panel. Assign in StandardMaterial3D to their corresponding slots.
For channel packing (combining Roughness into G and Metallic into B of a single texture to cut draw calls), see Blender's compositor or a Python script post-export — this step alone can halve your texture memory on mobile platforms.
Selling Hand-Painted Assets on the BitSoul Marketplace
Hand-painted game assets have a strong buyer base among indie devs who want stylized, low-poly art without licensing restrictions. The workflow you've built here — Blender UV unwrap → Texture Paint → PNG export — produces clean, self-contained assets that are easy for buyers to drop into any engine.
When preparing for the BitSoul marketplace, follow these quality checklist items before upload:
- [ ] All UV islands packed efficiently, no overlaps
- [ ] Textures saved as PNG, named with asset + channel suffix
- [ ] Roughness and Metallic exported as linear (no sRGB)
- [ ] Base Color saved at sRGB
- [ ] Normal map baked from a high-poly sculpt (Cycles, 2048x2048)
- [ ] GLB or FBX exported with textures embedded or in a matching /textures/ subfolder
- [ ] Preview renders from at least two angles with engine-accurate lighting
- [ ] LOD variants at 50% and 25% poly count included for larger props
Hand-painted stylized assets typically sell well at the $5-$15 range for individual props and $20-$50 for full environment packs. Consistency in art style across a pack is a bigger sales driver than technical complexity — buyers want cohesion, not just polygon counts.
Browse the BitSoul marketplace to see what's already selling and identify gaps. Categories with high demand and low supply include: stylized food items, cozy interior props, low-poly fantasy creatures, and hand-painted weapon sets.
---
Blender's texture paint mode won't replace Substance Painter for AAA-complexity assets, but for the majority of indie game props, it delivers everything you need without a subscription or a steep learning curve. Build the UV setup and canvas workflow into muscle memory, learn the stencil and mask tools, and you can produce market-ready hand-painted assets in a single Blender session.
Ready to list your work? Upload your hand-painted assets to BitSoul and reach thousands of game developers looking for exactly what you're making.