I just tried using this approach to create a tiling 2d simplex noise function with Gustavson's java implementation. The result tiled, but the texture seemed muddy / washed out.

I decided to compare the result of using the 2d, 3d & 4d versions to make a 2d texture by holding any 'extra' dimension parameters at zero. The 4d output looked the same as my tiled 2d output. Furthermore, I noticed a trend: as the dimensions increase, the noise starts to drift away from the min & max toward the average. Here are the results along with their histograms:

enter image description here enter image description here enter image description here

I ran across this post discussing some artifacts in Gustavson's implementation & wondered if that might be contributing to the problem, so I tried using OpenSimplex noise instead & got very similar results.

What's going on here? I'd like to use the 4d simplex noise to make a tiling 2d texture that looks more like the regular 2d simplex noise. If necessary I can try to massage the output, but that seems like hack & I'd rather treat the problem rather than the symptoms if possible.

Again, just to clarify, I'm asking: why does the dimensionality seem to affect the final 2D as illustrated?

  • $\begingroup$ stackoverflow.com/questions/1313259/tiling-simplex-noise $\endgroup$
    – Christophe Roussy
    Oct 27, 2016 at 8:26
  • 5
    $\begingroup$ From Wikipedia: "Simplex noise has no noticeable directional artifacts (is visually isotropic), though noise generated for different dimensions are visually distinct (e.g. 2D noise has a different look than slices of 3D noise, and it looks increasingly worse for higher dimensions[citation needed]).", so sounds like what you got $\endgroup$
    – JarkkoL
    Nov 2, 2016 at 1:50
  • 5
    $\begingroup$ Also from wikipedia "For higher dimensions, n-spheres around n-simplex corners are not densely enough packed, reducing the support of the function and making it zero in large portions of space." $\endgroup$
    – Alan Wolfe
    Nov 2, 2016 at 23:05
  • 1
    $\begingroup$ You might want to also insure that all dim are returning full range values..some implementation do not. $\endgroup$ Nov 3, 2016 at 8:56
  • $\begingroup$ staffwww.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf says "Note in particular that a 3D section of 4D simplex noise is different from 3D simplex noise. This is the visual result of moving from the time-consuming interpolation one dimension at a time to a fast, direct summation." but they all seem to use summation so I don't understand $\endgroup$
    – endolith
    Mar 13, 2021 at 6:20


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.