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

Walls (Chapter 2+)

This is the simplest workflow example and it is aimed at a level after finishing chapter 2 of the course.

Join to leave a comment.

34 comments
Ahmed Khattab
Ahmed Khattab
Oct. 6th, 2024

Hello..I just checked the course I understood slot of things..but many nodes doesn’t get the same output in blender 4.2. Please let me know if that is correct or am I doing something wrong. Thank you

Simon Thommes
Simon Thommes
Oct. 8th, 2024

@Ahmed Khattab There definitely have been many changes in Blender since the version that this course was recorded with but nothing about the output of the nodes should be fundamentally changed. If you can provide an example of where you are seeing differences that don't make sense IU can try to help. Youc an also check out the example files and see if there are any differences toi what you would expect in there: https://studio.blender.org/training/procedural-shading/chapter/5f0743f581cfcffd2c0a2b0d/

Franziska Meister
Franziska Meister
Aug. 1st, 2023

Hi Simon! Thanks for the awesome tutorials. I've been following your work for a while now and wanted to ask if it was possible for you to share your process for the tree trunks you did for sprite fight? They looked so awesome and I am curious at how you created them?

I am still in the beginning of my shading/ node journey and not able to replicate that on my own! That would be awesome. :)

Simon Thommes
Simon Thommes
Aug. 2nd, 2023

@Franziska Meister Thank you, I appreciate it! Generally I tried to include all the techniques that I'm using in this training series. Applying that properly is just a matter of practice and getting creative with combining them.

For the tree trunks I started with making a couple of procedural base textures that would replicate some of the shapes and patterns in our concept art for the tree bark. A lot of that process is very similar to what I'm showing specifically in the Wooden Boards or Rainy Window examples.

The main trick to try and make it look organic (while still stylized) was to do a lot of layering of detail, rather than using a single procedural texture on it's own. The setups are also included in the shot packs you can download: https://studio.blender.org/films/sprite-fright/3a29f46b66bd34/

Though I can't exactly recommend to try and untangle the node-trees, as I never had the time to clean them up and nowadays I would build things a bit differently. But maybe it helps you out.

Also keep in mind that, while I went for the fully procedural approach, that's not always the best way to go, especially with more complex setups like this. I hope this helps :)

fu233
fu233
May 21st, 2022

What is the difference between Vector math and math setting?

Simon Thommes
Simon Thommes
May 21st, 2022

@fu233 the regular math node does not handle vectors, so it will convert them into regular values instead

Tighe Racicot
Tighe Racicot
Feb. 8th, 2021

Hi Simon, I'm curious why you chose to use Generated and subtract 0.5/multiply by 2 to center the mid point instead of using the Texture Coordinate's Object socket? The results appear to be virtually the same.

Simon Thommes
Simon Thommes
Feb. 8th, 2021

@Tighe Racicot That is the case only as long as the mesh of the object itself does not change. When you go into edit mode and scale the plane, you can see that Generated coordinates adapt to the bounding box of the mesh.

Tighe Racicot
Tighe Racicot
Feb. 11th, 2021

@Simon Thommes Sorry, I'm not sure what you mean by adapt. I've set up a test, one with Generated with the midpoint and min,max shifted, and another with Object as is. Both are wired up to a Noise node. When I preview either and scale in edit mode, they both seem behave the same. The plane is scaled larger, with the additional generated noise filling the canvas—no stretching from the Object node which is what I thought you meant. Maybe it's a mute point, I'm just trying to understand these nodes since up until now they've totally mystified me.

Simon Thommes
Simon Thommes
Feb. 12th, 2021

@Tighe Racicot I assume you're using Eevee for the preview. There you need to exit edit mode to see the change take effect. In Cycles the update is immediate.

Nik Kottmann
Nik Kottmann
Dec. 10th, 2020

Hey, thank you so much for this course! Is there a specific reason you used the distance value of the bump node and not the strength? what is the difference between those two values?

Simon Thommes
Simon Thommes
Jan. 4th, 2021

@Blender Daily There is actually a mathematical difference between the two that results in a visual difference as well. The distance actually changes how the normals are calculated in respect to how strong the bump is interpreted, while strength simply blends the result with the input normals.

So my suggestion is to always set the correct distance first and then tone it down with the strength if necessary.

<deleted>
<deleted>
Nov. 28th, 2020

