Tutorial: Creating a Realistic Wood Plank Texture in Substance Painter

General / 10 September 2025


In this tutorial, we’ll walk you through how to make a realistic wood plank texture in Substance Painter, using built-in tools, generators, and smart materials. By the end, you'll have a procedural and adjustable wood texture you can use or adapt to many projects.


Step 1: Set Up the Project

Open Substance Painter and load your 3D model or use a built-in Sample Project such as the Tiling Material.

If you are using an external mesh, open the Texture Set Settings and bake the Texture Maps.


Step 2: Apply a Base Material

Create a Fill layer and rename it to “Wood Plank Base”.

Change the base color to a dark brown. 

Make sure all the Channels are activated (except metal).

Change the Roughness to 1.


Step 3: Mid-tone Grain

Use CTRL + D to duplicate the layer and rename it to “Mid-tone”. Change the base color to a mid-tone brown. 

Right-click on this Layer and add a Black Mask.

Right-click on the Black Mask and add a fill.

Search for “Directional Noise” and drag “Directional Noise 01” onto the grayscale of the properties panel.

Change the balance and contrast parameters. 


Step 4: Light-tone Grain

Use CTRL + D to duplicate the layer and rename it to “Light-tone”.

Choose the fill and change the base color to a lighter-tone brown. 

Change the balance and contrast parameters of the Directional Noise. 


Step 5: Dark-tone Grain

Use CTRL + D to duplicate the layer and rename it to “Dark-tone”.

