The 3D Handbook
Topic

Mesh decals

Decals made from real geometry (strips and small planes floating just above a surface) that sample a shared decal atlas; used for panel lines, bolts, vents and labels on hard-surface assets, and how to avoid z-fighting.

texturinghard-surfacematerialsengine

A mesh decal is a decal made from real geometry: a thin strip or small plane that sits just above a surface and shows a piece of a shared decal texture. Epic describes mesh decals as a way to use decal material properties "on separate surface geometry" for static and skeletal meshes (Unreal Engine documentation: Using Mesh Decals in Unreal Engine). They are a common technique for panel lines, bolts, vents, warning labels and seams on large hard-surface assets.

They are related to projected decals and of floaters: like floaters they hover above the surface, but instead of being baked down they stay in the final game mesh.

#Why use geometry instead of projection

Projected decals are boxes. They work on flat walls but "shear and distort" when the box is not aligned with the surface (Unreal Engine documentation: Using Mesh Decals in Unreal Engine). A mesh decal has its own UVs, so it can wrap around edges, follow curves and run along spline meshes (Unreal Engine documentation: Using Mesh Decals in Unreal Engine).

Epic lists further advantages over Decal Actors (Unreal Engine documentation: Using Mesh Decals in Unreal Engine):

  • Fewer draw calls, because large projected decals need both front- and back-facing draws.
  • Often faster, because "flat back facing decals cover 0 pixels".
  • Custom UVs for complex mappings, and normal-mapped decals that stretch along splines.

The main reason artists like them is resolution. A strip that shows a 32-pixel-wide slice of a 2048 px atlas can be any length, so a 10 m panel line stays crisp without a unique texture for the whole hull.

Left, a cross-section of a hull surface with a thin orange strip floating a tiny distance above it, labelled offset, with a note that too little offset causes z-fighting and too much causes visible floating. Right, a decal atlas divided into a long panel-line strip row, a row of bolt and vent squares, and a row of label stickers, with arrows from the strip on the hull to its row in the atlas.
A mesh decal is a strip of geometry hovering just above the surface, mapped to a region of a shared decal atlas. The offset is exaggerated here; in practice it is a fraction of a millimetre to a few millimetres.Diagram by the handbook author

#Where the technique came from

The technique became widely discussed among artists through a 2015 Polycount thread titled "Decal technique from Star Citizen". There, Obscura explained that Star Citizen's ships used a mid-poly model with chamfers and custom normals, and that the artists "placed many tiny planes, for every panel line, bolt and stuff" (Polycount: Decal technique from Star Citizen). He added that "the technique was also used in Alien Isolation" (Polycount: Decal technique from Star Citizen). These are forum accounts from artists rather than official studio breakdowns, so treat the details as informed descriptions.

Later in the thread Obscura summed up where the method fits: "useful on anything hard surface, that is big enough to make the unique texturing impossible" (Polycount: Decal technique from Star Citizen). The approach combines a mid-poly base, weighted (custom) normals, tileable materials and a decal atlas instead of one large baked unique texture.

#Decal atlases

A decal atlas (or decal sheet) is one texture set holding many decals: panel-line strips, bolts, vents, grilles, labels. It works like a trim sheet for details. Every mesh decal on an asset, or across a whole set of assets, can then share one material, which keeps draw calls down. See also texture atlases.

A typical decal atlas contains:

  • Normal map: the shape of the seams and bolts.
  • Alpha or opacity mask: where the decal shows.
  • Roughness, AO, base colour as needed, often channel packed; see channel packing.

DECALmachine's FAQ lists its decal maps as "normal, height, AO, curvature, mask and often subset mask" (machin3.io: DECALmachine FAQ).

#Z-fighting and offsets

Two surfaces at the same depth fight over which one is drawn, and you see flickering stripes. This is z-fighting. A mesh decal must sit in front of its surface to avoid it.

Epic says decal geometry "needs only to stay in front of the surface you want to affect" and should "hug" it, but needn't match exactly, because a small depth bias compensates (Unreal Engine documentation: Using Mesh Decals in Unreal Engine). Problems appear with LODs and at long distances, where depth precision drops (Unreal Engine documentation: Using Mesh Decals in Unreal Engine). Their fixes are to edit the mesh or push the decal out with World Position Offset in the material; in their example, a small offset moved the decal far enough out to stop intersecting (Unreal Engine documentation: Using Mesh Decals in Unreal Engine).

