What’s the math behind Noise Texture Node?

Could you please explain or share sites which explain the intuition of Noise Texture Node? The only helpful source that I can find at the moment is this video. I don’t know how to read codes so Blender’s source codes don’t help.

Thank you so much!

It’s Perlin noise, it’s a very common algorithm.

1 Like

Thank you. Though Wiki is known for not being the best at being beginner friendly. A more friendly article or video like the one I linked would help a lot.

I mean… you’re talking about high level math here, there’s only so much simplification you can do. The Wikipedia article honestly does a good job breaking it down, but you can Google it if you’d prefer something else :slight_smile:

1 Like

Thank you!

You can literally type “Perlin Noise Explained” in YouTube and you get a variety of videos explaining the concept in different ways. If you prefer text, use Google.

1 Like

Thank you!

Excuse me, may I ask which Perlin Noise is implemented in Blender? Perlin Noise or Improved Perlin Noise? Apparently, those two types of noise are different.

Is there any difference in intuition between both of them?

Both of those Perlin Noise & more are implemented
Add a plane, subdivide it 150 times. Add a displace modifier.


Set the strength to .3. Click that icon to the right of the word texture to take you to the texture panel.
Change Add Image to Cloud. Change Blender Original to one of the Perlins. Play with the other settings. Start with the size.

I figure actually having a hands-on play is an improvement over 1000 words. You will see there is little difference

1 Like

Thanks a lot!
Sorry, I should have specified, which Perlin Noise is implemented as Noise Node in Blender? Perlin Noise or Improved Perlin Noise ?
I couldn’t read codes to answer this questions myself and didn’t want to study the math behind the wrong one.

There are thousands of iterations of Perlin noise- every texture in modern software is layered on top of the base Perlin noise. Your question doesn’t really have a clear cut answer. If you understand the base, you’ll have the tools to understand the rest- be it Musgrave textures or white noise textures. Perlin noise is like flour; you use it in millions of recipes that are all vastly different but connected by that common ingredient.

4 Likes

Hi, sorry for bothering you.
May I ask you something about Perlin Noise’s intuition?

I’ve discovered a very high quality article which explains the intuition of Perlin Noise.
At this part of the article, the author mentioned “Gradient Vector” but I wonder if that is the same Gradient Vector from Multivariable Calculus or if it’s something else. Could you please help me understand what it might be?

I’ve been asking around on Reddit (please check my recent posts) and people (both mathematicians and programmers) have very diverse answers to that question. 50% of people think it’s the Gradient Vector from Calculus, 50% think it’s not.

If it really is from Multivariable Calculus then I will spend time study it.

Please share your thoughts. Thank you!

If you want to know whether those are gradients in the sense of calculus, you might be able to figure that out on your own with the 1D case, which does not require multivariable calculus.
Just to be clear, I haven’t thought this through, but intuitively, this should be sufficient for the 1D case to understand whether those are potentially gradients in the sense of calculus or if it is more of a conceptual idea.

1 Like

Thank you for your help.
I’ve talked to a competent mathematician/physicist and they confirmed that the mentioned Gradient Vector really was referred to the concept from Multivariable Calculus. But at the same time, they said that we don’t have to think of Gradient Vector in the sense of Calculus because it’s too unnecessarily rigorous for the purpose of studying the intuition of Perlin Noise.

It can be understood as:
“The gradient vector is (rate of change of f when x changes and y is held still, rate of change of f when y changes and x is held still)”
“Gradient Vector is just a slope in x and y (that’s a gradient). This can be represented with a vector where the X component is the slope in X and the Y component is a slope in Y. The gradient is then evaluated by calculating the Dot Product of the vector and relative position of the sample (to the gradients origin).”

I will definitely study Multivariable Calculus in the future to understand this concept more rigorously. I don’t have much time at the moment so I’m just gonna understand it in the simpler sense.

1 Like

Both of those were my guesses, but I wasn’t sure about the first.
I was quite confident about the second one, because it is quite common to start with some basic idea and then just process it until something useful appears.

