A displacement map is the fifth and often most overlooked map in a PBR material set. It carries the surface height information that drives actual geometric displacement — real polygon pushing in a tessellated mesh — rather than the optical illusion of depth that normal maps provide. Until recently, generating high-quality displacement maps required either photogrammetry, hand-painting in Substance Painter, or purchasing from a texture library. AI displacement map generation changes that significantly.
This guide explains what displacement maps are, how they differ from normal and bump maps, and how AI now generates them as part of a complete PBR surface material from a text prompt.
Displacement Map vs. Normal Map vs. Bump Map
These three map types are frequently confused because they all add the perception of surface detail. The technical differences matter for choosing the right map at the right stage:
Bump map (legacy): A grayscale image that simulates surface roughness by perturbing the shading normal at render time. No actual geometry is moved. The illusion breaks at silhouette edges — a curved surface with a bump map still shows a smooth silhouette even if the surface detail shows otherwise. Bump maps are largely superseded by normal maps in modern PBR workflows.
Normal map: A three-channel image (typically stored in RGB) that encodes surface normals as vectors. More accurate than bump maps — it correctly handles lighting from multiple directions and captures high-frequency surface detail like scratches, grout lines, weave patterns, and surface grain. Does not move actual geometry. Silhouette edge limitation still applies, though at much smaller scale than bump maps.
Displacement map (height map): A grayscale image where value encodes actual surface height. In tessellated rendering, the engine subdivides the mesh and physically displaces vertices based on the height map values. Silhouettes are accurate. High points cast real shadows on low points. The displacement is geometrically correct, not a shading trick. This is what separates close-up hero surface rendering from background fill.
In a complete PBR material set, you need all of them — the normal map for high-frequency detail across the whole surface, and the displacement map for the macro height variation that drives actual geometry at close viewing distances.
How AI Generates Displacement Maps
AI displacement map generation does not work in isolation. The most accurate approach generates all five PBR maps simultaneously from the same semantic understanding of the surface — basecolor, normal, roughness, metallic, and height. When generated together, the height map is consistent with the normal map: the same surface grain and macrostructure appear coherently across both maps, which is necessary for physically correct rendering.
A separately generated height map — applied to a material whose normal was generated or sourced independently — often shows inconsistencies at the scale boundary between normal map detail and displacement map macroform. The micro-detail in the normal does not align with the larger displacement variation, producing an uncanny look under close examination.
Grix generates all five maps from a single text prompt simultaneously. The height map is derived from the same model pass as the normal — so micro-surface detail in the normal map aligns correctly with the macro height displacement. The output is a complete, coherent PBR set ready for engine import in approximately 12 seconds.
Height Map Encoding: 8-bit vs. 16-bit
Displacement maps have a precision requirement that other PBR maps do not. A basecolor map or roughness map stored in 8-bit (256 values per channel) is perceptually adequate — the human eye does not distinguish between 0.49 and 0.50 roughness in a rendered frame. A displacement map stored in 8-bit can show visible banding: discrete steps in height where there should be a smooth gradient, particularly on curved or gradually varying surfaces.
16-bit height maps (65,536 values) eliminate banding for virtually all surface types. For production use — particularly in close-up hero shots or VR environments where the user approaches surfaces — 16-bit displacement is the standard.
For AI-generated displacement maps used in environment background fills at medium viewing distances, 8-bit is often adequate. The practical rule: use 16-bit for any surface that will be viewed closer than approximately 2 meters at standard field-of-view, 8-bit is acceptable beyond that.
Using AI Displacement Maps in Blender
Blender supports height-map-based displacement in two modes: tessellation (true geometry displacement) and bump displacement (a fallback that uses the height map as an enhanced bump). For production renders, tessellation gives geometrically correct results.
Setup in Blender Cycles:
- In the Shader Editor, connect the Height map Image Texture node (set to Non-Color data) to a Displacement node.
- Connect the Displacement node's output to the Material Output Displacement socket.
- In the Material Properties → Settings panel, set Displacement to "Displacement and Bump" or "Displacement Only."
- In the Object Properties → Subdivisions section, or via a Subdivision Surface modifier, enable Adaptive Subdivision (Cycles only) to tessellate based on camera distance.
- Adjust the Displacement node's Scale value to control displacement intensity — typically 0.01–0.10 for subtle surface variation, higher for dramatic terrain-scale displacement.
The Texture Coordinate → Mapping node that controls UV scale for basecolor and normal maps should drive all maps including the height map — keeping the displacement scale consistent with the surface detail in the normal map is important for visual coherence.
Using AI Displacement Maps in Unreal Engine 5
Unreal Engine 5 supports displacement through two systems: the legacy tessellation approach (now Nanite Tessellation in UE5.3+) and World Position Offset (WPO) in the material graph.
For Nanite-enabled meshes with Nanite Tessellation (UE5.3+):
- Import the height map as a Grayscale texture (BC4 compression, sRGB off).
- In the Material Editor, connect the height texture sample to the Displacement input of the material node.
- Enable Nanite Tessellation in the Material details panel and set a Displacement Scale value.
- On the Static Mesh, enable Nanite and set a suitable tessellation level.
For non-Nanite meshes, World Position Offset driven by the height map provides an approximation — useful for foliage, soft surfaces, or geometry where tessellation performance cost is prohibitive.
Grix height maps export in the correct format for UE5 import: 8-bit grayscale, linear color space. Import settings: Texture Type = Default, Compression = Grayscale, sRGB = off. Ready to connect to the Displacement input directly.
Using AI Displacement Maps in Unity
Unity's standard shaders support parallax mapping via the height map — a screen-space approximation of displacement that works without tessellation. For Unity URP and HDRP:
In the Lit Shader, the Height Map slot accepts a grayscale texture. Enable Parallax in the material settings and adjust the Height Scale slider (typically 0.02–0.05 for surface-level variation). This is not true geometric displacement — vertices are not moved — but provides convincing close-up depth on flat surfaces at lower performance cost than tessellation.
Unity HDRP with tessellation enabled provides true vertex displacement through the Height Map slot in the Lit Shader Graph. Performance budget for tessellated materials in HDRP is significant — use selectively for hero surfaces at close viewing distances.
When AI Displacement Maps Are High-Impact
AI displacement map generation has the most visual impact in these scenarios:
- Stone and masonry surfaces: The height variation between raised stone faces and recessed mortar joints is the primary visual cue that distinguishes stone from painted flat walls. A good displacement map captures this macro height variation, which a normal map alone cannot convincingly replicate at close distances.
- Terrain and ground surfaces: Pebble, gravel, soil, and rock ground textures benefit enormously from displacement — the actual geometric irregularity of a pebble ground at close range is fundamentally different from the optical illusion a normal map produces.
- Wood plank flooring: The slight height difference between adjacent planks and the surface grain depression across each plank are both height-domain details that read as flat without displacement.
- Worn and weathered surfaces: Erosion, impact damage, surface wear — these are all height-domain phenomena. A concrete surface with surface cracking looks significantly more convincing with displacement driving the crack depth.
Generating a Displacement Map with Grix
Go to grixai.com/try (no account required on the free trial). Write a text prompt describing the surface. Grix generates all five maps including the height/displacement map simultaneously. Download the full map set. The height map is pre-formatted for direct engine import — linear encoding, correct grayscale channel, no alpha to strip.
For surfaces where displacement intensity is key — deep stone grout lines, pronounced wood grain, highly irregular rock surfaces — include that intent in the prompt: "deep-cut mortar joints," "pronounced grain relief," "rough irregular surface with significant height variation." The AI uses these descriptors to generate appropriate displacement depth in the height map.
See the full guide to generating PBR textures with AI for complete prompt strategy and engine integration workflows.
FAQ
What is the difference between a height map and a displacement map?
The terms are often used interchangeably. Technically, a height map is the grayscale image file encoding surface height values. A displacement map is the application of that height data in a rendering context — vertices being physically moved according to the height map values. In practice, the file you download and import is the height map, and "displacement map" describes how the engine uses it.
Can I use a normal map and a displacement map together?
Yes — and this is the recommended approach for high-quality PBR surfaces. The normal map handles high-frequency detail (small scratches, surface grain, micro-roughness variation), while the displacement map handles macro height variation (raised mortar joints, plank height differences, surface topography). Both are used simultaneously in the same material. Grix generates both in the same pass from the same surface understanding, ensuring they are consistent with each other.
Does AI displacement map generation require tessellation to work?
For true geometric displacement, yes — tessellation (or Nanite Tessellation in UE5) is required to subdivide geometry finely enough for the height map to drive vertex movement at detail scale. Unity's parallax mapping mode approximates the effect without tessellation at lower performance cost. For most game environments, parallax mapping is adequate for background and mid-range surfaces; tessellation is reserved for hero close-up materials.
How detailed do AI-generated displacement maps get?
Grix height maps capture both macro height variation (the overall relief profile of the surface) and mid-frequency detail (individual feature heights within the surface pattern). Very fine micro-surface detail — the kind that reads at sub-millimeter scale — is better handled by the normal map. The combination of both maps in the material covers the full frequency range of surface detail.