Maximum and minimum values of procedural textures

A problem I’ve been running into quite a bit is the fact that the noise and musgrave textures don’t seem to have clearly defined maximum and minimum values. I’d expect all of the values from the factor outputs from every procedural texture to fit exactly between 1 and 0. It seems to me however that the noise texture’s limits are somewhere between 0.2 and 0.8 and the musgrave’s (multifractal) between 0 and 4.

I can imagine that this has something to do with the fact that they’re randomly generated and that they just might not even have any clearly defined limits. This would mean that the limits I’ve observed are a result of something like: higher or lower values having a lower probability of appearing. This is just a guess however.

It would be quite useful to have some clear maxima and minima when it comes to these textures for some of the math. For now I could just use the limits I gave above since they seem to work fine. I’d still be interested to figure out however how all of this works exactly so it would be greatly appreciated if anyone could provide me with an explanation or maybe a source that could help me find an explanation myself.

For noise I typically add a contrast node and a dummy color mixer to clamp it (for safety and mathematical exploitation).
If using musgrave for bump, I rarely do much other to it as bump doesn’t care about range.
For controlled uses of musgrave, and to check it behaves nicely, I use a custom fValueNormalizer (f for float) node that is always linked in as a library of useful functions:



While adjusting, set preview to 1 - it will highlight n<0 as black, n>1 as white, and 0<n<1 as grey.
Some musgrave modes and settings can get you stupid ranges (like ±100000) if you don’t know what you’re doing - which includes most of us :slight_smile:

But previewing it as a bump prior to scaling it to range is very useful.

Also, be careful on using musgrave with object coords without adding some arbitrary vector to it; it can behave weirdly if somewhere around zero is on the surface.

Your setup seems quite useful, thanks a lot.

You can also read the papers from Musgrave and Perlin… I’m sure they talk about the functions limits somewhere there.

I’ve been looking for answers, but haven’t found anything yet.

I decided to change up your setup a bit:



It has similar functionality but it doesn’t need a clip preview input.