Perlin style noise sped up with SIMD instructions
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
FastNoise
.gitignore
LICENSE.md
README.md

README.md

FastNoise SIMD

Ultra fast Perlin and Simplex noise functions sped up with SSE2,SSE4, and AVX2 instructions. If you are interested in this you may want to refer to: https://github.com/Auburns/FastNoiseSIMD A similarly named library inspired by this one that is more user friendly and even faster.

FastNoise.h / cpp

Contains SIMD constants, constant lookup tables, and SIMD intrinsic helper #defines which allow you to switch between SSE2, SSE4, and AVX2 builds by adjusting the #defines at the top. The SIMD typedef allows us to abstract the __m128 and __m256 types for each case. It should not be too hard to adapt this to AVX512 or other instruction sets, just add a new set of #defines for the instructions in question, and a new typedef for SIMD. Please feel free to add other SIMD platforms and pull request!

FastNoise3d.h / cpp

The base Perlin and Simplex noise functions, provided in both SIMD and non SIMD form.

FractalNoise3d.h / cpp

Various fractal noise variants, in SIMD and non SIMD form.These methods iterate overthe noise functions at different scales, providing very detailed and interesting patterns.

NoiseUtility.h / cpp

Utility functions to grab large chunks of noise at a time. The Sphere methods will create noise that can be texture mapped to a sphere. Methods to return 2d noise for flat textures and methods that accept a set of coordinates and return the noise would be next up. Feel free to pull request that!