All Projects → Auburn → Fastnoisesimd

Auburn / Fastnoisesimd

Licence: mit
C++ SIMD Noise Library

Projects that are alternatives of or similar to Fastnoisesimd

Simd
C++ image processing and machine learning library with using of SIMD: SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX-512, VMX(Altivec) and VSX(Power7), NEON for ARM.
Stars: ✭ 1,263 (+133.03%)
Mutual labels:  simd, sse, neon, avx2
Directxmath
DirectXMath is an all inline SIMD C++ linear algebra library for use in games and graphics apps
Stars: ✭ 859 (+58.49%)
Mutual labels:  simd, sse, neon, avx2
Boost.simd
Boost SIMD
Stars: ✭ 238 (-56.09%)
Mutual labels:  simd, sse, neon, avx2
Libsimdpp
Portable header-only C++ low level SIMD library
Stars: ✭ 914 (+68.63%)
Mutual labels:  simd, sse, neon, avx2
Simde
Implementations of SIMD instruction sets for systems which don't natively support them.
Stars: ✭ 1,012 (+86.72%)
Mutual labels:  simd, sse, neon, avx2
Vc
SIMD Vector Classes for C++
Stars: ✭ 985 (+81.73%)
Mutual labels:  simd, sse, neon, avx2
Quadray Engine
Realtime raytracer using SIMD on ARM, MIPS, PPC and x86
Stars: ✭ 13 (-97.6%)
Mutual labels:  simd, sse, neon, avx2
Unisimd Assembler
SIMD macro assembler unified for ARM, MIPS, PPC and x86
Stars: ✭ 63 (-88.38%)
Mutual labels:  simd, sse, neon, avx2
Base64simd
Base64 coding and decoding with SIMD instructions (SSE/AVX2/AVX512F/AVX512BW/AVX512VBMI/ARM Neon)
Stars: ✭ 115 (-78.78%)
Mutual labels:  simd, sse, neon, avx2
utf8
Fast UTF-8 validation with range algorithm (NEON+SSE4+AVX2)
Stars: ✭ 60 (-88.93%)
Mutual labels:  neon, simd, avx2
Mipp
MIPP is a portable wrapper for SIMD instructions written in C++11. It supports NEON, SSE, AVX and AVX-512.
Stars: ✭ 253 (-53.32%)
Mutual labels:  simd, sse, neon
Libxsmm
Library for specialized dense and sparse matrix operations, and deep learning primitives.
Stars: ✭ 518 (-4.43%)
Mutual labels:  simd, sse, avx2
Turbo Run Length Encoding
TurboRLE-Fastest Run Length Encoding
Stars: ✭ 212 (-60.89%)
Mutual labels:  simd, sse, avx2
Turbo-Histogram
Fastest Histogram Construction
Stars: ✭ 44 (-91.88%)
Mutual labels:  sse, simd, avx2
Simdjson
Parsing gigabytes of JSON per second
Stars: ✭ 15,115 (+2688.75%)
Mutual labels:  simd, neon, avx2
simdutf8
SIMD-accelerated UTF-8 validation for Rust.
Stars: ✭ 426 (-21.4%)
Mutual labels:  neon, simd, avx2
simdutf
Unicode routines (UTF8, UTF16): billions of characters per second.
Stars: ✭ 108 (-80.07%)
Mutual labels:  neon, simd, avx2
Nsimd
Agenium Scale vectorization library for CPUs and GPUs
Stars: ✭ 138 (-74.54%)
Mutual labels:  simd, neon, avx2
ternary-logic
Support for ternary logic in SSE, XOP, AVX2 and x86 programs
Stars: ✭ 21 (-96.13%)
Mutual labels:  sse, simd, avx2
Std Simd
std::experimental::simd for GCC [ISO/IEC TS 19570:2018]
Stars: ✭ 275 (-49.26%)
Mutual labels:  simd, sse, neon

discord

Depreciated

This version of FastNoise SIMD is now depreciated, please look into using FastNoise 2 which is the successor to this library.

FastNoise SIMD

FastNoise SIMD is the SIMD implementation of my noise library FastNoise. It aims to provide faster performance through the use of intrinsic(SIMD) CPU functions. Vectorisation of the code allows noise functions to process data in sets of 4/8/16 increasing performance by 700% in some cases (Simplex).

After releasing FastNoise I got in contact with the author of FastNoise SIMD (naming is coincidence) and was inspired to work with SIMD functions myself. Through his code and discussions with him I created my implementation with even more optimisation thanks to the removal of lookup tables.

Runtime detection of highest supported instruction set ensures the fastest possible performance with only 1 compile needed. If no support is found it will fallback to standard types (float/int).

Features

  • Value Noise 3D
  • Perlin Noise 3D
  • Simplex Noise 3D
  • Cubic Noise 3D
  • Multiple fractal options for all of the above
  • White Noise 3D
  • Cellular Noise 3D
  • Perturb input coordinates in 3D space
  • Integrated up-sampling
  • Easy to use 3D cave noise

Credit to CubicNoise for the cubic noise algorithm

Supported Instruction Sets

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

Tested Compilers

  • MSVC v120/v140
  • Intel 16.0
  • GCC 4.7 Linux
  • Clang MacOSX

Wiki

Docs

Related repositories

FastNoise SIMD Preview

I have written a compact testing application for all the features included in FastNoiseSIMD with a visual representation. I use this for development purposes and testing noise settings used in terrain generation. The fastest supported instruction set is also reported.

Download links can be found in the Releases Section.

Simplex Fractal

Performance Comparisons

Using default noise settings on FastNoise SIMD and matching those settings across the other libraries where possible.

Timings below are x1000 ns to generate 32x32x32 points of noise on a single thread.

  • CPU: Intel Xeon Skylake @ 2.0Ghz
  • Compiler: Intel 17.0 x64
Noise Type AVX512 AVX2 SSE4.1 SSE2 FastNoise LibNoise
White Noise 7 9 16 29 141
Value 92 152 324 436 642
Perlin 147 324 592 795 1002 1368
Simplex 129 294 548 604 1194
Cellular 851 1283 2679 2959 2979 58125
Cubic 615 952 1970 3516 2979

Comparision of fractals and sampling performance here.

Examples

Cellular Noise

Cellular Noise

Cellular Noise

Cellular Noise

Cave noise example

Fractal Noise

Simplex Fractal Billow

Perlin Fractal Billow

Value Noise

Value Noise

White Noise

White Noise

Perturb

Perturbed Cellular Noise

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].