#noise #simplex-noise #simd #perlin-noise #3d #fractal #cellular

fastnoise-simd

fastnoise-simd-bindings crate的安全包装

3个不稳定版本

0.1.1 2020年9月28日
0.1.0 2020年5月14日
0.0.1 2020年5月12日

#1909 in 算法

MIT 许可证

190KB
4.5K SLoC

C++ 2.5K SLoC // 0.1% comments Rust 1K SLoC // 0.0% comments C 748 SLoC // 0.4% comments

FastNoise SIMD

主要对fastnoise-simd-bindings进行安全包装,而FastNoiseSIMDfastnoise-simd-bindings的绑定。

FastNoise SIMD是我噪声库FastNoise的SIMD实现。它旨在通过使用内建(SIMD)CPU函数来提供更快的性能。代码的向量化使得噪声函数可以以4/8/16的集合处理数据,在某些情况下(Simplex)性能提高了700%。

在发布FastNoise之后,我与FastNoise SIMD(命名巧合)的作者取得联系,并受到启发开始使用SIMD函数。通过他的代码和他的讨论,我创建了自己的实现,并通过删除查找表进行了更多的优化。

运行时检测最高支持的指令集,确保仅需要编译一次即可实现最快的性能。如果找不到支持,它将回退到标准类型(float/int)。

功能

  • 值噪声3D
  • Perlin噪声3D
  • Simplex噪声3D
  • 立方噪声3D
  • 以上所有选项的多个分形选项
  • 白色噪声3D
  • 细胞噪声3D
  • 在3D空间中扰动输入坐标
  • 集成上采样
  • 易于使用的3D洞穴噪声

感谢CubicNoise提供立方噪声算法

支持的指令集

  • ARM NEON
  • AVX-512F
  • AVX2 - FMA3
  • SSE4.1
  • SSE2

依赖

~0–1.9MB
~37K SLoC