What Is a Displacement Map? Real Depth vs Faked Detail

8 min read · Last updated May 2026

Split-screen 3D render — a flat grey plane on the left and the same plane displaced into real rocky terrain with raised stones and deep crevices on the right
Left: a flat plane. Right: the same plane with a displacement map — real geometry, real silhouette, real shadows.

You know that feeling when your cobblestones look perfect head-on but turn into a flat sticker the moment the camera tilts? That’s the limit of faked detail. A displacement mapfixes it by doing something normal and bump maps can’t: it physically moves the geometry, so the bumps are real — real outline, real shadows, real depth.

Displacement is the most powerful and the most expensive way to add surface detail. This guide explains what it actually does, how it differs from the maps it’s often confused with, and when the extra cost is worth it.

What a displacement map actually does

A displacement map is a greyscale heightfield: each pixel stores a height. White pushes the surface outward, black pulls it inward, mid-grey stays put. The renderer reads those heights and moves the actual mesh — which means the surface needs real polygons to move, and the result has a correct silhouette and casts real self-shadows.

That last part is the whole point. A normal map can make a brick wall look deep from the front, but its edge stays razor-flat. Displacement makes the bricks genuinely stick out, so the wall’s outline is bumpy and the mortar lines shadow themselves.

A greyscale displacement height map of cobblestones on the left and the resulting displaced 3D cobblestone surface with real raised stones on the right
The greyscale heightfield (left) and what it builds (right). White stones rise, dark mortar sinks — as real geometry, not a lighting trick.

Displacement vs normal vs bump vs height

Four maps people mix up constantly. The difference is what they move and what they cost:

  • Bump map — greyscale. Fakes lighting only. Cheapest, flattest, oldest.
  • Normal map — RGB directions. Fakes detailed lighting without moving geometry. Cheap and convincing from most angles, but the silhouette stays flat. (See what a normal map is.)
  • Height map — greyscale. The same data as displacement, but often used cheaply for parallax/bump rather than real geometry.
  • Displacement map — greyscale heightfield used to actually move the mesh. Most accurate, most expensive, correct silhouette and self-shadowing.

In practice you ship a normal map for fine detail and add displacement on top only where the silhouette matters — the two work together, they’re not either/or.

Side-by-side rocky surface comparison — left with a normal map showing a flat edge silhouette, right with displacement showing a bumpy raised silhouette edge
Same rock, same light. Normal map (left): flat edge. Displacement (right): the silhouette itself is bumpy. That edge is the tell.

The catch: displacement needs geometry

You can’t move a surface that has no polygons to move. Displacement only works if the mesh is densely subdivided — which is why it’s expensive. Three ways engines handle that:

  • Subdivision — add polygons before rendering. Simple, heavy, predictable.
  • Tessellation — add polygons on the GPU at render time, often based on camera distance.
  • Adaptive / virtualised geometry — systems like Unreal Nanite and Blender adaptive subdivision add detail only where needed, making displacement far more practical than it used to be.
A displaced rocky 3D surface shown with its dense tessellated wireframe overlay, revealing the many subdivided polygons that make displacement possible
The hidden cost: displacement needs a dense mesh to push around. No polygons, nothing to move.

Vector displacement (going further)

Standard displacement only moves the surface along its normal — straight out or in. Vector displacement stores a full 3D direction per pixel (like a normal map, but for movement), so it can create overhangs, curls, and undercuts a heightfield can’t — think a sculpted ear or a mushroom cap. It’s heavier still, and used mostly for baked hero assets.

When to use displacement

  • Terrain — hills, dunes, riverbeds where the ground shape is the point.
  • Ground underfoot — cobblestones, gravel, deep brick seen at glancing angles.
  • Hero close-ups — anything the camera gets close enough to see the edge of.
  • Not — distant props, flat walls seen head-on, mobile budgets. A normal map wins there.

Displacement in Unreal, Blender, Unity, and Godot

  • Unreal — Nanite displacement (recent versions) or traditional tessellation; feed the heightfield into the material’s displacement input and set magnitude.
  • Blender — the Displace modifier for simple cases, or Cycles adaptive subdivision with the height map in the Displacement input of the Material Output for render-quality results.
  • Unity — displacement via tessellation shaders (HDRP supports it); URP/Built-in often fake it with parallax occlusion instead.
  • Godot — height/depth via parallax occlusion mapping in most cases; true displacement needs a subdivided mesh.

How to make a displacement map

It’s a greyscale heightfield, so you can bake it from a high-poly sculpt, paint it, derive it from a photo, or generate it. The easiest path is to get it as part of a full PBR set so the height agrees with the colour and normal. CraftPBR produces a height/displacement map alongside base colour, normal, roughness, and AO from a text prompt or photo — the same text to texture workflow, with depth included.

Get a displacement map with your PBR set
Describe a surface or drop a photo, get colour, normal, roughness, AO, and height. Free.
Open Studio →
A dramatic 3D landscape render of rocky displaced terrain with deep canyons and raised ridges under golden light, showing real geometric depth
From a flat plane and one greyscale map. Displacement is how terrain gets its real shape.

Key takeaways

  • A displacement map is a greyscale heightfield that physically moves geometry — white out, black in
  • Unlike normal and bump maps, it gives a correct silhouette and real self-shadowing
  • Height and displacement are usually the same data; the difference is whether it moves the mesh
  • It needs dense geometry — subdivision or tessellation — which makes it expensive
  • Use it where the silhouette matters: terrain, ground underfoot, hero close-ups
  • Ship a normal map for fine detail and add displacement only where the edge would give the fake away

Frequently asked questions

What is a displacement map?

A displacement map is a greyscale texture that actually moves a model's geometry — light pixels push the surface out, dark pixels pull it in. Unlike a normal or bump map, which only fake detail with lighting tricks, displacement creates real bumps with correct silhouettes and self-shadowing.

What is the difference between a displacement map and a normal map?

A normal map fakes surface detail by changing how light hits a flat surface — the geometry never moves, so the silhouette stays smooth. A displacement map physically moves the geometry, so the outline of the object actually changes and bumps cast real shadows. Displacement is more accurate but far more expensive to render.

What is the difference between a displacement map and a height map?

They are usually the same image — a greyscale heightfield. The difference is how it is used. As a height map it can drive cheap parallax or bump effects that fake depth; as a displacement map it tessellates and actually moves the mesh. Same data, different cost and result.

When should I use displacement instead of a normal map?

Use displacement when the silhouette matters — terrain, cobblestones underfoot, deep brick, anything where a flat edge would give the fake away at a glancing angle. For everything else a normal map is cheaper and good enough. Many assets use both: displacement for big shapes, normal for fine detail.

Is displacement mapping expensive to render?

Yes, relatively. It requires extra geometry — the surface has to be subdivided or tessellated into many more polygons so it can actually deform. Modern systems like Unreal Nanite and Blender adaptive subdivision make it far more practical, but it is still heavier than a normal map, which costs one texture lookup.

How do I make a displacement map?

A displacement map is a greyscale heightfield, so you can paint it, bake it from a high-poly sculpt, derive it from a photo, or generate it. Tools like CraftPBR produce a height/displacement map alongside the rest of a PBR set from a text prompt or photo, already matched to the colour and normal.