好吧,有在网络上可以找到很多的柏林和单纯噪声之间的比较。 可是我真的找不到一个地方有两个之间的三个维度的简单处理时间比较,这是我最感兴趣的我读过, 那流行的PDF (甚至了解大部分- !耶),但我不能回答这个简单的问题:哪一个是3D更快,假设一个最佳的执行?
这个计算器问题的答案表明,单纯是我的情况相当明显的赢家。 当然,还有其他资源,声称正好相反。
但是,一般的说法似乎是Perlin杂度为O(2 ^ N)的复杂性,而单纯为O(N ^ 2)。 这对于3D将意味着8培林和9单纯。 但是 ,在一些网站,我发现,单纯实际上是O(N)的声明。 那么,这里是真实的,什么是真正的3D意味着速度?
我很茫然这里,我真的很感兴趣的主要是3D应用程序(随机地形生成包括洞穴)的使用,我不能找到一个很好的答案,至于哪一个,如果我想这是一样快,我应该使用可能。
因此,也许有人可以帮助我在这里:)
1) http://www.fundza.com/c4serious/noise/perlin/perlin.html
2) http://www.6by9.net/b/2012/02/03/simplex-noise-for-c-and-python
在“我的笔记本电脑”执行时间使用这两个实施噪声的8M样品:(克++ -O6)
1)每秒2)0.607s即13.2M每秒OPS 1.389s即5.7M OPS
但...
如果真的,真的去了优化,应该研究
- 更高级别的优化(真正在每个阶段完成:有没有办法?)
- 分行
- 记忆模式
- 依赖
- LUT大小
- 需要单独的算术运算,其延迟和吞吐量
- 使用SIMD并行性开采
- 生存变量的数
单纯噪声更好看,但不一定快。 这一切都依赖于实现。 作为一个经验法则,它是“差不多的速度”,而且不应该有来自使用变种如果你的代码是很好的一大损失。
请注意,大多数我所编写的代码是围绕浮在互联网上的不优化速度,但是为了更写。 该GLSL实现由伊恩·麦克尤恩和我从几年前的合理优化速度,但它们对硬件这是现在已经过时了优化,和GLSL的是在当时当前版本。 到GLSL重要的变化,因为然后包括整数类型和逐位逻辑操作,这使得一些散列函数尴尬和不必要地复杂,。 需要有一个置换多项式是由缺乏GLSL逐位逻辑运算符的动机。 它仍然在GLSL缺乏对WebGL的,但所有其他平台现在支持的整数。
在4D单纯的噪音主要是比4D经典噪音更快。 所有其他情况下,依赖于语言,平台和代码优化的量。
单纯噪声具有简单的解析导数。 经典的噪音是在这方面更棘手。 在许多情况下,如抗混叠和地形测绘,解析衍生物是非常有用的。