View Full Version : 4D simplex noise

12-04-2004, 09:05 AM
I finally managed to get a 4D version of Perlin's simplex noise working in GLSL. The simplex ordering was the trickiest part, but the result clearly shines in performance compared to classic 4D noise, which I also implemented for comparison.

Simplex noise is about twice as fast in 4D!

Zip archive with Win32 executable demo and full source (http://www.itn.liu.se/~stegu/TNM022-2004/source/GLSL-noise.zip)

Note that you can test all six flavors of noise (2D, 3D, 4D, classic and simplex) by commenting out and uncommenting lines in main() at the end of the fragment shader file and simply restarting the program.

This is the last update from me for a while, the analytic derivative computation will have to wait. If anyone else feels up to that task, please do it and share the result with the rest of us.

12-05-2004, 04:38 AM
What's "simplex noise"? Is it the same thing as PErlin's "Improved noise"? Anyway, thanks for the code!

12-05-2004, 07:20 PM
nice work stefan, i might use this

12-09-2004, 10:38 AM

The 4D version works great with 641 fps at default resolution on my X800XT PE.


12-10-2004, 08:31 AM
"Simplex noise" is more than the small fixes that
was named "improved noise", it's a new creation
from Ken Perlin, described (in a somewhat
confusing context) by himself here:


and by me, with graphs and figures and some
more comprehensible code, here:


It's better, faster, nicer looking and suitable
for very inexpensive hardware implementation,
but it's quite similar in appearance and has the
same use as classic Perlin noise.

12-11-2004, 05:06 AM
Thanks, your pdf was really clear and well written, that explained simplex noise well.

12-12-2004, 08:15 PM
Thanks for the write up!

Another example of simplex noise is by Geoff Wyvill and Kevin Novins from 1999 Siggraph Sketches and Applications:
www.cs.auckland.ac.nz/~novins/Publications/Wyvill99.html. (http://www.cs.auckland.ac.nz/~novins/Publications/Wyvill99.html.)

The following based on Perlin's course notes helped me at least figure out the "hairy" factors. Given n = dimension of noise:
f = sqrt(n + 1);
skew = (f - 1) / n
deskew = (f - 1) / (nf)

02-01-2005, 12:53 PM
Yep, that's the "hairy factors" all right.
I also found Perlin's course notes to help
me out there. I do not pride myself of being
all that knowledgeable in N-D geometry when
N gets larger than 3...

02-02-2005, 07:38 PM
Does anyone know exactly why this is so slow (0.1 FPS) on Radeon 9800 level hardware?