Films Training Blog
Pipeline and Tools Characters
Pipeline and Tools Characters
search Login Join
favorite

Development Fund

Support Blender Core Development with a monthly contribution.

theaters

Blender Studio

The creators who share. Access production content and knowledge from the Open Movies.

code

Blender Developer Blog

Latest news and updates on Blender development.

people

Get Involved

Join the community and help with design, development, docs and more.

bar_chart

Open Data

A platform to collect and display the Blender Benchmark results.

menu_book

Blender Docs

Documentation on Blender's features, tools and API.

Blender Conference

The yearly event that brings together the Blender community in one place.

download

Get Blender

Download the latest Blender version, or try the beta!

Films
Training
Blog
Pipeline and Tools
Characters
Search
Login
Join

Course

Procedural Shading: Fundamentals and Beyond
feed Course Overview
Introduction keyboard_arrow_down
  1. 01

    Introduction

    Free
  2. 02

    Definition

  3. 03

    Content Overview

  4. 04

    The Shader Editor

1: Fundamentals keyboard_arrow_down
  1. 01

    Colors, Values & Vectors

  2. 02

    Vectors and Pixels

  3. 03

    Coordinate Types

  4. 04

    Value Control

2: Procedural Textures keyboard_arrow_down
  1. 01

    Noise Textures

  2. 02

    Shape Control

  3. 03

    Repetition

  4. 04

    Texture Composition

  5. 05

    Space Manipulation

3: Shading Principles keyboard_arrow_down
  1. 01

    PBR

  2. 02

    Geometric Dependency - Context Sensitivity

  3. 03

    Generating PBR Maps

4: Shader Composition keyboard_arrow_down
  1. 01

    Blending & Masking

  2. 02

    Randomization

  3. 03

    Semi-Procedural Workflow

  4. 04

    Volumetric Shaders

5: Modular Setup keyboard_arrow_down
  1. 01

    Parametrization

  2. 02

    Nodegroups

6: Automation keyboard_arrow_down
  1. 01

    Drivers

  2. 02

    Animation

Workflow Examples keyboard_arrow_down
  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 keyboard_arrow_down
  1. insert_drive_file

    Example Scene

    visibility_off
  2. insert_drive_file

    Example Scene - Simplified

    visibility_off
  3. insert_drive_file

    Visualization (Chapter 1-4): Value Graph

    visibility_off
  4. insert_drive_file

    Visualization (Chapter 2-5): Space Origami

    visibility_off
  5. insert_drive_file

    Example Shader (Chapter 3-1): Rock

    visibility_off
  6. insert_drive_file

    Example Shader (Chapter 4-1): Dilapidated Cube Scene

    visibility_off
  7. insert_drive_file

    Example Shader (Chapter 4-3): Image Texture De-Tiling

    visibility_off
  8. insert_drive_file

    Example Shader (Chapter 4-3): Semi-Procedural Fishbones Boards

    visibility_off
  9. insert_drive_file

    Example Shader (Chapter 4-4): Procedural Volumetric Clouds

    visibility_off

Course

Procedural Shading: Fundamentals and Beyond
Introduction keyboard_arrow_down
  1. 01

    Introduction

    Free
  2. 02

    Definition

  3. 03

    Content Overview

  4. 04

    The Shader Editor

1: Fundamentals keyboard_arrow_down
  1. 01

    Colors, Values & Vectors

  2. 02

    Vectors and Pixels

  3. 03

    Coordinate Types

  4. 04

    Value Control

2: Procedural Textures keyboard_arrow_down
  1. 01

    Noise Textures

  2. 02

    Shape Control

  3. 03

    Repetition

  4. 04

    Texture Composition

  5. 05

    Space Manipulation

3: Shading Principles keyboard_arrow_down
  1. 01

    PBR

  2. 02

    Geometric Dependency - Context Sensitivity

  3. 03

    Generating PBR Maps

