Blender Studio
  • Films
  • Training
  • Characters
  • Pipeline
  • Blog
  • Sign in
  • 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.

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+)

Aug. 7th, 2020

info License: CC-BY
Report Problem
Simon Thommes
Simon Thommes Publisher

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 comment publicly.

35 comments

Jefferson e Silva Nascimento
Jefferson e Silva Nascimento 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.

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.

Maxim Ahmadi
Maxim Ahmadi March 26th, 2023

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

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

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

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.

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* thanks!

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.

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!

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.

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.

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.

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 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
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!

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.

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

  • Films
  • Training
  • Blog
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

Blender Studio

The creators who share.

Facebook Logo Twitter Logo YouTube Logo
Loading...