How to Make a Mossy Cobblestone Material in UE5
To make a cobblestone pavement with puddles in UE5, build the stone layer first, then lerp to a water layer through a puddle mask: inside the mask, roughness drops close to 0, the albedo darkens and the normal goes flat, so the puddle mirrors the scene. Mossy cobblestone is a blend material: hard stone with soft organic growth accumulating exactly where physics would put it, in the mortar lines, on upward faces, in shaded crevices. The placement logic matters more than the moss itself.
Channel by channel
Base color
Grey-to-brown stone with cool variation per cobble, moss in dark, desaturated greens. Moss that’s too bright turns the path radioactive; think olive, not lime.
Roughness
Stone at 0.6 to 0.8, moss effectively 1.0 (it scatters light, never shines). Wet variants drop the stone to 0.2 to 0.35 while the moss stays matte: that split is the whole "after rain" look.
Metallic
0.0 across the board.
Normal
Strong: deep grout gaps between rounded cobbles, with the moss slightly filling and softening the crevices it grows in. This is a material where a flat normal map ruins everything.
The hand-building tip that matters
Blend moss over stone using a mask driven by the normal’s up-axis (World Aligned Blend) so moss grows on top surfaces automatically: it keeps the material believable on stairs and slopes without hand-painting.
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 “mossy cobblestone” 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 make moss grow only on the tops of stones automatically in UE5?
Use the World Aligned Blend material function, driven by the surface normal’s Z axis, as the mask that lerps between stone and moss layers. Upward faces blend to moss, vertical faces stay stone, and the logic holds on stairs and slopes without hand-painted masks. Tune the transition with the function’s blend sharpness input until the moss hugs crevices convincingly.
How do I make a cobblestone path look wet after rain?
Drop the stone’s roughness from its dry 0.6 to 0.8 down to 0.2 to 0.35 and darken its albedo slightly, but leave the moss at roughness 1.0, because waterlogged moss scatters light rather than shining. That glossy-stone-versus-matte-growth split is the whole after-rain read. Puddles can be a separate near-zero-roughness mask confined to the deepest grout lines.
Why do my cobblestones look flat even though I plugged in a normal map?
Check the texture settings first: compression must be Normalmap and the Texture Sample’s Sampler Type set to Normal, or the vectors decode incorrectly. If the setup is right but depth is weak, multiply the normal’s red and green channels by 1.5 to 2.0 before renormalizing to deepen the grout gaps: cobblestone is a surface a timid normal map ruins.
How do I make a cobblestone pavement with puddles in UE5?
Use one mask to switch three channels at once. Build the mask from a vertex color channel (paint puddles with the Mesh Paint tool) or a tiling puddle texture, and run it through a HeightLerp with the cobble height map so water fills the grout and the low stones first. Inside the mask set roughness to about 0.02 to 0.05, darken the base color, and lerp the normal toward a flat (0, 0, 1). Lumen or screen space reflections then show the scene in the puddles.
Should puddles be a separate mesh or part of the material?
Part of the material for most paths and streets: one mask, no extra draw calls, and the edges blend with the wet stone around them. A separate flat water plane only pays off for deep puddles that need ripples, splashes or planar reflections, and then it needs its own wet rim in the ground material so it does not look pasted on.