为什么噪声算法使用256个排列值



我看到过很多像perlinsimplex noise这样的噪声实现来实现procedural terrain generation,它们似乎都使用256个排列值。为什么会这样?使用超过256会有什么影响呢?

您可以使用任意数量的排列值。选择2的幂的原因是,计算N^2的模更便宜。

原因是:

value % (N^2)

等价于

value & (N^2 - 1)

按位计算&而不是%.

例如在你的代码中你可以这样写:

int v = perm[(x + perm[y % 256]) % 256];

int v = perm[(x + perm[y & 255]) & 255];

两种方法的结果相同,但第二种方法更快。

当然,2的任意次幂都可以用于此。我认为选择256的原因是它是各种伪随机数和低内存消耗之间的一个很好的平衡。

相关内容

  • 没有找到相关文章

最新更新