| All posts |
Noise and volumetric shaderspublished on 10/31/2010 12:05 PMAfter the last release I have been looking into adding noise to the visualizer. Gradient noise to be more specific. A lot of nice effects can be created using such a noise so I though it would make a fine addition to the visualizer.
However there is more than one form of gradient noise out there and quite a lot of false information that claim to be gradient noise but isn't. They all also have different pros and cons that needs to be taken into account.
A few of the variant I have looked into are
The most common form of gradient noise and the 'original' gradient noise.
Ken Perlin noticed a number of problems with his original perlin noise and came up with a more hardware friendly noise called simplex noise. However it's slower than perlin noise in less than 3 dimensions but much faster to calculate in over 3 dimensions.
A very efficient noise implementation on the GPU. But has artifacts that can be seen as patterns in the noise as seen in a paper called Implicit procedural textures as a means of saving texture memory.
This noise looks interesting but has the problem that its 4-20 times slower to generate when compared to perlin noise. Tillable and anisotropic is just two of the nice properties the noise has.
I ended up implementing simplex noise in a node that can output a texture in 1 to 3 dimensions. This seems to be the fastest way to generate noise even though it has it's limits. I have also changed so the noise in the expression ports now use simplex noise instead of the perlin noise that they generated before.
Here is a example of what such a noise can look like when you combine it with a volumetric ray tracer. This runs at 30fps on my fan less GeForce 9600GT on a dual monitor setup (3200x1200).
Thanks to a 5 year old paper from nvidia for the idea.
Another example is to create wood using the noise
In other news