MeshCoat: Dedicated 3D PBR Texture Painting

Fast, local-first 3D texturing for game developers and 3D artists. Author Base Color, Roughness, Metalness, and Normal maps simultaneously directly on your mesh. Free, open-source, and runs 100% offline with zero telemetry.

Simultaneous Channels 4 Channels BaseColor, Rough, Metal, Normal
Canvas Resolutions 512 to 8192px Retro PSX up to high-density 8K
Multi-Piece Models Texture Sets Independent stacks per mesh piece
Engine Integration Packed ORM One-click export for UE5, Unity & Godot
Privacy & Data 100% Offline Zero telemetry, local storage only
Full Workstation Capabilities

Engineered for Technical 3D Texturing

A complete, focused feature set for painting game-ready 3D assets. No complicated node trees, no bloated cloud services, just immediate surface painting.

4-Channel PBR Painting

Paint Base Color, Roughness, Metalness, and Tangent Normal relief simultaneously in a single coordinated brush stroke.

Color · Rough · Metal · Normal

Hardware UV Projection

Directional camera-space projection with depth testing prevents paint bleeding through thin walls, ears, fingers, or occluded faces.

Zero Wall Bleed · Depth Culling

Multi-Piece Texture Sets

Each submesh piece gets an independent layer stack, canvas resolution, and undo history. Quickly isolate pieces to reach interior folds.

Isolated Stacks · Tab Cycling

Face UV Projector

Select polygon faces to place trim-sheets and texture crops with real-time offset, rotation, and scale before baking to your layer.

Trim Sheets · Live 3D Preview

2D UV Canvas & Split View

Paint directly on the flattened 2D texture map with synchronized wireframe overlays and real-time texel density feedback.

Flat Unwrap · Wireframe Overlay

Photoshop .ABR Brushes

Import standard Photoshop brush collections directly. Includes tip previews, dynamic spacing, angle jitter, and normal relief generation.

ABR Ingestion · Custom Alphas

Edge Wear & Crevice Grime

Procedural curvature analysis isolates convex ridges for paint chipping and concave crevices for grime and ambient occlusion.

Convex Wear · Concave Dirt

Screen Viewport Stencil

Pin any image overlay to the camera plane. Orbit your model beneath it and paint or stamp decals directly onto curved surfaces.

Mari/Mudbox Mode · Key S

Layer Stack & Masks

Non-destructive layers with Normal, Multiply, Screen, and Overlay blend modes, layer opacity control, and dedicated grayscale layer masks.

Blend Modes · Grayscale Masks

Packed ORM Game Export

Export packed Occlusion-Roughness-Metallic textures optimized for Unreal Engine 5, Unity URP/HDRP, Godot 4, and glTF standards.

UE5 · Unity · Godot · glTF

Blender 3D Native Bridge

Directly open .blend files in MeshCoat without intermediate exports. Re-import geometry updates while preserving all paint layers.

Headless CLI · Auto Reload

Symmetry Mirror Axis

Mirror brush strokes, stamps, and erasures across X, Y, or Z axes with customizable mirror plane offsets for characters and props.

X / Y / Z Planes · Alt+X

Wacom & Stylus Pressure

Full graphics tablet stylus support. Map pressure independently to brush size, opacity, and hardness with minimum floor thresholds.

Pressure Curves · Floor Limits

Clipboard Paste (Ctrl+V)

Copy any image from your browser or editor and press Ctrl+V to paste it directly as a floating stencil or texture stamp.

Zero File Saving · Instant Decal

Smudge, Blur & Pixelate

Surface filter brush featuring directional smudge along stroke vectors, Gaussian blur across all PBR channels, and retro PSX pixelation.

Smudge · Blur · PSX Pixelate

Face Selection & Islands

Constrain paint strictly to selected polygons. Select individual faces, entire connected UV islands, and save reusable selection groups.

UV Islands · Selection Groups
Workstation Tool Suite

Direct Single-Key Toolset

11 dedicated primary painting tools and 2 modifier subsystems accessible via established 3D DCC muscle memory shortcuts.

Brush Tool

