我正在寻求将3D Perlin噪声算法调整到更低的尺寸,但是我遇到了梯度函数的问题,因为我不完全理解这个推理.
原始的Perlin渐变函数有四个参数:a hash和三维坐标(x, y, z).函数的结果将根据hash mod 16下面的值返回.
0: x + y1: -x + y2: x - y3: -x - y4: x + z5: -x + z6: x - z7: -x - z8: y + z9: -y + z10: y - z11: -y - z12: y + x13: -y + z14: y - x15: -y - z返回值0来11制作一种模式,因为每个组合都表示一次.然而,最后四个是重复的.他们为什么选择适合最后四个回报值?什么是两个(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)