Artists in the Polycount thread agree that the offset should be tiny. Obscura: "You need a little offset, yes, but not too much, cause then it would visibly offset, and 'swim'" (Polycount: Decal technique from Star Citizen). blankslatejoe pushed "all the decals out by a super tiny amount, to help with zfighting" (Polycount: Decal technique from Star Citizen). bac9-flcl suggested a shader with depth offset as an alternative to modeling the offset in (Polycount: Decal technique from Star Citizen).

#Masked or translucent

A mesh decal needs some way to hide everything outside the decal shape.

Normal-only decals avoid most colour blending problems: the panel line changes the normal and maybe roughness, and keeps the colour of the paint underneath. See normal-only decals.

Unreal's mesh decal page lists some limitations to plan around: no artist-specified sort order, missing shader overdraw visualisation, and instruction counts in the Material Editor that are wrong for decals (Unreal Engine documentation: Using Mesh Decals in Unreal Engine).

#Hard-surface panel lines in practice

A typical workflow for a sci-fi hull, crate or vehicle:

  1. Model a clean mid-poly or low-poly base with bevels and weighted (custom) normals.
  2. Texture it with a tiling material or trims.
  3. Add strips for panel lines and small quads for bolts, vents and labels, mapped to a decal atlas.
  4. Offset them slightly and give them a decal material.
  5. Add vertex colour or projected decals for wear and dirt on top.

On Polycount, igi asked whether decals were still needed on chamfered edges once weighted normals handle the shading; Prime8 answered that decals help when the edge should carry its own wear or damage detail (Polycount: Decal technique from Star Citizen).

#DECALmachine

DECALmachine by MACHIN3 is the best-known mesh decal tool for Blender. It applies decals in "a very non-committal, non-destructive, UV-less way" as an alternative to traditional hard-surface texturing (machin3.io: DECALmachine). The current site lists support for Blender 4.3 to 5.2 (machin3.io: DECALmachine); it is a commercial add-on, first sold on Gumroad in 2017 (80 Level: DECALmachine: Work with Decals in Blender).

Main features, according to MACHIN3:

  • Decal types: Panel, Info and Trim decals are named on the site, which refers to "all four Decal types" (machin3.io: DECALmachine).
  • Placement: decals can be projected or shrinkwrapped onto curved surfaces, and panel strips can be "sliced boolean-style" (machin3.io: DECALmachine documentation).
  • Export: Decal Atlases "to efficiently export to deferred rendering engines like Unity HDRP, Unreal Engine"; Trim Sheets for forward renderers such as Unity URP; or baking decals into the parent object's UV space (machin3.io: DECALmachine).

The FAQ also lists limits. Mesh decals in Blender are opaque, and "there is no mixing, because Blender uses forward shading/rendering" (machin3.io: DECALmachine FAQ). MACHIN3 also advises against true displacement on decals: "It would intersect with the base mesh the decals are floating above" (machin3.io: DECALmachine FAQ).

#In different tools

#Further reading and watching

Shows how DECALmachine packs decals into an atlas for export to a game engine; watch it to see the decal atlas idea in practice. Watch on YouTube

References

  1. Epic Games · Using Mesh Decals in Unreal Engine · Unreal Engine documentation · docs · accessed 2026-10-21
  2. Polycount forum (dzibarik, Obscura, marks, bac9-flcl, radiancef0rge and others) · Decal technique from Star Citizen (page 1) · Polycount, 2015 · forum · accessed 2026-10-21
  3. Polycount forum (Obscura, blankslatejoe, Prime8, igi and others) · Decal technique from Star Citizen (page 4) · Polycount, 2016 · forum · accessed 2026-10-21
  4. Matthew Trevelyan Johns (interviewed by Kirill Tokarev) · Building Environments for Uncharted: The Lost Legacy · 80 Level, 2017 · article · accessed 2026-10-21
  5. MACHIN3 · DECALmachine FAQ · machin3.io · docs · accessed 2026-10-21
  6. MACHIN3 · DECALmachine · machin3.io · tool · accessed 2026-10-21
  7. Arti Sergeev · DECALmachine: Work with Decals in Blender · 80 Level, 2017 · article · accessed 2026-10-21
  8. MACHIN3 · DECALmachine documentation · machin3.io · docs · accessed 2026-10-21
  9. Ben Keeling · Everything I learnt about Environment Art (blog series) · ArtStation blog · article · accessed 2026-10-21

Also consulted

Last updated 2026-10-22