B / 1

Direct 3D freehand material painter. Writes BaseColor, Roughness, Metalness, and Normal relief directly into texture maps.

  • Interactive resize with [ / ] or Right-Click Drag
  • Stylus pressure mapped to radius and opacity
  • Angle, size, and color jitter options

PBR Eraser

E / 2

Non-destructive coverage removal. Subtracts layer alpha to reveal underlying layers without corrupting PBR channels.

  • Full support for textured .abr brush tips
  • Independent opacity and hardness sliders
  • Erases grayscale masks to unmask paint

Texture Stamp

T / 3

Single-dab decal projection tool. Places cropped textures or alphas onto 3D surfaces with rotation and scale control.

  • Rotate decal with R / Shift+R (±15°)
  • Clamp decal bounds to eliminate edge repeat
  • Generates tangent normal displacement from alpha

Fill Bucket

G / 4

Point-and-click flood fill. Fills solid colors, cropped textures, or full PBR material sets across pieces, faces, or clicked triangles.

  • Click and drag to sweep-fill consecutive triangles
  • Fit or repeat-tile placement modes
  • Respects active polygon face selection masks

Line Tool

L

Straight surface-interpolated lines. The line walks screen space and raycasts back onto the mesh, preventing strokes from tunneling.

  • Hold Shift to snap line angles to 45° increments
  • Renders all 4 PBR channels along trajectory
  • Cleanly terminates at surface silhouettes

Gradient Ramp

D

Drag across the 3D model to paint linear or radial color ramps with multiple color stops and opacity blending.

  • Unlimited color stops with live ramp preview
  • Linear directional and circular radial modes
  • Shift-snapping for 45° planar alignment

Effects Brush

U / 7

Surface filter brush that reworks existing paint across four modes: Directional Smudge, Gaussian Blur, Sharpen, and Pixelate.

  • Smudges along stroke motion vectors
  • Filters color and PBR channels together
  • Pixelate mode creates retro PSX texel grids

Eyedropper

I / 5

3D surface sampler. Samples color and material parameters directly from the viewport, including from non-active mesh pieces.

  • Hold Alt on any active tool for fast sampling
  • Cross-piece sampling without switching pieces
  • Add sampled colors directly to project palette

Face Selection

V / 6

Surface masking engine. Restricts painting, stamping, and filling strictly to selected triangles.

  • Alt+Click selects entire connected UV island
  • Save named selection groups into project file
  • Hold Ctrl+Drag to select on any tool

Face UV Projector

P / 8

TrenchBroom-style face texturing. Select faces, choose a texture region, and adjust placement with a live lit 3D preview.

  • Fit-to-selection mode for trim sheets
  • Repeat tile mode with scale factors
  • 90° snap rotation and precision offsets

Text on Faces

Y

Direct typography decal tool. Type text, choose installed system fonts, customize fill and stroke, and bake onto faces.

  • Live font picker for all installed system fonts
  • Independent fill color, stroke width, and outline
  • Positioned via Face UV Projector geometry

Screen Stencil

S

Floating camera-plane stencil overlay. Paint through reference images onto your model or stamp decals in one click.

  • Model orbits freely beneath locked stencil
  • Paste crops directly with Ctrl+V
  • Brightness masking or direct color stamping
In-App Visual Proof

Workstation Interface

High-resolution captures of MeshCoat's real production environment and workspace tooling.

Game Engine Integration

Direct Export to Major Engines

No manual channel recombining in external image editors. MeshCoat packages your painted channels into engine-standard texture maps on export.

ORM Packed 3-Channel Texture
RED Channel Ambient Occlusion (AO) from cavity generators or imported passes.
GREEN Channel Roughness map · Linear color space (0.0 gloss → 1.0 matte).
BLUE Channel Metalness mask · Linear color space (0.0 dielectric → 1.0 metal).

Unreal Engine 5

PBR / Nanite
Plug MeshCoat's packed _ORM.png directly into your material graph: R → Ambient Occlusion, G → Roughness, B → Metallic. Set Texture Group to Masks (no sRGB).
Color: _BaseColor.png ORM: _ORM.png (RGB) Normal: _Normal.png (DirectX/Tangent)