Choose the fill and change the base color to a darker-tone brown. [#38210D]

Select the Black Mask and drag “Directional Noise 02” onto the grayscale of the properties panel.

Change the balance and contrast. 


Step 6: Planks

Add a new Fill Layer to the top of the stack and name it “Planks”.

Right-click on the Fill Layer and Add a Black Mask.

Select the Black Mask and add a Fill

On the Grayscale Property, search for “Brick Generator”.

Change the Bevel Y to zero and the Offset Offset to zero.

Change the Bricks X to determine the number of planks you want. 

Changing the Bevel X will determine the gaps between the planks. 

If you want a bit of warping added to the planks, right-click on the Layer and add a Filter.

Add a “Warp” Filter to the Layer and change the Intensity. 

You can use the Blending Options for the Planks Layer to blend the Planks with the Base Color. 

If you need to rotate the Planks, open the 2D View and use the Rotation Tool to rotate the Brick Generator.


Step 7: Dirt and Weathering

Add a new Fill Layer to the top of the stack and name it “Grunge”.

Make sure all the Channels are activated (except metal).

Right-click on the Fill Layer and Add a Black Mask.

Right-click on the Black Mask and add a Fill.

Search for a “Dirt” Texture and drag-and-drop it onto the Grayscale. [Grunge Concrete Dirty]

Adjust the Grunge Properties to your liking. [Balance – 0.2, Contrast – 0.35Random Mode – True]

You can also change the Blending Modes and Transparency options for the Layer. [Screen, 75]


Step 8: Saving as a Smart Material

You can easily save this material as a Smart Material for future use.

Add a Folder and name it appropriately.

Move all the Layers into the Folder.

Right-click on the Folder and choose ‘Create Smart Material’.


Conclusion

You've now created a fully customizable and procedural wood plank texture in Substance Painter! With the flexibility of Substance Painter’s layer system and procedural tools, you can iterate quickly and build exactly the look you need.


Report

How to make a sculpting alpha in Affinity Photo | Tutorial

General / 21 March 2025


Photo setup

I make a 2048 x 2048 document

I import the image I am using into Affinity Photo (this can be done in any photo editing software)

I then export the image as a PNG


Displacement Map

I will be making a Displacement Map using Normal Map Online

This can be done in any other software that produces a Displacement Map or a Height Map

I will just use the defaults and export the Displacement Map as a PNG


Making a sculpting brush in Blender

I have a UV Sphere with a Subdivision with 6 levels

In the Sculpting workspace, I choose the Draw brush

I add a new texture and open my Displacement Map

I change the Stroke to “Anchored” and lower the Strength [0.15]

I can now drag my brush over the surface

Report

How to make a procedural rock wall in Blender

General / 24 April 2022


Base

We will be using the default cube to form our procedural low-poly wall

Move the cube so it is on top of the 3D cursor and set the origin to the 3D cursor – this will help if you export it out to a game engine

Scale the cube to the size of the wall you desire and apply the scale [x:5 z:3 y:0.3]

Shade the wall smooth and turn on auto smooth


Add loop cuts toward the edges of the wall to provide structural support

We will be using the automatic UV provided by Blender since this is just a cube

This will be the low-poly base


Stones

Duplicate the wall for our high-poly mesh

Then add a subdivision surface modifier, increase the levels, and apply the modifier [6]

Add a displace modifier – this will help us make the larger stones with the help of a texture

Add a texture to the modifier

Under the texture tab, choose “Musgrave” for the type

For the noise basis, use Voronoi F2-F1 – this refers to the distance to the closest and to second closest feature point, position, and color

Change the size to a larger number to make the cells larger on the mesh [1.5]


Under the colors panel, activate the color ramp

Add a third color stop and move it toward the black color stop – this will help change the depth of the stones [0.25]

Click on the color and change the value to a larger number to square off the stone edges [0.85]

Change the interpolation from linear to ease – again changing the stone edges


Back on the modifier, change the midlevel to zero which will result in no displacement

Also change the strength [0.2]


Smooth and Bevel

Add a smooth modifier and change the repeat to a higher number – this is the number of smooth iterations [4]


Add a bevel modifier with a width type of percent – this determines the size of the bevel and the minimum angle that will be beveled

Change the width percent and angle number [10, 20]

Under the geometry panel, deactivate “clamp overlap” since we are not worried about overlapping intersections of geometry


Also, add a triangulate modifier which will convert the quads into triangles

Apply all of the modifiers

Also add a triangulate modifier to the low-poly mesh


Baking Normals and AO

I will be using xNormal to bake my normal map (link is in the description)

Export the low-poly and high-poly meshes separately as OBJ


Import the high-poly and low-poly meshes into xNormal

Open up the tools panel and select the ray distance calculator

After you run the calculator, copy the results

Under the baking options panel, choose to render a normal map and an AO map

Choose where you want the output file to save to and choose the resolution

Then click on “generate maps”


In Blender, hide the high-poly mesh and add a normal map node to the material

Connect the normal map node to the normal input of the principled shader and open the UV map


Drag in the normal map you baked and change the color space to non-color

Connect the image texture to the normal map node

When I change to material preview, I can now see the normal map affecting my low-poly mesh

You can change the strength of the normal map as needed [1.3]


Change the roughness to 1  and change the base color to a blue-gray [#5A6169]


Drag in the AO map and change the color space to non-color

Add an ambient occlusion node and connect the AO map to the node [input]

Add a mix shader between the principled shader and the material output

Connect the AO output of the ambient occlusion node to the mix shader and change the factor [0.03]


Game Engine Optimization

If you are going to export this out to a game engine, make sure the wall is sitting on top of the 3D cursor

Once it is in place, set the origin to the 3D cursor

Report

How to make procedural cracks in Blender

General / 17 April 2022


Cracks

Add a texture coordinate node, noise texture node, and a color ramp node 

Connect the object output of the texture coordinate node to the vector of the noise texture

Connect the factor output of the noise texture to the factor of the color ramp


Connect the color ramp to the principled shader so you can see the noise texture affect

Move the black and white color stops of the color ramp toward the center

Add a second white color stop to the left of the black color stop

Making any changes to these color stops will affect the look of the noise texture and where the cracks will appear

The black outline you see is where the cracks will form

The appearance of the cracks can be affected by the scale and detail of the noise texture


Disconnect the color ramp from the principled shader

Add a bump node and connect it to the normal input of the principled shader

Connect the color ramp to the height of the bump node and make any changes to the strength as required


Metal Material

For a metal material, add a color ramp node and add a third color stop that is a light-gray color

Connect the color ramp to the metallic input of the principled shader

Change the color on the principled shader


Asphalt Material

For the asphalt material, duplicate the principled shader

Add a Voronoi texture node and change the distance to “distance to edge”

Connect it to the principled shader and increase the scale 

Connect the principled shader to the material output


Add a mix RGB node and a noise texture

Add a color ramp between the noise texture and the mix RGB node so you only have a black and white texture

Change the scale and detail of the noise texture 


Add a second bump node and connect the mix RGB shader to the height of the bump node

Connect the bump node to the normal of the second principled shader


Add a mix shader between the second principled shader and the material output

Connect the first principled shader to the mix shader and adjust the factor

Report