Blender Studio
  • Films
  • Projects
  • Training
  • Characters
  • Tools
  • Blog
  • Join
  • BLENDER.ORG

    • Download

      Get the latest Blender, older versions, or experimental builds.

    • What's New

      Stay up-to-date with the new features in the latest Blender releases.

    LEARNING & RESOURCES

    • Blender Studio

      Access production assets and knowledge from the open movies.

    • Manual

      Documentation on the usage and features in Blender.

    DEVELOPMENT

    • Developers Blog

      Latest development updates, by Blender developers.

    • Documentation

      Guidelines, release notes and development docs.

    • Benchmark

      A platform to collect and share results of the Blender Benchmark.

    • Blender Conference

      The yearly event that brings the community together.

    DONATE

    • Development Fund

      Support core development with a monthly contribution.

    • One-time Donations

      Perform a single donation with more payment options available.

Training Highlights
Stylized Rendering with Brushstrokes
Geometry Nodes from Scratch
Procedural Shading Fundamentals
Stylized Character Workflow

Training types
Course Documentation Production Lesson Workshop

Training categories
Animation Geometry Nodes Lighting Rendering Rigging Shading
Film Highlights
Wing It!
2023
Charge
2022
Sprite Fright
2021
Spring
2019
Project Highlights
Project DogWalk
Interactive
Gold
Showcase
BCON24 Identity
Showcase
Fighting with Grease Pencil
Article
Course
Procedural Shading: Fundamentals and Beyond
Introduction
  1. 01

    Introduction

    Free
  2. 02

    Definition

  3. 03

    Content Overview

  4. 04

    The Shader Editor

1: Fundamentals
  1. 01

    Colors, Values & Vectors

  2. 02

    Vectors and Pixels

  3. 03

    Coordinate Types

  4. 04

    Value Control

2: Procedural Textures
  1. 01

    Noise Textures

  2. 02

    Shape Control

  3. 03

    Repetition

  4. 04

    Texture Composition

  5. 05

    Space Manipulation

3: Shading Principles
  1. 01

    PBR

  2. 02

    Geometric Dependency - Context Sensitivity

  3. 03

    Generating PBR Maps

4: Shader Composition
  1. 01

    Blending & Masking

  2. 02

    Randomization

  3. 03

    Semi-Procedural Workflow

  4. 04

    Volumetric Shaders

5: Modular Setup
  1. 01

    Parametrization

  2. 02

    Nodegroups

6: Automation
  1. 01

    Drivers

  2. 02

    Animation

Workflow Examples
  1. 01

    Walls (Chapter 2+)

  2. 02

    Wood (Chapter 3+)

  3. 03

    Dynamic Walls (Chapter 4+)

  4. 04

    Wooden Boards (Chapter 5+)

  5. 05

    Fire (Chapter 6+)

  6. 06

    Rainy Window (Chapter 6+)

Files & Tools
  1. Example Scene
  2. Example Scene - Simplified Free
  3. Visualization (Chapter 1-4): Value Graph
  4. Visualization (Chapter 2-5): Space Origami
  5. Example Shader (Chapter 3-1): Rock
  6. Example Shader (Chapter 4-1): Dilapidated Cube Scene
  7. Example Shader (Chapter 4-3): Image Texture De-Tiling
  8. Example Shader (Chapter 4-3): Semi-Procedural Fishbones Boards
  9. Example Shader (Chapter 4-4): Procedural Volumetric Clouds

Login to view this content

Join Blender Studio for just €11.50/month and get instant access to all of our training and film assets!

Login Join Blender Studio
Simon Thommes
Simon Thommes Author
License CC-BY
Report Problem
Workflow Examples

Dynamic Walls (Chapter 4+)

In this workflow example I show how to extend the simple wall shader from the first workflow example with the functionality to dynamically paint away the plaster to expose an underlying wooden structure.

It contains:

  • Creating the pattern for the wooden bar structure
  • Setting up the shader including displacement
  • Setting up a dynamic mask that follows the structure of the shader to mix between the material layers

Find the Full shader in the adapted example scene: https://cloud.blender.org/p/procedural-shading/5f2d40a5a72ef6dc71a8a612