May I ask why you are trying to get some sort of a mathematically based, rigorous understanding of those concepts? You also approached Smooth F1 Voronoi in that way.

When it comes to practical algorithms, more often than not, there may be some rigorous mathematical starting points which are thrown together into a pot and boiled until they work for the goal.

2 Likes

Thank you.

May I ask why you are trying to get some sort of a mathematically based, rigorous understanding of those concepts? You also approached Smooth F1 Voronoi in that way.

I approach everything in that way to be honest. My longest studying and researching of a math concept of a function in Blender is Smooth Minimum (took me 7 months), Voronoi Diagram (3 months) and Vector Refraction (1 month). I’d been trying to create models procedurally (before studying math) and had been wondering how to do this, how to do that… I got fed up and decided to spend time learning math. Everything makes way more sense when you understand the Blender’s functions rigorously.

When it comes to practical algorithms, more often than not, there may be some rigorous mathematical starting points which are thrown together into a pot and boiled until they work for the goal.

True, that’s how Smooth Minimum was derived by the way. The author (Inigo Quilez) adjusted his Polynomial Smooth Minimum algorithm like 2 times over the years until it’s implemented into Blender.

Have you considered trying a tool like ShaderToy (shadertoy.com)? I am convinced many of the functions you have been looking for are covered in there. Sure, you would need to look into shader coding a little bit, but it is ultimately just another way to describe the mathematics.
In this kind of tool, you have the opportunity to experiment with the formulations and get an understanding for the individual concepts by getting a direct visual feedback.

I want to be clear that I don’t want to discourage you from learning the concepts in a theoretical way. But as you are looking to understand plenty of functionality in Blender, it may be more efficient to ultimately just look at the code.

1 Like

you would need to look into shader coding a little bit, but it is ultimately just another way to describe the mathematics.

I have, the problem is, coding is a way to implement a mathematical function into programs. Programmers try their best to make the programmed functions to be as close as possible to the mathematically intuitive functions, that unfortunately destroys the mathematical intuition in the process, and I personally don’t really enjoy that. I’m more of a designer at the end of the day, I don’t think I can take maths, codes and art at the same time.

For example, for a basic Voronoi Diagram, its intuition simply is: For every Voronoi Seed (Feature Point) on the coordinate system, group all the points (pixels) that are closest to it to form a Voronoi Cell, with infinitely many Voronoi Cells, there exists a complete Voronoi Diagram.

Can programmers implement Voronoi Diagrams into programs using only that intuition? No way. They have to come up with some algorithm that uses a completely different intuition to create the same thing as Voronoi Diagram. And Fortune’s sweep line algorithm is born.

In this kind of tool, you have the opportunity to experiment with the formulations…

So what I shared above is the reason why I stick with what Blender programmers have to offer.

The reason why I asked you is not because of basic algorithms for Voronoi. For those, getting a mathematical description is not very difficult.
You have been looking for insights for Smoothed F1 Voronoi. One piece of it is as far as I remember to compute the Voronoi diagram. The remaining steps are often trial and error by programmers to get something that might be interesting for artists. Those steps are not based on established concepts and as such, it is very difficult to get a mathematical description from it, unless you extract it from the code.

Also, if you had some understanding of coding, it would be quite easy to spot that it is not really that important whether those are actual gradients or not (at least with some experience). Even without experience, it would be very simple to just pick an implementation and literally play around with it to get an intuition of how important which part is for the final result.

I want to emphasize again that I don’t want to discourage you from doing it the way you want and getting a rigorous understanding like that. After having watched what you are doing, I though there might be some value for you in giving programming a try. No problem if you don’t what to or can’t at all, for whatever reason :slight_smile:

1 Like

The reason why I asked you is not because of basic algorithms for Voronoi. For those, getting a mathematical description is not very difficult.

I was just trying to provide an example. Didn’t intend to patronize you, sorry if my words came out to sound insensitive.

I’ve read everything else that you addressed and your advices, they are very helpful. Thank you for your time. I’ll consider getting myself into coding in the future.