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?


migrated from stackoverflow.com Nov 1 '16 at 20:29

This question came from our site for professional and enthusiast programmers.

  • $\begingroup$ stackoverflow.com/questions/1313259/tiling-simplex-noise $\endgroup$ – Christophe Roussy Oct 27 '16 at 8:26
  • 3
    $\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 '16 at 1:50
  • 4
    $\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 '16 at 23:05
  • 1
    $\begingroup$ You might want to also insure that all dim are returning full range values..some implementation do not. $\endgroup$ – MB Reynolds Nov 3 '16 at 8:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.