Timestamps:

  • 01:34 - Base Pattern
  • 13:38 - Shading
  • 25:55 - Detail
  • 39:00 - Base Mask
  • 47:33 - Mask Variation

Join to leave a comment.

38 comments
Brian Mnichowicz
Brian Mnichowicz
April 21st, 2024

35:00 I can't seem to get the Displacement to work. Displacement and Bump looks the same as Bump Only, and Displacement Only looks completely flat. Do you have any suggestions for things to check? I'm using 4.1.

Brian Mnichowicz
Brian Mnichowicz
April 21st, 2024

@Brian Mnichowicz I think I've got it now -- my problem was that I only had 4 vertices for the plane, and no subdivision surface modifier.

Simon Thommes
Simon Thommes
April 22nd, 2024

@Brian Mnichowicz Yes, you can only displace the vertices that already exist in the geometry. This displacement is not more granular than that.

Maxim Ahmadi
Maxim Ahmadi
March 26th, 2023

This completely destroyed my laptop, but it was absolutely worth it!

Itay Sharon
Itay Sharon
Dec. 25th, 2022

If anyone's wondering, it looks like the correlation for the X component of the multiply vector at around 13:00 (for fixing the circles) is something along the lines of:

X = ((Object's X scale) * (Frequency of bars horizontal) / (Frequency of bars vertical)) * 2

I don't have an explanation for it since i was eyeing the formula but it seems about right for me

Itay Sharon
Itay Sharon
Dec. 25th, 2022

@Itay Sharon Correction:

X = ((Object's X scale) * ((Frequency of bars horizontal) / (Frequency of bars vertical))) * 2 Or more simply: (Scale.X * (H / V)) * 2

Benjamin Bass
Benjamin Bass
June 29th, 2022

This was epic.  Thank you.  I am using 3.2, so I have the sculpt paint feature.  Is it better than Vertex Painting for the mask, or is there no difference?

Simon Thommes
Simon Thommes
June 30th, 2022

@Benjamin Bass It is currently still in heavy development and meant to eventually replace the old vertex color painting system. There are some features that the new system is missing still to be up t par, that's why they still both exist next to each other. But as soon as those are there it will be all-around better than the old system.

Emmanuel
Emmanuel
Aug. 9th, 2021

hey, I must apply my subdivision modifier to be able to vertex paint. I see in the video than Simon doesn't apply them and he's able to paint, am I missing something?

Emmanuel
Emmanuel
Aug. 9th, 2021

@Emmanuel I just went further in the tutorial, and I understood why. His mesh was already subdivided in addition of the modifier.

Michael Schwarz
Michael Schwarz
Nov. 14th, 2020

I;ve got stuck at 20:30. Unchecking "Clamp" for the map range for the horizontal bars makes no difference. Normally the horizontal bars should turn black when unchecking "clamp" and you connect the view Node directly to the output of that map range node. In my file nothings happens. I compared all values and found no differences to the example file. I really got stuck and would appreciate any help. You may download my current file from here: https://1drv.ms/u/s%21AkArx_WkEuwAhYhIhshF-paW2Xmqcw?e=RjdcNk

Simon Thommes
Simon Thommes
Nov. 16th, 2020

@Michael Schwarz Your RGB Curves node for the horizontal bars has a point in (0,0). This prevents it from going far into the negative and because of that the clipping does not make much of a difference. You can just remove that point in the Curves node and it should be fine.

Michael Schwarz
Michael Schwarz
Nov. 22nd, 2020

@Simon Thommes OK. I think I've got. I have to reset the curve and then set the 3 points again. My question is: how have seen that there was a point in 0,0 ? Or was that just an assumption concluded from the behaviour?

Simon Thommes
Simon Thommes
Jan. 4th, 2021

@Michael Schwarz It was an assumption, but I can simply select it by clicking in the general area in the file that you provided. Maybe you have to reset the view of the curve, if you zoomed in and can not see it because of that.

Michael Schwarz
Michael Schwarz
Jan. 9th, 2021

@Simon Thommes Oh. I see. Thanks!

Michael Schwarz
Michael Schwarz
Nov. 22nd, 2020

@Simon Thommes sorry, but I can't see that point and neither I could delete it. I played around with the RGB curves a bit and actually I came sometimes to a point where ir worked as it should but I was not able to reproduce this. Please have a look at this commented screenshot and please advice how to find and delete that point in 0,0. File: https://1drv.ms/u/s%21AkArx_WkEuwAhY0NrL-HyYnbhyEMXw?e=bsZRRa

Gary
Gary
Oct. 24th, 2020

At 21:00 when you're combining the height maps for the wood, I don't understand why the maximum node is the right choice, since you want the lower values from the vertical bars.

I'm also not sure what effect unchecking "clamp" has on the map range node. It seems to suggest it's no longer clamping to the "To Min" and "To Max" values. Does that mean only the "From Min" and "From Max" values are taken into account? If so, what's the point in setting the to min / max values at all?

Huân Lê-Vương
Huân Lê-Vương
Oct. 24th, 2020

*@Gary* when we use the maximum, we take in account the high value of the both functions without changing the value as the space where they overlapping each other.

now for example, we have a plane of value from 0 to 10. we add a map range node and turn off the clamp.

we can use from min = 0, from max = 10. then to min = 0, to max = 10. it's from (0 to 10) to (0 to 10), the value remains the same, and that makes sense, right?

now use to max = 1, now it's from (0 to 10) to (0 to 1). still makes sense, right?

so for every steps of (0 to 10) will be scaled to ("to min" to "to max"). for the value that goes from 0 to 10, there is only 1 (0 to 10) step.

now with from min = 0, from max = 1, we use the step of (0 to 1) for our value. for the value of 0 to 10, we have 10 steps of (0 to 1). and every of them will be scaled the range of ("to min" to "to max").

for example, from min = 0, from max = 1, to min = -3, to max = -1. so the first step will be -3 to -1. the 2nd is will continue from -1 to 1 and goes on.

to know how the "clamp" work, you should take a value from Geometry>Position coordinates and scale the mesh bigger, then turning on/off the clamp. The bigger the mesh, the more position value it covers. turning on clamp will stop the value at the to min to max.

Show more replies
Simon Thommes
Simon Thommes
Oct. 26th, 2020

*@Gary* Thank you *@Huân Lê-Vương* for helping out, I'll put it into my words also.

The maximum node is used because the map that we want for the combined heightmap is everywhere the one that is protruding higher. Because the horizontal bars are higher that means that those are layered in front of the vertical ones.

In the places of gaps the clamping is important though. The gaps for both maps are at the height that is set as the To Min value because the maps are clamped.

That means all values lower than the minimum are cut off to the minimum and the same for any values higher than the maximum. (I would recommend you to take a look at the map range node in particular with the value graph tool from Chapter 1.)

That means the map with the horizontal bars is higher everywhere, as its minimum is as high as the other map's maximum. When only one of the is clamped, the unclamped one dives rapidly into the negative values in the gaps and so for the maximum node the clamped map is definitely higher in the gaps and so in the gaps the vertical bar map is considered as the maximum.

victor p
victor p
Oct. 7th, 2020

Simon this workflow examples are amazing.. The learning now feel more grounded.. Thank you for making this course.

Anyway do you have plans to do more courses?

Huân Lê-Vương
Huân Lê-Vương
Oct. 7th, 2020

*@victor p* I would get more membership time for his courses

Show more replies
Simon Thommes
Simon Thommes
Oct. 12th, 2020

*@victor p* Thank you very much, I am glad they are helping! The idea is to finish this course as an extensive collection of all the concepts of fundamentals of procedural shading. As that it is pretty complete and so I won't make another course in the same vein. But I can definitely see doing workshops on more specific and practical cases in the future! Also I want to successively add more advanced additional concepts, as I pointed out in the 'Content Overview' video.

Generally, as long as I am part of the Blender Studio, I will be adding content to the Cloud, also in the context of future open movie production. Breakdowns and tutorials are a part of that :)

victor p
victor p
Oct. 15th, 2020

*@Simon Thommes* will be waiting for other course or workshop. Anyway if you can make explanation on how you make your shaders that will be very interesting to follow along.

kroneborge
kroneborge
Oct. 3rd, 2020

Question, why not put your mix shader (to mix between the plaster and the wood frame) after the mix shader with the transparency?

Seems like it would be much easier, that way you don't have to worry about the transparency effecting the plaster?

Simon Thommes
Simon Thommes
Oct. 5th, 2020

*@kroneborge* You can also do that. The only difference I see right now is that the way I set it up the transparency is not affected by the backface-culling. I think that was the reason I did it this way.

Here it does not really matter but if you wanted light to be able to go through the gaps to the outside, you would have to set it up this way.

Aron
Aron
Sept. 18th, 2020

I make height map at 25:40 and change bump only to displacement and bump.
i can see some distortion like this : https://drive.google.com/file/d/1bO-WABgLi4EFtX6QutaN_gjqnR0XGU0U/view?usp=sharing and it can see in your example file too, but in this video 36:14 it is very tidy. i wonder why this distortion come up? can i delete it?
it is my blend file :https://drive.google.com/file/d/1f3OTqr96vWgH_4SnHU9fqcYqo_5GkEZ8/view?usp=sharing

Simon Thommes
Simon Thommes
Sept. 21st, 2020

*@Aron* What you can see there is just the displacement of the shader not having enough geometry to work with. If you enable the subdivision modifier for viewport display you can see how it comes together with more geometry. You are on the right track :)

Also setting the shading to smooth will help a bit.

Aron
Aron
Sept. 22nd, 2020

*@Simon Thommes* Thanks to replying my question, it's work!

<deleted>
<deleted>
Sept. 9th, 2020

It will be nice in the next course to have the outputs connected when making changes, I know you are explaining each part, but the visualization of the hange is very important to me (and I believe for others) to get a feedback and help in the fixing of the thing, otherwise I feel very lost in the numbers.

Edit
Delete
Huân Lê-Vương
Huân Lê-Vương
Aug. 26th, 2020

Hello and thank you for the tutorial,

I'm at the part where you add a Map Range node to the vertical bar value. If I use "from min 0.8 from max 0.9" instead of "from min 0.2 from max 0.1", later I won't have to substract 0.5 to offset the value before I combine XYZ. The circles will be at the right locations. I don't know if there is any "consequence".

Edit: from min, from max

Simon Thommes
Simon Thommes
Aug. 26th, 2020

*@Huân Lê-Vương* Can you give me a timestamp in the video, so I know where to look?

Huân Lê-Vương
Huân Lê-Vương
Aug. 27th, 2020

*@Simon Thommes* I also use MixRGB instead of maximum/minimum so I can use less a node at the dispacement part from 18:47 to 25:35

My file: https://drive.google.com/file/d/1YEBmfHHtgDJXr9ngVLprEMCKAIuFcHqi/view?usp=sharing

Simon Thommes
Simon Thommes
Aug. 27th, 2020

*@Huân Lê-Vương* You can also use Mix nodes with a greater/less than mask, but then you have to make sure to mix between exactly the same maps you used for the mask as well.

About the node-count: Using fewer nodes is not always better. Even for performance it matters more which nodes you use than how many.

Huân Lê-Vương
Huân Lê-Vương
Aug. 28th, 2020

*@Simon Thommes* ah, actually I plugged the bolt's Map Range (24:10) to the "To Max" value of the horizomtal Map Range instead of using a Minimum node. I thought it only worked with MixRGB but it also works with Maximum too.

Huân Lê-Vương
Huân Lê-Vương
Aug. 28th, 2020

*@Simon Thommes* thanks!

Huân Lê-Vương
Huân Lê-Vương
Aug. 27th, 2020

then the diplacement just doesn't work properly. don't know how. i should go back to your method.

Huân Lê-Vương
Huân Lê-Vương
Aug. 27th, 2020

*@Simon Thommes* 5:59 and 10:52

Simon Thommes
Simon Thommes
Aug. 27th, 2020

*@Huân Lê-Vương* Ah, I see what you mean now. Yes, that seems reasonable to do!

Films Projects Training Blog Blender Studio for Teams
Pipeline and Tools
  • CloudRig
  • Blender Kitsu
  • Brushstroke Tools Add-on
  • Blender Studio Extensions
Characters
  • Mikassa
  • Whale
  • Ballan Wrasse
  • Snow
Studio
  • Terms & Conditions
  • Privacy Policy
  • Contact
  • Remixing Music
Blender Studio

The creators who share.

Artistic freedom starts with Blender The Free and Open Source 3D Creation Suite