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 acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged or ask your own question.