The 3D Handbook
Topic

Detail maps and macro variation

Layering a small, highly tiled detail texture for close-up sharpness and a large, low-frequency macro texture for long-range variation on top of a base material; how to blend normals correctly, how to fade by distance, and what it costs.

texturingmaterialsshadersterrain

A detail map is a small texture tiled many times over a surface to add fine detail up close. A macro texture does the opposite: a large, low-frequency texture stretched across many tiles to break up repetition at a distance. Together they let one base material hold up from 30 cm to 300 m without a huge texture.

Epic describes detail texturing as layering "a highly repeated diffuse and normal texture over the object's original diffuse and normal textures" to stop a material "looking pixelated when it is viewed very closely" (Unreal Engine documentation: Adding Detail Textures to Unreal Engine…).

#Three scales of texture

Think of a surface as having three bands of detail, like primary, secondary and tertiary forms:

Layer Typical tiling Job
Macro Once every 10 to 100 m Large colour and value shifts, so the eye stops spotting the tile
Base At your project's texel density The material itself: stone, plaster, metal
Detail 5 to 20 times the base tiling Pores, grain, scratches, tiny bumps for close-up views

Treat the numbers as a starting point. Pick them by testing at your closest and furthest normal camera distances.

A side view of a long ground plane with a camera on the left. Three bands are marked along the ground. Near the camera, a detail layer with very fine bumps is strong and fades out. In the middle, the base material dominates. Far away, a macro layer with large soft patches of light and dark becomes stronger. Below, a graph shows detail weight falling and macro weight rising with distance.
Detail maps carry the close-up range and fade out; macro variation takes over at a distance, where the base texture would otherwise read as a repeating pattern.Diagram by the handbook author

#Detail maps

A detail map usually contains a normal map and sometimes roughness and a greyscale colour variation. It does not replace the base material; it adds high-frequency information to it.

Epic's reasons are practical: base textures are usually authored for moderate distances, so they "may not hold up to close scrutiny", and a detail texture sharpens close views without a larger base texture (Unreal Engine documentation: Adding Detail Textures to Unreal Engine…). It only works "to a certain point": if the camera can get unreasonably close, a detail map is no longer enough (Unreal Engine documentation: Adding Detail Textures to Unreal Engine…).

#Engine support

#Blending detail normals correctly

Combining two normal maps is not the same as combining two colours. A normal map stores directions, so treating its channels like paint gives wrong lighting. Colin Barré-Brisebois and Stephen Hill compared the common methods in their 2012 article "Blending in Detail" (Self Shadow: Blending in Detail):

  • Linear (add and renormalise) is similar to averaging and "flattens" both the base and the detail.
  • Overlay looks better than linear but is still incorrect, because each channel is processed separately.
  • Whiteout and UDN combine the slopes; UDN is cheaper but loses some detail over flatter areas.
  • Reoriented Normal Mapping (RNM), which they introduced, rotates the detail normal to follow the base normal, so neither map is flattened.

The cost differences are small. In their table, RNM takes 8 ALU instructions (6 without normalisation), against 5 for linear and UDN and 9 for overlay (Self Shadow: Blending in Detail). A correct blend adds very little to the frame time.

In the engines:

To control strength, scale the detail normal's red and green channels before blending (World of Level Design: UE5: How to Blend or Combine 2 Normal Map…).

#Macro variation

On a large surface, even a good tiling texture forms a visible grid when seen from far away. Macro variation multiplies a large, soft, greyscale pattern over the material to break it up.

Jay Versluis shows a simple version for Unreal landscapes. He samples a tileable plaster-like texture (T_MacroVariation from the Starter Content) at three different scales, combines them into one overlay, and multiplies it onto the grass (versluis.com: How to use Macro Variations for Unreal Engine…). He uses only one colour channel, because the image "merely acts as variation breakup", and halves the overlay's strength because the default "would be too harsh" (versluis.com: How to use Macro Variations for Unreal Engine…).

Tips for macro textures:

  • Use only values, not hue, at first. Gentle light and dark patches are enough.
  • Combine two or three scales with non-matching ratios (for example 1, 0.37 and 0.11) so their repeats rarely line up.
  • Drive other channels too. A macro mask can raise roughness or blend in a second base material.
  • World-align it on modular meshes so variation continues across pieces; see triplanar and world-aligned mapping.

#Distance blending

Detail maps help up close and hurt at a distance, where their high-frequency pattern shimmers or turns to grey noise. Macro textures do the reverse. For this reason many materials fade between them by camera distance.

Epic's landscape documentation describes "transitioning from detail textures to larger macro textures depending on the distance the layer is being viewed from" (Unreal Engine documentation: Landscape Materials in Unreal Engine), and its detail texture page suggests distance-based blending on terrain to reduce visible tiling (Unreal Engine documentation: Adding Detail Textures to Unreal Engine…). A common setup:

  1. Compute the distance from the camera to the pixel.
  2. Turn it into a 0 to 1 mask with a start distance and a fade length.
  3. Lerp detail strength down and macro strength up with that mask.

The same mask can switch the base material's tiling, sampling it twice at two scales and fading between them, which is a cheap way to make terrain hold up both underfoot and on distant hills.

#Cost

Each layer adds texture samples. Epic notes that detail texturing "can add two or more extra texture lookups", which may cause performance or memory issues, especially on mobile (Unreal Engine documentation: Adding Detail Textures to Unreal Engine…). Ways to keep it lean:

#Further reading and watching

Goes beyond a single detail map, using one texture sample to drive many detail textures; watch after the basics on this page. Watch on YouTube

References

  1. Epic Games · Adding Detail Textures to Unreal Engine Materials · Unreal Engine documentation · docs · accessed 2026-10-21
  2. Unity Technologies · Mask and detail maps (HDRP 17) · Unity documentation · docs · accessed 2026-10-21
  3. Godot Engine contributors · BaseMaterial3D (class reference) · Godot Engine source on GitHub · docs · accessed 2026-10-21
  4. Godot Engine contributors · Standard Material 3D and ORM Material 3D · Godot Engine documentation (source on GitHub) · docs · accessed 2026-10-21
  5. Liam Tart (PogoP), community tutorial · SciFi Bunk: Material Instancing · Unreal Engine 4.27 documentation · docs · accessed 2026-10-21
  6. Colin Barré-Brisebois and Stephen Hill · Blending in Detail · Self Shadow, 2012 · article · accessed 2026-10-21
  7. World of Level Design (AlexG) · UE5: How to Blend or Combine 2 Normal Map Textures Together Using the Material Editor · World of Level Design · article · accessed 2026-10-21
  8. Jen S Abbott · How do you blend two normal maps in Unreal Engine 5.7? · ArtStation blog, 2026 · article · accessed 2026-10-21
  9. Unity Technologies · Normal Blend Node (Shader Graph 17) · Unity documentation · docs · accessed 2026-10-21
  10. Jay Versluis · How to use Macro Variations for Unreal Engine Landscape Materials · versluis.com, 2023 · article · accessed 2026-10-21
  11. Epic Games · Landscape Materials in Unreal Engine · Unreal Engine documentation · docs · accessed 2026-10-21

Also consulted

Last updated 2026-10-22