Simon, when I am connecting geometry position to the noise texture, it's making it circular. Basically, it is loosing it's randomness. Without geometry global position things are working as expected. Any pointers?

Edit
Delete
<deleted>
<deleted>
Nov. 29th, 2020

Ignore - I just couldn't reproduce the problem in the subsequent try. Very helpful tutorial Simon. Thank you!

Edit
Delete
Leslie Solorzano
Leslie Solorzano
Nov. 7th, 2020

This is a silly question but at the beginning when viewing the texture coordinates, I don't understand why it has some bluish pinkish colors and then when it is shifted 0.5 it become black red and green? I imagine it is because of XYZ being treated as RGB but I can't see it, can't grasp it.

Simon Thommes
Simon Thommes
Nov. 12th, 2020

@Leslie Solorzano Good point, I should have mentioned this. Yes, it is due to the RGB representation of XYZ. The blue component comes from Z and the Generated coordintaes behave a little bit funky when the object is a plane with no height because they stretch between the limits. For a plane both limits in Z are the same so the Z component is unclear, but it is defined as 0.5 .

So subtracting 0.5 from the z component brings it to 0 and thus removes the blue tint. But eventually the Z component does not matter at all because it is getting multiplied with 0 in the following node.

Alex
Alex
Oct. 14th, 2020

Hello! I'm not sure why, but I've got no "smooth maximum" (4:09 on the video). Quite the opposite my window with options is rather slim. I thought it has to do with rendering set up but seems like not.

Simon Thommes
Simon Thommes
Oct. 14th, 2020

*@Alex* You are probably using an outdated version of Blender, there have been a lot of new options coming to the math node in recent Blender versions. You can download the latest version of Blender here: https://www.blender.org/download/

Alex
Alex
Oct. 14th, 2020

*@Simon Thommes* Oh how could I not think of that myself. Thank you!

Michael Schwarz
Michael Schwarz
Oct. 10th, 2020

The question I asked in this post earlier is obsolete. I just forgot that the coordinates with Generated run from 0 to 1

Jonathan Walsh
Jonathan Walsh
Sept. 30th, 2020

I am loving this mate.

victor p
victor p
Sept. 16th, 2020

Hi Simon, is there any blendfile for starting this workflow examples?

Simon Thommes
Simon Thommes
Sept. 16th, 2020

*@victor p* You can simply use the file of the result and delete the material or start just using a simple plane, as I am doing in the video.

In all the workflow examples I am using quite simple base setups.

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

thanks! at first i thought subtract would "1-0.5" now i understand it's a "(0-0.5;1-0.5)". i'm not good at math :v

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

by the way, how to select every value in a node at once like you did with the first vector math node?

Simon Thommes
Simon Thommes
Aug. 17th, 2020

*@Huân Lê-Vương* Everywhere in blender when there are multiple values to define something like a vector, you can click and drag along the fields from top to bottom to change all at the same time

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

*@Simon Thommes* thanks! another question, why the min value of the map range is higher than the max value (before the roughness)?

Simon Thommes
Simon Thommes
Aug. 17th, 2020

*@Huân Lê-Vương* The 'To Min' and 'To Max' inputs simply determine where the 'From ...' values are mapped to, so flipping these around is an easy way to invert the map, while you are defining the levels. 'Max' does not have to necessarily be higher than 'Min', that is just a name to easily differentiate between them.

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

*@Simon Thommes* thanks!

iamauleon
iamauleon
Aug. 11th, 2020

This workflow example is very helpful

Feby Kristianto
Feby Kristianto
Aug. 5th, 2020

Very interesting, i have create a wall with only same method but using gradient texture to masking the dirt. But i don't know if this is a correct way to do it.

Simon Thommes
Simon Thommes
Aug. 5th, 2020

*@Feby Kristianto* You can totally do that! There is not really a single correct way to do it. I personally, instead of using a gradient texture, would have just used the Y-component of the Generated coordinates. But if you are more comfortable with that, that's fine too.

David Beers
David Beers
July 22nd, 2020

Thank you! This example helped cement a lot of the stuff you touched on in the first two chapters. Very much looking forward to the rest of the course.

cjdelaguardia
cjdelaguardia
July 20th, 2020

these are very helpful thank you! icant wait for the droplets on the windows!

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