Perlin噪声梯度函数

Mat*_*iak 7 perlin-noise

我正在寻求将3D Perlin噪声算法调整到更低的尺寸,但是我遇到了梯度函数的问题,因为我不完全理解这个推理.

原始的Perlin渐变函数有四个参数:a hash和三维坐标(x, y, z).函数的结果将根据hash mod 16下面的值返回.

  • 0: x + y
  • 1: -x + y
  • 2: x - y
  • 3: -x - y
  • 4: x + z
  • 5: -x + z
  • 6: x - z
  • 7: -x - z
  • 8: y + z
  • 9: -y + z
  • 10: y - z
  • 11: -y - z
  • 12: y + x
  • 13: -y + z
  • 14: y - x
  • 15: -y - z

返回值011制作一种模式,因为每个组合都表示一次.然而,最后四个是重复的.他们为什么选择适合最后四个回报值?什么是两个(x, y)和一个(x)维度的类似情况?

cub*_*ube 10

......迟到的答案比没有好?;-)

grad"改进的噪声"实现中的函数计算向量x,y,z和伪随机梯度向量之间的点积.

在该实现中,从12个选项中选择梯度向量.它们降低了选择的均匀性并添加了数字12和14,因为它hash & 15比它更快hash % 12

对于2D perlin噪声,我只使用了4个梯度向量,没有任何明显的问题,如下所示:

return ((hash & 1) ? x : -x) + ((hash & 2) ? y : -y);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的回答!我总是非常感谢那些为了挽救旧的遗忘问题而匆匆忙忙的英雄们. (2认同)