4: Shader Composition keyboard_arrow_down
  1. 01

    Blending & Masking

  2. 02

    Randomization

  3. 03

    Semi-Procedural Workflow

  4. 04

    Volumetric Shaders

5: Modular Setup keyboard_arrow_down
  1. 01

    Parametrization

  2. 02

    Nodegroups

6: Automation keyboard_arrow_down
  1. 01

    Drivers

  2. 02

    Animation

Workflow Examples keyboard_arrow_down
  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 keyboard_arrow_down
  1. insert_drive_file

    Example Scene

  2. insert_drive_file

    Example Scene - Simplified

    Free
  3. insert_drive_file

    Visualization (Chapter 1-4): Value Graph

  4. insert_drive_file

    Visualization (Chapter 2-5): Space Origami

  5. insert_drive_file

    Example Shader (Chapter 3-1): Rock

  6. insert_drive_file

    Example Shader (Chapter 4-1): Dilapidated Cube Scene

  7. insert_drive_file

    Example Shader (Chapter 4-3): Image Texture De-Tiling

  8. insert_drive_file

    Example Shader (Chapter 4-3): Semi-Procedural Fishbones Boards

  9. insert_drive_file

    Example Shader (Chapter 4-4): Procedural Volumetric Clouds

You need to login to view this content

You can join Blender Studio for €11.50/month and get access to all of our training & film content instantly!

Login Join Blender Studio

Workflow Examples

Dynamic Walls (Chapter 4+)

7th August 2020

info License: CC-BY
flag Report Problem

Published by

Simon Thommes

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

34 Comments

Join to comment publicly.

Jefferson e Silva Nascimento

9th September 2020 - 16:59

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.

Benjamin Bass

29th June 2022 - 09:22

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

30th June 2022 - 10:14

@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.

Huân Lê-Vương

26th August 2020 - 09:44

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

26th August 2020 - 11:30

*@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

27th August 2020 - 06:53

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

Simon Thommes

27th August 2020 - 15:32

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

Huân Lê-Vương

27th August 2020 - 07:46

*@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

Huân Lê-Vương

27th August 2020 - 11:28

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

Simon Thommes

27th August 2020 - 15:35

*@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

28th August 2020 - 04:22

*@Simon Thommes* thanks!

Huân Lê-Vương

28th August 2020 - 05:09

*@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.

Aron

18th September 2020 - 23:44

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

21st September 2020 - 10:42

*@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

22nd September 2020 - 19:57

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

kroneborge

3rd October 2020 - 03:08

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

5th October 2020 - 12:52

*@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.

victor p

7th October 2020 - 06:36

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

7th October 2020 - 08:53

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

Show more replies

Simon Thommes

12th October 2020 - 15:14

*@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

15th October 2020 - 06:22

*@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.

Gary

24th October 2020 - 11:22

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

24th October 2020 - 14:59

*@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

26th October 2020 - 12:51

*@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.

Michael Schwarz

14th November 2020 - 10:59

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

16th November 2020 - 10:06

@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

22nd November 2020 - 18:38

@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

Michael Schwarz

22nd November 2020 - 18:54

@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

4th January 2021 - 10:56

@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

9th January 2021 - 10:02

@Simon Thommes Oh. I see. Thanks!

Emmanuel

9th August 2021 - 22:28

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

9th August 2021 - 22:33

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

Itay Sharon

25th December 2022 - 14:11

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

25th December 2022 - 14:17

@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

Blender Studio

The Creators Who Share.

Facebook Logo Twitter Logo YouTube Logo
  • Films
  • Blog
  • Training
Pipeline and Tools
  • Cloud Rig
  • Blender Kitsu
  • Contact Sheet Add-on
  • Blender Purge
  • Blender Cloud Services
Characters
  • Einar
  • Security Bot
  • Huginn
  • Pack Bot
Studio
  • Terms & Conditions
  • Privacy Policy
  • Contact
  • Remixing Music
  • Blender.org
Loading...