-
Notifications
You must be signed in to change notification settings - Fork 0
Home
You have already seen the very popular interpolated noise generation methods, Value Noise and Perlin Noise. Below is a image of the traditional value noise.
It is more common to see this in the fBm format, but I am using just one layer so the differences can be compared easier. The problem I had with this noise is that all of the values appear on an obvious grid, which is especially annoying on lower octaves.
I decided to try and fix this problem by distorting the center points of each value. I thought about calling it distorted noise, but that would easily get confused with other methods so I decided to call it Deviant Noise instead. This is the result:
In the above image the offset might be too much for some uses, but you can adjust the strength to whatever value you like. Here is an example with half as much distortion:
With this new method applied to terrain you can get sharper cliffs and more gradual slops without any additional processing.
There is another parameter that I added to make the noise even more interesting, now every cell has a height, position, and exponent. The exponent is blended just like the height then the original value is raised to the exponent, here are the results for exponents between 0.5 and 2.0:
When using the exponents the perceived influence each cell has on each point can be varied, having even more interesting features of terrain using only 1 octave. In case you were wondering here is a comparison between 6 octaves of regular noise and 6 octaves of Exponentiated Deviated Noise(both use the same height value for each cell).
As you can see very sharp cliffs can arise pretty often, but this can be avoided by choosing a lower deviation parameter(the above image uses 1.0). Only values between 0.0 and 1.0 should be used, but a negative value between -1.0 and 0.0 will have nearly identical results as the offsets are chosen between -1.0 and 1.0. Choosing a value that has an absolute value exceeding 1.0 will result in some pretty strange results.
If you want to use this, my implementations are available on the source page. All of my implementations are in the public domain so you can use them for anything. Implementations are available in the following languages:
- Java





