Video summary

6: Displacement

Main summary

Key takeaways

Technology

Summary of the Video: Unreal Engine 5 Displacement + Master Material Add-ons

1) Why Displacement Is Needed (vs. Normals Alone)

The video argues that normal maps are great for small-scale detail (e.g., finger-sized micro features), but they don’t fully convey mid-to-large surface topology.

  • Normal maps: good for subtle texture detail, not true surface shape.
  • Displacement becomes more important for:
    • First-person / close-up action games, where players can get close enough to notice real depth/shape differences.
    • Scenarios involving scale dependency—how close the camera gets and what portion of the surface is being scrutinized.

2) Displacement Approaches in UE5 Discussed

The speaker compares multiple workflows, balancing visual quality, production speed, and performance.

Method A: Nanite Tessellation (Dynamic Displacement)

  • Positioned as a popular, artist-friendly approach.
  • Uses Nanite tessellation with real-time displacement driven by the material.
  • Both Nanite tessellation and Nanite static displacement are noted as having an “experimental” documentation flag.
  • Results are shown as “acceptable, not perfect”, including examples like brick gap issues and needing to tune plaster depth.

Concerns with Nanite tessellation

  • The speaker visualizes Nanite triangle density and is concerned about the massive triangle count, including triangles that may be unnecessary.
  • They question how this impacts performance at scale (e.g., displacing every wall in a city).
  • Shadow behavior can be awkward when height/levels are adjusted dynamically—sometimes requiring camera movement/rotations to recover.

Method B: Nanite Static Displacement Mapping

  • Chosen by the speaker for their project and preferred for (assumed) performance.
  • Requires more up-front work because it involves:
    • Baking displacement data into a texture first, then applying it through Nanite static displacement.

Method C (Briefly Mentioned): Displacement in External DCC Tools

  • Displacement is done in apps like Maya / Blender / ZBrush, then high-poly meshes are imported.
  • Criticisms:
    • Energy intensive
    • Potentially destructive
    • Can reduce production speed due to frequent export/import loops
  • Also less aligned with the speaker’s need for displacement to work with material blending layers inside UE5.

3) How Displacement Is Integrated into the Master Material

The project uses a layered material system driven by a blending mask (notably a splat mask, stitched through the system).

The master material:

  • Blends multiple layer attributes with Material Attribute Layers / Material Layer Blend
  • Uses Get Material Attributes to extract and reconstruct channels (including rebuilding Z from packed normal channels)

Displacement input handling

  • During dynamic tessellation, the height/alpha data is routed through a height pipeline and a switch parameter.
  • Debugging uses height bake visualization.
  • The speaker notes that the height used for displacement differs from what the height bake debug output shows—leading to later changes when moving to static displacement.

4) Height Refinement Tool: “Levels” Function Per Layer

A custom Levels-like function remaps, per layer:

  • Black/white clipping
  • Mid value
  • scalar adjustments

Key point:

  • With Nanite tessellation, these values can be tweaked on the fly with immediate feedback (though shadow behavior can interfere).
  • With static displacement, tuning happens more “offline” via debug/bake workflow so the height is correct before baking.

5) Nanite Static Displacement Workflow (Main Tutorial)

Goal: Bake layered height into a unique texture, then let Nanite displace the static mesh geometry accordingly.

Workflow Steps Shown

  1. Disable tessellation/displacement in the shader settings.
  2. Enable height bake debug (material instance setting) to visualize height maps.
  3. In Static Mesh Editor → Bake out materials:
    • Use the same material instance used in the level
    • Use UV channel 1 (unique, non-overlapping UVs)
    • Bake at 2048 × 2048
  4. The baked output creates a temporary material instance; the speaker advises not saving it.
  5. Save the resulting texture to a dedicated height bakes folder.
  6. Remove the temporary baked material and restore original state.
  7. Back in the static mesh editor, configure Nanite settings for baking displacement:
    • Set the displacement texture slot
    • Set Displacement UV channel (UV1)
    • Tune Trim relative error (controls triangle density; start ~0.05, range ~0.03–0.1)
    • Set Fallback target % triangles (default ~2%)
    • Set Magnitude
      • Dynamic guidance: not over ~5–6
      • Static examples may use much higher (e.g., 14+ in the demo)
    • Use Center to shift the displacement threshold (0–1) to control whether values push in vs. out (example uses values adjusted for corner behavior)

Result

