This repository has been archived by the owner on Apr 2, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 87
Home
Jordan Peck edited this page Sep 7, 2016
·
10 revisions
#Getting Started Since SIMD functions work by processing multiple values at once this library functions by returning sets of data rather than single values. A set is returned in the form of a pointer to an array of floats.
Example of how to generate a set of data, process it, then free it.
#include "FastNoiseSIMD.h"
FastNoiseSIMD* myNoise = FastNoiseSIMD::NewFastNoiseSIMD();
// Get a set of 16 x 16 x 16 Simplex Fractal noise
float* noiseSet = myNoise->GetSimplexFractalSet(0, 0, 0, 16, 16, 16);
int index = 0;
for (int x = 0; x < 16; x++)
{
for (int y = 0; y < 16; y++)
{
for (int z = 0; z < 16; z++)
{
ProcessVoxelData(x, y, z, noiseSet[index++]);
}
}
}
FastNoiseSIMD::FreeNoiseSet(noiseSet);
Important note: After including the FastNoise SIMD files in your project set C++ code generation to use /arch:AVX(2) only on FastNoiseSIMD_avx2.cpp, or remove "#define FN_COMPILE_AVX2" from FastNoiseSIMD.h to not compile AVX2 support.
Note: The size of the Z dimension must be above 8 and if it is a multiple of 8, there is a slight performance boost