Realistic concrete material

Hello, I would like to learn how to create a photo realistic concrete material for the stadium I’m building.

I have tried for days now to achieve one, but since I’ve never created a material before the results are not so satisfying.

I have used nDo to create a normal map and a specular map.

Choose one of these 2 textures, unless you have a better one.
170748510b86f22ccd78104c2394bb7bbfc90d02.jpeg
e145948a8cec42418d9e3fb99edbd4e85926ccd6.jpeg

Hey! I took the time to generate some maps from the second texture. A displacement map definitely helps it look more realistic. You still may want to tweak the material to get a more realistic feel.
The images below are kind of grainy because I have vignette and grain enabled on my pawn.

http://imageshack.com/scaled/large/673/X6nRhi.png

http://imageshack.com/scaled/large/902/as76EX.png

http://imageshack.com/scaled/large/673/uyKBqv.png

Here’s how I set the material up:

http://imageshack.com/scaled/large/540/Jr1SxG.png

Here is a zip with the maps as well.

Hope I helped and tell me what you think! :slight_smile:

Thank you! You are awesome!

How can I get the Tesselation distance and multiplier parameters ?

How did you make the 2 extra maps ?

Hey! I forgot to tell to you to select the base node, scroll down to Tessellation in the Details panel, and change “D3D11Tessellation Mode” to “PN Triangles”. Also, enable Crack Free Displacement. And “Tessellation Distance” and “Multiplier” are just ScalarParameters.

I created the extra maps in CrazyBump.

Concrete_COLOR -> Base Color
Concrete_SPEC -> Specular
Concrete_NRM -> Normal
Concrete_DISP -> World Displacement
Concrete_OCC -> Ambient Occlusion

:smiley:

You need a constant 1(value 0) for metallic, you dont need to use a constant 3. Also you should plug the specular network to roughness instead, and use it as the alpha of a lerp node and set the min./max roughness values you want for the concrete via A and B inputs of that Lerp.

Thanks ! Haha, I’m not really a material expert but thought I should give to the community, haha. I’ll remember that in the future! :slight_smile:

No problem! If you check out the documentation you’ll see why we dont need colored specular map, etc. for speculars and need only constant values between 0 and 1 or alpha masks for metallic and roughness. Specular input is something you wont need most of the time, and never for metallic materials. And using a Lerp to set the roughness is something i prefer to get the basic surface looks, which later on can be improved by multiplying and adding other alpha masks. Thanks for the contribution though and keep them coming! :slight_smile:

What kind of a lerp node ? is what I tried but It gave me an error on the lerp node.

What I tried might be stupid, because half of it I didn’t rly understand ( what tesselation is for , and lerp)

And btw … did you set those 2 scalar parameters to 5 ?

Tessellation Distance was set to 8 and Multiplier was set to 6 I believe.

And about the lerp node, the kind was talking about is LinearInterpolate, which you are using. I believe what mean’t by using the specular network as the alpha of a lerp node is :

http://imageshack.com/scaled/large/902/4r0rSQ.png

You can adjust the A and B values in the Details panel instead of using actually constant nodes.

I may be wrong, but I think I received it correctly! :smiley:

The lerp node is just fine, however you have 2 regular constants plugged into the 1 and 2 slots, however the 3rd slot has a Constant3 (which is 3 constants in one node) (3 constants in on variable), and that is why it is showing an error. The values plugged into a lerp node must match each others type.

Basically you can’t do because the operation can only be performed on the same type of constant (in case), so (constant / constant / constant3) doesn’t work. Hope that helps!

Are you sure you need tesselation for a concrete material?

Just in case, that’s the way i would set it up:


pretty simple, without any too specific stuff.

That’s the result:
http://goo.gl/rLp0wy

The face has tesselation the wall has none.

Hey Skynet! Tessellation is not really needed. I just used tessellation because I thought it looked good with displacement, haha. Your material looks way better than mine. :slight_smile:

That makes sense, thank you!

Thank you so much!

I’ve decided not to use tesselation anymore as it was messing up the edges of my stairs mesh. Unless there is a way to keep the edges intact ?

is what I ended up with.

I would like to add a dirt/dust texture on it that would look something like . ( Right side are meshes converted from bsp, ignore the lighting errors , I am rebuilding it in maya now)

When you look downwards to it, it looks too clean…

Could you show me how to do that also? Also I don’t know how would I be able to get more dirt/dust piled up on the part of the stairs where it would naturally gather more ( the part where on the right mesh is piled up the rust).

On another note… I am having an with lighting both sides of a mesh.

Basicly it’s plane imported from maya. In maya I have checked double sided , in unreal I checked on the material double sided and it looks fine up until I build the lighting.

Now I am sure there must be a way to use double sided planes instead of 2 planes to improve perfomance…how can I fix ?

For a wall like that where you are supposed to see and use both sides you should use a box, especially if you are using static lighting.

Ok that’s a little bit more complicated as we need to set up a layered material for .

Let’s start with 2 material functions:
One for the base material:

And one for the dirt (didn’t have time to make a proper material):

And now blend them together in a material:

Don’t forget to create a material instance before applying it, so you are able
to tweak the amount of dirt without recompiling.

Roger that , I was just thinking I could save some polys.

Thanks Skynet I will get into the material a bit later and let you know what happens.

Nah, extra 10 triangles to turn a plane into a cube wont make a difference in performance really. Shaders, lighting and post process is what you should be careful with to optimize performance.

What is the easiest way to pan materials on meshes?

If you’re wanting to tile the texture use the TextureCoordinate node. When you select node once hooked up you’ll have options in the details panel to the left in the Material editor. You can choose how much it tiles on the U and the V. Make sure is plugged into any texture samples you’re using (ie. Diffuse, Normal, AO).