Once levels are tuned, the speaker reports the displaced result looks correct—matching references closely and producing proper depth/shadows.


6) Why the Speaker Prefers Static Displacement Over Dynamic Tessellation

Their analysis includes:

  • In Nanite visualization, static displacement produces more appropriate topology for Nanite to optimize.
  • They claim static displacement generates scan-like topology (uniform and artist-controlled), while dynamic tessellation produces far too many triangles (in their observation).
  • Quality test: increasing trim relative error (reducing triangles) still preserves quality reasonably well (example: trim ~0.09 → ~32,000 triangles).

Downsides

  • Production time increases due to baking, especially if masks change and rebakes are needed.
  • Tooling/UI friction: “Bake out materials” is described as less supported than other UE5 tools.
  • Possible improvements mentioned:
    • Automate baking via blueprints/plugin
    • Use virtual textures and tie baking to mesh instances for better workflow/performance
  • Static displacement retains the baked texture in Nanite settings, and the speaker doesn’t know whether shaders reuse it or it’s purely displacement data (but assumes it still affects disk usage).

7) Practical Risks and Details: Mesh Subdivision + Corners

Long flat triangles

  • Can interfere with displacement algorithms.
  • Fix: add edge loops / split flat polygons.

Corners

  • Corners can be problematic due to corner “inflation” under some settings.
  • Workaround:
    • Adjust Center for relatively flat surfaces
    • For sharper/complex corner detail, use edge meshes as supplemental geometry
  • When tuned, edge meshes integrate “almost seamlessly” with the displaced mesh.

8) Interaction Problem with Virtual Texture Blending + Baking

The speaker demonstrates a limitation:

  • The virtual blending mask / painted data exists on the mesh instance in the level, not globally in the material graph.
  • Therefore, Bake out materials can’t capture virtual blending info automatically.

They attempted blueprint/render-target baking, but couldn’t make it work because blueprints/material instances didn’t properly incorporate the virtual blending mask.

They still consider this solvable, but not necessary for a portfolio-level implementation.


Additional Master Material “Global” Procedural Features (Non-Displacement)

A) Outliner / Border Mask (Optional Per Layer)

Implemented inside material layer blend via layer parameters:

  • outliner color
  • outliner opacity
  • outliner softness

Produces procedural outlines/stroke patterns at blended layer edges.

  • Effect depends on the splat mask gradient and height variation
  • Designed to create realism cues (e.g., moisture/dirt/deposit-like patterns)
  • Internal logic involves computing strokes using differences of height/mask-derived vector lerps and saturate operations

B) “Z Gradient” Global Function (Custom Primitive Data Driven)

  • Uses Custom Primitive Data defaults so each static mesh instance can vary without new material instances.
    • This helps avoid increasing draw calls.
  • Parameters include:
    • gradient color
    • rotation angle (controls up/down orientation)
    • intensity/falloff for top/bottom gradients
  • Gradient is multiplied with procedural noise sourced from an MNG texture channel.
  • Purpose: add dirt/joint grime along vertical architectural axes without decals.

C) Procedural Snow via Up-Vector / Slope Blend

Uses an up-vector blending mask:

  • Snow appears mostly where normals face upward

Parameters control:

  • opacity
  • hardness of the mask
  • influence of baked normals on mask shape
  • snow color calibration (mentions PBR-related snow brightness; uses ~0.65 for a “melted/frosted” look instead of pure white)

Manual control:

  • Uses splat mask alpha to remove/paint snow (alpha suppresses snow)
  • Includes a workaround for paint/erase behavior so painting returns snow deposits

The speaker positions this as a primer/cheap but performant snow layer for walls; for roofs they may use separate layers/assets/clumps and frost.

D) Macro Normal (Mentioned, Not Heavily Used)

  • Concept: separate macro vs. micro normal detail.
  • Speaker believes it’s important for large detailed objects, but not central to the current project.

Main Speakers / Sources

  • Main speaker/source: The channel narrator/author presenting the UE5 master material and displacement tutorial content (no specific named person or direct external quotes).
  • Referenced documentation: UE5 Nanite tessellation / Nanite static displacement mapping documentation (cited generally as “documentation,” without direct links).

Rate this summary

Your feedback will help improve summaries.

Improve this summary

Reprocess with a stronger model when the summary feels incomplete or inaccurate.

Pro

Translate summary in another language

Pro

Ask questions to this video

Chat for follow-up questions, clarifications, and source-backed answers.

Coming soon

Share this summary

Original video