How to Make a Concrete Material in UE5
Concrete looks simple and is therefore unforgiving: it’s a study in subtle variation. Flat grey with a noise overlay reads as placeholder; real concrete has pour lines, formwork marks, moisture staining and pitting that all obey gravity.
Channel by channel
Base color
Neutral grey with LARGE-scale patchy variation (moisture staining, dust settling downward) and small-scale speckle from aggregate. Streaks should run vertically — water drags dirt down.
Roughness
High, 0.75–0.95, with staining slightly glossier than dry patches. Polished interior concrete floors are the exception: 0.2–0.4 with smudge variation.
Metallic
0.0.
Normal
Fine pitting everywhere, occasional air-bubble holes, and shallow formwork seam lines on poured walls. All subtle — concrete normals should be felt, not seen.
The hand-building tip that matters
Layer two noise scales in the material graph (one large for stains, one tiny for speckle) and use the large one to modulate BOTH base color and roughness — coupled variation is what makes it read as one aged surface.
New to the four channels? Read the PBR basics first.
Or start with a material brief
MaterialForge generates a UE5 material recipe, with seamless textures and derived PBR maps where needed. Preview the result, then apply it through the desktop app. This link prefills your prompt:
Try “concrete” in MaterialForgePrompt variations to try
Applying into your editor happens through the free Cosindra desktop app (Windows & macOS).
Want alternatives or a set of different surfaces? Follow the MaterialForge workflow →
Common questions
How do I add water stains that run down a concrete wall in UE5?
Multiply a vertical streak grunge texture into both the base color (darkening) and the roughness — stained concrete runs slightly glossier than the dry surface around it. Anchor the streaks below sills, cracks and ledge lines where water actually spills, and keep them strictly vertical; streaks that wander diagonally break the gravity logic that makes weathering believable.
What roughness should a polished concrete interior floor use?
Polished concrete is the exception to the material’s usual 0.75–0.95 range: bring it down to 0.2–0.4 and layer in smudge variation from foot traffic so the sheen is not uniform. Keep the fine aggregate speckle in the base color — polishing exposes the stones in the mix, which is part of what distinguishes it from a painted gray floor.
How can I make plain gray concrete look real without any texture files?
Layer two procedural noise scales in the graph: a large, soft noise for moisture patches and a tiny one for aggregate speckle. Route the large noise into both base color and roughness so stains and sheen variation agree — that coupling reads as one aged surface. Add faint horizontal seam lines for formwork marks on poured walls.