In Unreal Engine 5.7, materials aren’t just static visuals. They can be fully dynamic and controlled in real time using Blueprints. Building upon the adjustable material we’ve already created, this tutorial walks you through creating surface imperfections to further enhance your materials.
Step 1: Surface Imperfection setup
1. This is a continuation of a previous tutorial showing you how to control textures via blueprints – the link to that tutorial is in the description
2. Find a grunge texture or other texture you want to use for the surface imperfections
3. Make sure the image is black and white
4. Drag-and-drop the texture image into your textures folder
5. Double-click on the master material to open it
6. Drag-and-drop your texture into the material graph
7. Connect the texture to the roughness input to get a look at the texture on your material
8. Right-click on the texture and convert it to a parameter – renaming it to Surface Imperfection – this will allow you to change textures easily
9. With the Texture selected, in the Details Panel, type Surface Imperfection in the Group field
10. If you apply and save the material and then open the Material Instance, you will now notice a Surface Imperfection group
11. Add a Multiply node by holding down the M-key and left-clicking
12. Connect the Texture map to the A-input of the Multiply node and connect the Multiply node to the Roughness
13. Add a Scalar parameter by holding down the S-key and left-clicking
13. Rename the Scalar parameter to Imperfection Brightness
15. Connect the Scalar parameter to the B-input of the Multiply node
16. Change the Value to 1
17. Add the Scalar parameter to the Surface Imperfection group
18. Apply and save the material
19. If you open the material instance, you will now see the Surface Imperfection Brightness parameter which can be adjusted
20. Add a Power node by holding down the E-key
21. Connect the Multiply node to the Base-input of the Power node
22. Connect the Power node to the Roughness
23. Add a Scalar parameter by holding down the S-key and left-clicking
24. Rename the Scalar parameter to Imperfection Contrast
25. Connect the Scalar parameter to the Exponent-input of the Power node
26. Set the Value to 1
27. Add the Scalar parameter to the Surface Imperfection group
28. Apply and save the material
29. If you open the material instance, you will now see the Surface Imperfection Contrast parameter which can be adjusted
Step 2: Surface Imperfection Min/Max
1. Add a Lerp node by holding down the L-key and left-clicking – this is similar to a mix RGB node in Blender
2. Connect the Power node to the Alpha input of the Lerp
3. Add a Scalar Parameter by holding down the S-key and left-clicking
4. Rename this Scalar Parameter to Imperfection Min
5. Add a second Scalar Parameter and name it Imperfection Max – changing the Value to 1
6. Connect the Minimum to the A-input and the Maximum to the B-input of the Lerp
7. Connect the Lerp to Roughness
8. Add the Scalar parameters to the Surface Imperfection group
9. Apply and save the material
10. If you open the material instance, you will now see the Surface Imperfection Min and Max parameters which can be adjusted
Step 3: Blending Surface Imperfections and Roughness
1. To blend the surface imperfections and the roughness, right-click and search for a Static Switch Parameter
2. Rename the Parameter to Blend
3. Connect the Surface Imperfections Lerp to the True input
4. Connect the Power node of the Roughness into the False input
5. Add the Static Switch Parameter to the Surface Imperfection group
6. Connect the Static Switch Parameter into the Roughness
7. To control the value of the Surface Imperfections and the Roughness, hold down the L-key and add a second Lerp node
8. Connect the first Lerp node into the A-input of the second Lerp node
9. Connect the Roughness into the B-input of the second Lerp node
10. Connect the second Lerp node to the True input of the Blend parameter
11. Right-click on the Alpha input of the second Lerp node and promote it to a parameter so we can use it to control the value
12. Change the name to Alpha Blend and add it to the Surface Imperfection group and change the Value to 0.5
13. Apply and save the material
14. If you open the material instance, you will now see the Surface Imperfection Alpha Mix which can be adjusted
15. Box-select all the Surface Imperfection nodes and use the C-key to add a Comment Box
16. Rename the Comment Box to Surface Imperfection
17. Apply and save the material
18. Select the last 3 nodes and use the C-key to add a Comment Box
19. Rename the Comment Box to Surface Imperfection Blend
20. Apply and save the material
Conclusion
You’ve now built a fully dynamic material control system including surface imperfections in Unreal Engine 5. Instead of just swapping textures, you can fine-tune nearly every visual aspect of a surface in real time.