BlenderDiplom Musgrave Texture in Cycles by Example

Kenneth F. Musgrave came up with an algorithm to create procedural patterns suitable for creating procedural terrain. His results actually exceed this purpose and can produce some very interesting patterns. His methods are implemented in Cycles but they are largely overlooked. For us this was due to the standard settings looking very boring and fiddling with the values did not seem to change much. There are actually two reasons why testing the potential of this texture can be quite frustrating. A lot of combination of values produce either black, white or boring results. And in addition to that some of the values are completely ignored by the node, depending on the mode, even though they are not grayed out.
There is a video about the musgrave texture coming here very soon…


Fig. 5.8) Renderings of the musgrave texture set to fBM
a) default values, detail: 2.2, dimension: 2, lacunarity 1.
b) detail: 16, dimension: 2, lacunarity 1.
c) detail: 16, dimension: 0.5, lacunarity 10.
d) detail: 5, dimension: 0, lacunarity 0.7.
e) detail: 5, dimension: 10, lacunarity 0.7.
fBM is the default setting and it produces white blobs in a black ocean. Toying around with the values will show you that it can also produce much smaller dots or larger white areas with hard edges, but that’s about it. This mode completely ignores the fields for offset and gain.If you click on fBM a drop down menu will pop up (or drop down, as you prefer) and you can choose from other algorithms. Let’s have a look at multifractal first. In my opinion it is a lot more more interesting than fBM, although it also ignores gain. With some Rather extreme combinations of values it can still produce some very decent textures.
Fig. 5.11) Renderings of the Musgrave texture set to multifractal.
a) detail: 11, dimension: 1.5, lacunarity: 0.9.
b detail: 11, dimension: 2.1 lacunarity: 0.9.
c) detail: 13, dimension: 2.2 lacunarity: 0.9.
d) detail: 10, dimension: 17.5 lacunarity: 0.9.
e) detail: 13.4, dimension: 8.5 lacunarity: 0.86.Even though hybrid multifractal sounds more interesting than the plain version, it is not necessarily more versatile. But with the right combination you can still produce some unexpected patterns.
Fig. 5.12) Musgrave texture set to hybrid multifractal.
a) default values, detail: 2.2, dimension: 2, lacunarity: 1.
b) offset increased to 0.6. Note how more white parts occur as the sea-level falls.
c) detail: 0.9, dimension: 0 lacunarity: 20. The noise only works if the detail value behind the decimal is high (in this case 9 - Note: 0.19 is not greater than 0.3)
d) detail: 15.0, dimension: 0 lacunarity: 20. If the detail value behind the decimal is too low (0 in this case), the lacunarity has no effect.
e) detail: 7, dimension: 2.4 lacunarity: 0.56.Another option from the drop down is hetero terrain. Even though it does not ignore offset, it is still hard to really make it look interesting. It is – you guessed it – intended to create procedural heterogeneous terrain. It’s the only version that offers noise confined to the inside of the blobs, which is very handy for some jagged islands. The offset shifts the sea level.
Fig. 5.9) Musgrave texture set to hetero terrain, upper row: texture used for the color of an emission shader, lower row: texture with the same settings used as the displace factor of a diffuse material.
a) default values, detail: 2.2, dimension: 2, lacunarity: 1, offset: 0.
b) offset raised to 0.2. Note how more white parts occur as the sea-level falls.
c) detail: 4, dimension: 0, lacunarity: 2.2, offset: 0. Note how the noise of the lacunarity stays inside the islands.
d) detail: 5, dimension: 2, lacunarity: 0.7, offset: 0
e) detail: 5, dimension: 10, lacunarity: 0.8, offset: 0. Since this setup created pixels between -600 and 11,000 intensity, the result for the displacement was clipped using a color ramp, instead of the math node, with the default settings.
I saved the best for last, so here it is: the ridged multifractal. Right out of the box it already looks different from the others and it does not ignore any of the values. Still randomly fiddling around with the values can be a bit frustrating, because, for example there is no difference between a detail value of 4.1 and 5. Only once you step past the next whole number the detail actually makes a difference. Also offset values lower than -0.5 and greater than 0.5 usually result in completely black or white textures.
Fig. 5.13) Musgrave texture set to ridged multifractal.
a) default values, detail: 2.2, dimension: 2, lacunarity: 1, offset: 0, gain: 1
b) offset increased to 0.6. Note how it does not raise the sea-level, but offsets the phase (not mathematically), so it somewhat inverts the texture.
c) detail 10, dimension 0.2, lacunarity: 1.7, offset: 0, gain: 25.
d) detail: 9, dimension: 0, lacunarity: 2, offset: 0.7, gain: 3.
e) detail 10, dimension 1.5, lacunarity: 1.05, offset -0.05, gain 14.
Unless we missed something on the web, the Musgrave texture is the most under-appreciated of the procedurals, but getting interesting results off it is rather tedious. That is why we wrote a script that rendered a couple of thousand images with random settings for this texture, you can download them here.For a much more detailed explanation of the different values of this texture and so much more, consider The Cycles Encyclopedia.

Visit Tutorial…

Thank you Gottfried, I always struggled with the Musgrave texture. Now I can dive into it.

Thank you, I’ve used the Musgrave texture quite a lot, but always had to spend ages tweaking things to get it looking more like I wanted. This is a really good reference to start working from.

Wow, excellent explanation and its great to see some cool examples. Thank you.

Wow, More tutorials like this, please :slight_smile: very useful, indeed!

Hi,
nice test… but
my opinion is that the Cycles implementation of the Musgrave texture is not very well done,
a bit confusing for people who dont know what to do with those parameters.

The default settings are wrong… have a look at Musgrave in Blender Internal.
In BI the settings are: Dimension 1.0, Lacunarity 2.0 and Offset 1.0
this is the correct way.
In Cycles its just the other way around: Dimension 2.0, Lacunarity 1.0, Offset 0.0
this gives bad/unpredictable results.

Also in BI not all parameters are always vissible,
Offset and Gain have no use with the fBm and mutiFractal types,
heteroTerrain uses Offset, not Gain
And you better not set values too low or at zero.

You can also use the ANT Landscape addon to experiment with those textures.

From the python API: https://www.blender.org/api/blender_python_api_2_78_0/mathutils.noise.html
H (dimension) – The fractal dimension of the roughest areas.
lacunarity – The gap between successive frequencies.
octaves – The number of different noise frequencies used.
offset – The height of the terrain above ‘sea level’.
gain – Scaling applied to the values.

Greetz, J



The musgrave texture can also be quite useful for rust, bark, and colored patches for things like grass. Usually I keep the dimension value fairly low, but usually not at 0.

In addition, such details can be done in a way where there’s no apparently repetition or ‘procedural’ look due to being able to lower the scale value to a very low number while keeping a high amount of detail.

Also to provide a hint, use the bright/contrast node afterward to get more of the texture in the 0 to 1 range (which can unlock more of its potential).