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
2: Procedural Textures

Texture Composition

You can get the file for the Value Graph Tool here: https://cloud.blender.org/p/procedural-shading/5f075c60f11c51bf02b95fa1

Join to leave a comment.

27 comments
Brian Mnichowicz
Brian Mnichowicz
March 28th, 2024

I understand why the maximum node is equivalent to a boolean union, but can you please explain why minimum results in a boolean intersection equivalent?

Simon Thommes
Simon Thommes
April 5th, 2024

@Brian Mnichowicz Those two concepts are analogous, while maximum keeps all values that are higher (outside), minimum keeps all values that are lower (inside).

Nickolai Belakovski
Nickolai Belakovski
Oct. 28th, 2023

I'm struggling to understand your comment at 3:39

"Now having the noise centered around 0 is not doing us a favor" why? Is it because we're losing information about the circles with which we're combining the noise?

"While adding 0 does not change anything, for multiplication the neutral element that does not change anything is multiplying by 1, so for this [what is this?] we want the values to be centered around 1 instead of 0"

I get the idea that adding 0 does not change anything and multiplying by 1 doesn't change anything, but what does that have to do with where the noise values are centered?

I guess the idea is that have values centered around 0 means multiply loses a lot of information, so if we want to use a multiply node, we should center the values around 0 to avoid everything going to 0?

Simon Thommes
Simon Thommes
Oct. 30th, 2023

@Nickolai Belakovski The idea here is that when a random noise is cenetered around the value that does not change the data in an operation, that means that randomly some values will change the data in one direction, just as much as into the other. So on average, the overall look stays somewhat the same.

Sironious
Sironious
Aug. 16th, 2023

How can you posibly create a circle with substract nodes

Tighe Racicot
Tighe Racicot
Feb. 19th, 2021

Hi Simon, when showing how to mix the noise with the two circle gradients, you said "Using the add operation offsets the values with the same strength independent on the value of the other map as the strength of the noise is the same everywhere." By strength do you mean amplitude/value? The noise values vary throughout its map, so I don't see how it's the same everywhere. You later say that the strength of the noise (again, I'm thinking amplitude or resulting values?) depends on the gradient. So, the principle here is that add will combine (or offset as you say) the noise value with the other map no matter what, whereas after adding 1 to the noise map then multiplying with the other, it now takes the shape of the first map without blowing away the values, the key being Multiply causes it's overall shape to conform to the first map?

Tighe Racicot
Tighe Racicot
Feb. 18th, 2021

Hi Simon, at 3:03 you talked about retaining the map's negative values instead of clamping. If we clamp, then the noise would have affected the black. I don't fully understand your comment. Isn't the noise still affecting the black? Are you saying that because we retained the negative values, that gives us a buffer for the noise to affect the map without immediately pulling the blacks into whites?

Simon Thommes
Simon Thommes
Feb. 18th, 2021

@Tighe Racicot Yes, that was phrased a little bit inaccurately by me. But how you interpret it is correct, What I meant is that the black areas stay black. Thinking about the negative values as a buffer is definitely helpful!

Tighe Racicot
Tighe Racicot
Feb. 19th, 2021

@Simon Thommes Excellent, thanks for clarifying!

Nicholas Carrozo
Nicholas Carrozo
Feb. 15th, 2021

My approach to learning this is repetition. watch each chapter 10 times and its like a render samples. it'll become clear with enough passes. Simon, thank you for this wealth of information!

Tighe Racicot
Tighe Racicot
Feb. 18th, 2021

@Nicholas Carrozo I'm slowly getting it, but I have to listen to one principle then experiment for hours, sometimes days even. Moving at a glacial pace, but learning.

Simon Thommes
Simon Thommes
Feb. 18th, 2021

@Tighe Racicot Awesome that you keep going! These lessons are quite fast paced. My focus was more to bring the information to the point and in a good structure so you could go back to certain concepts easily.

Experimenting yourself with those concepts is definitely the best way to learn and internalize :)

Tsihoarana Randimbivololona
Tsihoarana Randimbivololona
Oct. 20th, 2020

Great content, I kinda don't get it for now and my head kinda hurt but I'll get it eventually.

victor p
victor p
Sept. 25th, 2020

Hi Simon, any idea why the plane's wireframe is visible on my viewport?

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

Simon Thommes
Simon Thommes
Sept. 25th, 2020

*@victor p* Yes, looks to me like you are trying to display something that is not the 'Value Graph' output on the plane. What you are seeing is not the wireframe of the plane, but an artifact because of that. It is because of the way that the tool is set up (with a grid of planes): https://cloud.blender.org/p/procedural-shading/5f075c60f11c51bf02b95fa1

When you go into local view of the plane, the artifacts go away (numpad /)

victor p
victor p
Sept. 27th, 2020

*@Simon Thommes* I think i know now why you use the node group. I notice that the blue grid doesn't visualize what's happening on the plane when i put the nodes outside the node group

Simon Thommes
Simon Thommes
Sept. 28th, 2020

*@victor p* Oh, yes exactly. You have to use the nodegroup for the visualization to work. Otherwise there is a discrepancy between the what the grid shows and what the plane shows and that results in the grid on the plane. I'm sorry, I thought you meant to use is without the visualization and then wondered about the grid.

victor p
victor p
Sept. 27th, 2020

*@Simon Thommes* aha ok, so it is supposed to be visible i thought its some mistakes i make with the nodes as i put it outside the group. Anyway I tried to view in local view the wireframe is gone but then the blue grid also is gone, so i keep it just the way it was. Ok Simon thank you for clarifying

Peter Evans
Peter Evans
Sept. 7th, 2020

Really great course, a little above my head but I'll get it eventually. Thanks for the great content, excellent instructor.

Desgorces
Desgorces
Aug. 28th, 2020

First Thank you for this great tutorial. I have an issue with the colors, it seems that my color ramp has absolutely no effect on the image rendering (I only got a black and white image). Am I the only one facing this problem ?

Simon Thommes
Simon Thommes
Aug. 28th, 2020

*@Desgorces* I'm not sure I see what your problem is. Can you send a screenshot of your setup and result?

Desgorces
Desgorces
Aug. 28th, 2020

*@Simon Thommes* Thank's Simon I just uploaded a screenshot on the cloud at: https://blender.cloud/r/7AIKPf Pascal

Simon Thommes
Simon Thommes
Aug. 28th, 2020

*@Desgorces* Ah, I see what you mean now. The output from the color ramp is connected to the color output of the nodegroup, which is not used for anything right now.

What is displayed is actually the value output from the map range node, as this is what's connected to the value output. If you leave the nodegroup by pressing ctrl+TAB, you can select the color output as what is displayed with the viewer node, then it shows you the resulting color.

Desgorces
Desgorces
Aug. 29th, 2020

*@Simon Thommes* Thank you very much. Everything's fine now.

Vsion Studio
Vsion Studio
Aug. 15th, 2020

OMG, I think I get it!! just a tip: play it at 0.75x speed ;D

victor p
victor p
Sept. 27th, 2020

*@Juan Romero* haha.. i know right.. our brain is just functioning a little slower.. LOL

Tighe Racicot
Tighe Racicot
Feb. 18th, 2021

@victor p I'm literally watching it at .75x!

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