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 generate it in seconds
MaterialForge builds this material for you — seamless textures, derived PBR maps and the UE5 node graph, applied into your open editor in one click. The prompt is prefilled:
Generate “concrete” in MaterialForgePrompt variations to try
Applying into your editor happens through the free Cosindra desktop app (Windows & macOS).