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 MaterialForge

Prompt variations to try

Applying into your editor happens through the free Cosindra desktop app (Windows & macOS).

More materials