Unity (URP / HDRP)

Lit Shader
Compatible with Unity's Mask Map format. Use MeshCoat's export presets to write individual unpacked maps or packed ORM channels matching URP Universal Lit.
Albedo: _BaseColor.png Mask Map: _ORM.png Normal: _Normal.png

Godot 4.x

StandardMaterial3D
Turn on Roughness > Texture Channel = Green and Metallic > Texture Channel = Blue in Godot's StandardMaterial3D inspector to use MeshCoat's ORM map without modifications.
Albedo: _BaseColor.png ORM: _ORM.png Normal: _Normal.png

Blender 3D Bridge

Principled BSDF
Directly open .blend files in MeshCoat via our built-in headless Blender CLI bridge. Re-import updated models on the fly while retaining all paint layers.
Native Bridge: Auto Blender CLI Base Color: Principled BSDF Color ORM Unpack: Separate Color Node
Keyboard-First Productivity

Hotkey & Shortcut Index

Organized reference of essential workstation shortcuts for rapid keyboard navigation and painting.

Painting & Tool Selection 11 Shortcuts
1 / BActivate Brush tool (freehand 3D material painting)
2 / EActivate PBR Eraser tool (subtract layer alpha coverage)
3 / TActivate Texture Stamp tool (decal placement)
4 / GActivate Fill Bucket tool (flood fill mesh or faces)
LActivate Line tool (straight surface-interpolated strokes)
DActivate Gradient Ramp tool (linear and radial ramps)
7 / UActivate Effects Brush (Smudge, Blur, Sharpen, Pixelate)
5 / IActivate Eyedropper (sample color & material from surface)
P / 8Activate Face UV Projector (trim-sheet placement)
YActivate Text Tool (render typography decal onto faces)
SToggle Screen-Space Stencil HUD
Brush Modifiers & Canvas 8 Shortcuts
[ / ]Decrease / increase brush radius or tiling scale
RMB + DragInteractively resize brush radius in viewport
Shift + RMB + DragInteractively adjust brush opacity and hardness falloff
Shift + ClickDraw straight surface line from last brush dab
R / Shift + RRotate brush tip or decal stamp ±15 degrees
XSwap solid color and texture (on mask: black ↔ white)
Alt + XCycle symmetry mirror axis (Off → X → Y → Z)
Ctrl + VPaste clipboard image directly into texture shelf or stencil
Viewport Navigation 7 Shortcuts
Alt + LMBOrbit 3D camera around pivot
Alt + MMBPan 3D camera in view plane
Alt + RMB / WheelSmooth zoom camera in / out
FFrame model in view (or frame active face selection)
WToggle topology wireframe overlay in 3D viewport
Tab / Shift + TabSwitch to next / previous mesh piece (multi-piece models)
Double ClickSelect the mesh piece directly under cursor in viewport
Selection & Project 9 Shortcuts
6 / VActivate Face Selection mask tool
Ctrl + Click / DragSelect / isolate faces on any active tool
Ctrl + Shift + DragDeselect faces on any active tool
Alt + ClickSelect connected UV island (shared-edge topology)
Ctrl + ASelect all faces of the active mesh piece
Ctrl + D / EscClear active face selection mask
Ctrl + SSave MeshCoat project (.meshcoat with rolling backups)
Ctrl + EOpen Unified Texture Export Wizard (packed ORM)
Ctrl + Z / Ctrl + YUndo / Redo (100-step non-destructive history)
Source Repository

Build Directly From Source

MeshCoat is built with TypeScript, Electron, Three.js, SolidJS, and Bun.

bash — terminal
# Clone the repository
$ git clone https://github.com/stuyk/meshcoat.git
$ cd meshcoat

# Install dependencies with Bun
$ bun install

# Run in local development workstation mode
$ bun run dev

# Or package standalone binaries for your OS
$ bun run build:linux # AppImage, deb, tar.gz
$ bun run build:win # NSIS installer, portable .exe
$ bun run build:mac # DMG, zip