How to Make a Leather Material in UE5
Leather reads through its pore pattern and its history — creases, stretch marks and polished wear where hands touch it. New leather is even; loved leather is a map of use, and the roughness channel tells that story.
Channel by channel
Base color
Rich browns (or the target dye color) with warm variation concentrated in creases and edges — slightly darker in recesses, slightly lightened on worn high points.
Roughness
Mid-range base (0.4–0.6) with strong variation: creases rougher, handled/polished areas glossier (down to 0.25). This wear-map is the difference between leather and brown plastic.
Metallic
0.0.
Normal
The pore grain (fine pebbled texture) plus larger crease lines. Pore scale must match the object size — giant pores on a wallet read as elephant hide.
The hand-building tip that matters
Layer two normal maps: a tiling micro-pore detail normal blended over unique macro creases. Unreal’s BlendAngleCorrectedNormals node combines them without flattening either.
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 “leather” 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
Why does my leather material look like brown plastic?
Uniform roughness is the giveaway. Real leather carries a wear story: keep a 0.4–0.6 base but push creases rougher and pull handled areas down to about 0.25 where polish builds up. Drive that variation with a crease or cavity mask so it lands where hands and folds actually touch — a flat roughness constant erases everything that identifies leather.
How do I combine fine pore detail with large crease normals in UE5?
Blend two normal maps at different scales: a tiling micro-pore detail normal over unique macro creases, joined with the BlendAngleCorrectedNormals node so neither map flattens the other. The DetailTexturing material function packages the same idea with distance-based fade built in. Tile the pore map several times denser than the crease map so the two scales stay distinct.
What pore scale should leather use so it doesn’t look like elephant hide?
Match pore size to the object’s real-world dimensions: on a wallet or belt the pebble grain should be barely individually visible at gameplay distance, which means tiling the detail normal densely. Expose that detail tiling as a scalar parameter in a Material Instance and calibrate per asset against a mannequin, rather than recompiling the master material each time.