Code Monkey home page Code Monkey logo

fastnoisesimd's People

Contributors

auburn avatar qulogic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fastnoisesimd's Issues

Compile with Mingw

Hello,

Actually, there is too much ifdef _WIN32 in your sources, so it doesn't work.
Even if some may be justified, some of them should be ifdef MSVC

I tried with some changes until I can compile it with mingw, but I had a beautifull error 0x000005 :

Process finished with exit code -1073741819 (0xC0000005)

So I am a litle lost. It happened with this line :

    float* results = noiseSIMD->GetPerlinSet(0, 0, 0, 200, 1, 200);

Originally posted by @NicolasRicard in #37 (comment)

Feature request: 4D Noise

I saw that your FastNoise library supports certain noise functions up to 4D. Would it be possible to implement 4D in FastNoiseSIMD?
4D implementations would help in creating seamless tiling 2D textures. (If more dimensions are possible it could even produce tiling in 3D)

"Illegal instruction" when compiling program using library

I still can not get it to work, I'm now experiencing a flaw in segmentation when trying to start a new class in my module. I get this error while running my program: https://pastebin.com/V6tMFJ3F

I have this pointer:

FastNoiseSIMD* myNoise;

the builder of my class:

GDFastNoiseSIMD::GDFastNoiseSIMD(){

    myNoise = FastNoiseSIMD::NewFastNoiseSIMD();

}

and thus I call the methods:

myNoise->GetSeed();

Am I doing something wrong?

The error is accusing these lines below:

https://github.com/Auburns/FastNoiseSIMD/blob/master/FastNoiseSIMD/FastNoiseSIMD.h#L98

https://github.com/Auburns/FastNoiseSIMD/blob/master/FastNoiseSIMD/FastNoiseSIMD.cpp#L207

https://github.com/Auburns/FastNoiseSIMD/blob/master/FastNoiseSIMD/FastNoiseSIMD_internal.cpp#L1028

I also created an empty program to test and confirm the error "Illegal instruction", probably accusing the segmentation failure. Follow the zip with the program and everything needed to reproduce the problem.

test_fast_simd.zip

Accessing in Node.JS

I want to write programs that use this in node.js. I know that node.js is capable of doing this I just don't know how.
Do you plan on adding support in the future?

Failure to compile with g++ 6.2.1 or clang++ 3.8

Firstly, #3 or some equivalent needs to be applied. Secondly, as a test, I just ran this (after commenting out the AVX2 setting):

$ for f in *.cpp; do
  echo $f
  g++ -c $f
done

which produces the following errors:

FastNoiseSIMD_avx2.cpp
FastNoiseSIMD.cpp
FastNoiseSIMD_internal.cpp
FastNoiseSIMD_sse2.cpp
FastNoiseSIMD_sse41.cpp
In file included from FastNoiseSIMD_sse41.cpp:37:0:
/usr/lib/gcc/x86_64-redhat-linux/6.2.1/include/smmintrin.h: In function ‘SIMDi_L2 L2_FUNC_Hash(const SIMDi_L2&, const SIMDi_L2&, const SIMDi_L2&, const SIMDi_L2&)’:
/usr/lib/gcc/x86_64-redhat-linux/6.2.1/include/smmintrin.h:326:1: error: inlining failed in call to always_inline ‘__m128i _mm_mullo_epi32(__m128i, __m128i)’: target specific option mismatch
 _mm_mullo_epi32 (__m128i __X, __m128i __Y)
 ^~~~~~~~~~~~~~~
In file included from FastNoiseSIMD_sse41.cpp:40:0:
FastNoiseSIMD_internal.cpp:514:76: note: called from here
  hash = SIMDi_MUL(SIMDi_MUL(SIMDi_MUL(hash, hash), SIMDi_NUM(60493)), hash);
                                                                            ^
In file included from FastNoiseSIMD_sse41.cpp:37:0:
/usr/lib/gcc/x86_64-redhat-linux/6.2.1/include/smmintrin.h:326:1: error: inlining failed in call to always_inline ‘__m128i _mm_mullo_epi32(__m128i, __m128i)’: target specific option mismatch
 _mm_mullo_epi32 (__m128i __X, __m128i __Y)
 ^~~~~~~~~~~~~~~
In file included from FastNoiseSIMD_sse41.cpp:40:0:
FastNoiseSIMD_internal.cpp:208:39: note: called from here
 #define SIMDi_MUL(a,b) _mm_mullo_epi32(a,b)
                        ~~~~~~~~~~~~~~~^~~~~
FastNoiseSIMD_internal.cpp:514:9: note: in expansion of macro ‘SIMDi_MUL’
  hash = SIMDi_MUL(SIMDi_MUL(SIMDi_MUL(hash, hash), SIMDi_NUM(60493)), hash);
         ^~~~~~~~~
In file included from FastNoiseSIMD_sse41.cpp:37:0:
/usr/lib/gcc/x86_64-redhat-linux/6.2.1/include/smmintrin.h:326:1: error: inlining failed in call to always_inline ‘__m128i _mm_mullo_epi32(__m128i, __m128i)’: target specific option mismatch
 _mm_mullo_epi32 (__m128i __X, __m128i __Y)
 ^~~~~~~~~~~~~~~
In file included from FastNoiseSIMD_sse41.cpp:40:0:
FastNoiseSIMD_internal.cpp:208:39: note: called from here
 #define SIMDi_MUL(a,b) _mm_mullo_epi32(a,b)
                        ~~~~~~~~~~~~~~~^~~~~
FastNoiseSIMD_internal.cpp:514:9: note: in expansion of macro ‘SIMDi_MUL’
  hash = SIMDi_MUL(SIMDi_MUL(SIMDi_MUL(hash, hash), SIMDi_NUM(60493)), hash);
         ^~~~~~~~~
In file included from FastNoiseSIMD_sse41.cpp:37:0:
/usr/lib/gcc/x86_64-redhat-linux/6.2.1/include/smmintrin.h:326:1: error: inlining failed in call to always_inline ‘__m128i _mm_mullo_epi32(__m128i, __m128i)’: target specific option mismatch
 _mm_mullo_epi32 (__m128i __X, __m128i __Y)
 ^~~~~~~~~~~~~~~
In file included from FastNoiseSIMD_sse41.cpp:40:0:
FastNoiseSIMD_internal.cpp:244:37: note: called from here
 #define SIMDi_ADD(a,b) _mm_add_epi32(a,b)
                        ~~~~~~~~~~~~~^~~~~
FastNoiseSIMD_internal.cpp:512:9: note: in expansion of macro ‘SIMDi_ADD’
  hash = SIMDi_ADD(SIMDi_MUL(z, SIMDi_NUM(zPrime)), hash);
         ^~~~~~~~~
In file included from FastNoiseSIMD_sse41.cpp:37:0:
/usr/lib/gcc/x86_64-redhat-linux/6.2.1/include/smmintrin.h:326:1: error: inlining failed in call to always_inline ‘__m128i _mm_mullo_epi32(__m128i, __m128i)’: target specific option mismatch
 _mm_mullo_epi32 (__m128i __X, __m128i __Y)
 ^~~~~~~~~~~~~~~
In file included from FastNoiseSIMD_sse41.cpp:40:0:
FastNoiseSIMD_internal.cpp:244:37: note: called from here
 #define SIMDi_ADD(a,b) _mm_add_epi32(a,b)
                        ~~~~~~~~~~~~~^~~~~
FastNoiseSIMD_internal.cpp:511:9: note: in expansion of macro ‘SIMDi_ADD’
  hash = SIMDi_ADD(SIMDi_MUL(y, SIMDi_NUM(yPrime)), hash);
         ^~~~~~~~~
In file included from FastNoiseSIMD_sse41.cpp:37:0:
/usr/lib/gcc/x86_64-redhat-linux/6.2.1/include/smmintrin.h:326:1: error: inlining failed in call to always_inline ‘__m128i _mm_mullo_epi32(__m128i, __m128i)’: target specific option mismatch
 _mm_mullo_epi32 (__m128i __X, __m128i __Y)
 ^~~~~~~~~~~~~~~
In file included from FastNoiseSIMD_sse41.cpp:40:0:
FastNoiseSIMD_internal.cpp:244:37: note: called from here
 #define SIMDi_ADD(a,b) _mm_add_epi32(a,b)
                        ~~~~~~~~~~~~~^~~~~
FastNoiseSIMD_internal.cpp:510:9: note: in expansion of macro ‘SIMDi_ADD’
  hash = SIMDi_ADD(SIMDi_MUL(x, SIMDi_NUM(xPrime)), hash);
         ^~~~~~~~~
In file included from FastNoiseSIMD_sse41.cpp:37:0:
/usr/lib/gcc/x86_64-redhat-linux/6.2.1/include/smmintrin.h:326:1: error: inlining failed in call to always_inline ‘__m128i _mm_mullo_epi32(__m128i, __m128i)’: target specific option mismatch
 _mm_mullo_epi32 (__m128i __X, __m128i __Y)
 ^~~~~~~~~~~~~~~
In file included from FastNoiseSIMD_sse41.cpp:40:0:
FastNoiseSIMD_internal.cpp:244:37: note: called from here
 #define SIMDi_ADD(a,b) _mm_add_epi32(a,b)
                        ~~~~~~~~~~~~~^~~~~
FastNoiseSIMD_internal.cpp:511:9: note: in expansion of macro ‘SIMDi_ADD’
  hash = SIMDi_ADD(SIMDi_MUL(y, SIMDi_NUM(yPrime)), hash);
         ^~~~~~~~~
In file included from FastNoiseSIMD_sse41.cpp:37:0:
/usr/lib/gcc/x86_64-redhat-linux/6.2.1/include/smmintrin.h:326:1: error: inlining failed in call to always_inline ‘__m128i _mm_mullo_epi32(__m128i, __m128i)’: target specific option mismatch
 _mm_mullo_epi32 (__m128i __X, __m128i __Y)
 ^~~~~~~~~~~~~~~
In file included from FastNoiseSIMD_sse41.cpp:40:0:
FastNoiseSIMD_internal.cpp:244:37: note: called from here
 #define SIMDi_ADD(a,b) _mm_add_epi32(a,b)
                        ~~~~~~~~~~~~~^~~~~
FastNoiseSIMD_internal.cpp:512:9: note: in expansion of macro ‘SIMDi_ADD’
  hash = SIMDi_ADD(SIMDi_MUL(z, SIMDi_NUM(zPrime)), hash);
         ^~~~~~~~~
In file included from FastNoiseSIMD_sse41.cpp:37:0:
/usr/lib/gcc/x86_64-redhat-linux/6.2.1/include/smmintrin.h:326:1: error: inlining failed in call to always_inline ‘__m128i _mm_mullo_epi32(__m128i, __m128i)’: target specific option mismatch
 _mm_mullo_epi32 (__m128i __X, __m128i __Y)
 ^~~~~~~~~~~~~~~
In file included from FastNoiseSIMD_sse41.cpp:40:0:
FastNoiseSIMD_internal.cpp:514:76: note: called from here
  hash = SIMDi_MUL(SIMDi_MUL(SIMDi_MUL(hash, hash), SIMDi_NUM(60493)), hash);
                                                                            ^
In file included from FastNoiseSIMD_sse41.cpp:37:0:
/usr/lib/gcc/x86_64-redhat-linux/6.2.1/include/smmintrin.h:326:1: error: inlining failed in call to always_inline ‘__m128i _mm_mullo_epi32(__m128i, __m128i)’: target specific option mismatch
 _mm_mullo_epi32 (__m128i __X, __m128i __Y)
 ^~~~~~~~~~~~~~~
In file included from FastNoiseSIMD_sse41.cpp:40:0:
FastNoiseSIMD_internal.cpp:208:39: note: called from here
 #define SIMDi_MUL(a,b) _mm_mullo_epi32(a,b)
                        ~~~~~~~~~~~~~~~^~~~~
FastNoiseSIMD_internal.cpp:514:9: note: in expansion of macro ‘SIMDi_MUL’
  hash = SIMDi_MUL(SIMDi_MUL(SIMDi_MUL(hash, hash), SIMDi_NUM(60493)), hash);
         ^~~~~~~~~
In file included from FastNoiseSIMD_sse41.cpp:37:0:
/usr/lib/gcc/x86_64-redhat-linux/6.2.1/include/smmintrin.h:326:1: error: inlining failed in call to always_inline ‘__m128i _mm_mullo_epi32(__m128i, __m128i)’: target specific option mismatch
 _mm_mullo_epi32 (__m128i __X, __m128i __Y)
 ^~~~~~~~~~~~~~~
In file included from FastNoiseSIMD_sse41.cpp:40:0:
FastNoiseSIMD_internal.cpp:208:39: note: called from here
 #define SIMDi_MUL(a,b) _mm_mullo_epi32(a,b)
                        ~~~~~~~~~~~~~~~^~~~~
FastNoiseSIMD_internal.cpp:514:9: note: in expansion of macro ‘SIMDi_MUL’
  hash = SIMDi_MUL(SIMDi_MUL(SIMDi_MUL(hash, hash), SIMDi_NUM(60493)), hash);
         ^~~~~~~~~

Similar errors are reported with clang++ 3.8 (which needs -std=c++11, btw) and the compiler even crashes. I am using Fedora 24 with whatever that entails; I can get specific versions of things if you need them.

[Question] Use with UE4

First off, thanks for this amazing lib !

I'd like to know if someone has used this library into the Unreal Engine 4.
I do, and I have some mysterious compilation errors:
The lib can compile for small projects, but when I have more than 31 .cpp files, the compiler shows me incoherent errors (see the log here).

To target the problem, I have created 2 projects, one with the library + 23 empty .cpp files, and another with the library + 24 empty .cpp files (I use empty .cpp files just to demonstrate the problem). The first project compiles normally, there are lots of warning, but I can use the lib normally. But the second can not compile at all. If you remove one of the empty .cpp files that I put into the project, it will compile (it's probably related to the Unity-Build feature, but i don't know anything about it).

This is my 2 projects, you can try yourself:
ok_project.zip
fail_project.zip
I tested them on two different computers, with different installations, with UE 4.21 and 4.19, and the problem is the same.

To compile with VS, I just needed to do some modifications on the FastNoiseSIMD_internal.cpp (because it wanted to have FastNoiseSIMD_internal.h as the first included header).
So just for information, I have replaced this :

#include "FastNoiseSIMD.h"
#include <assert.h> 

#if defined(SIMD_LEVEL) || defined(FN_COMPILE_NO_SIMD_FALLBACK)

#ifndef SIMD_LEVEL
#define SIMD_LEVEL FN_NO_SIMD_FALLBACK
#define SIMD_LEVEL_H FN_NO_SIMD_FALLBACK
#include "FastNoiseSIMD_internal.h"
#include <math.h>
#define FN_ALIGNED_SETS
#endif

By this :

#if defined(SIMD_LEVEL) || defined(FN_COMPILE_NO_SIMD_FALLBACK)

#ifndef SIMD_LEVEL
#define SIMD_LEVEL FN_NO_SIMD_FALLBACK
#define SIMD_LEVEL_H FN_NO_SIMD_FALLBACK
#include "FastNoiseSIMD_internal.h"
#include "FastNoiseSIMD.h"
#include <math.h>
#define FN_ALIGNED_SETS
#endif
#include <assert.h>

And I also commented the #define FN_COMPILE_AVX2 line, but this is just needed in my case I think.

Does anyone have any ideas to fix this ?

Doubt about the library and SIMD

Sorry for the general question. I do not have much knowledge about what SIMD really is, although I researched it, I did not quite understand it. But I'm interested in using this library if that's what I'm thinking. Here it says it will run in parallel, thus being faster. But on any computer will it work after I compile my program?

Example:

I have my game that uses this library of noises to generate 2D terrain. After I compile the game and distribute it to the players, will I have any non-compatibility issues?

Any plans on adding 4D support?

I'm looking to replace a proprietary noise library (Houdini's UT_Noise), with something faster. But I need 4D noise. Any plans on expanding your FastNoiseSIMD to support 4D?

Some questions

Bellow I have some question about your library:

  • How compile with MinGW which options use? I try MSVC options does not work.

  • What use for cave generation? I try many different params with CellularNoise (with or not Perturb) but isn't look great.

Thanks in advance for your further responses.

Changing the Collider of a chunk, while running the Game....[UNITY]

Hello guys,
I bought the FastNoise Library inside the Asset Store of Unity, means I'm writing the Code in C#. Now I added the supported mesh Collider Generation to my Terrain. The Problem is, I want something like the Render Distance in the examples. So he's rendering like 10 Chunks in every x, y, z direction, but I want just like 5 Chunks Render Distance of The Colliders, so that a chunk being away like 7 chunks doesnt have the MeshCollider enabled to save processing Power. How can I do it??
Thanks.
Fable67

maybe-uninitialized warnings when compiling with optimizations

With g++ -c FastNoiseSIMD_avx2.cpp -march=core-avx2 -Wall, no warnings are produced.

However, if you add -O2, several maybe-uninitialized warnings are output:

$ g++ -c FastNoiseSIMD_avx2.cpp -march=core-avx2 -Wall -O2
In file included from FastNoiseSIMD_avx2.cpp:48:0:
FastNoiseSIMD_internal.cpp: In member function ‘virtual void FastNoiseSIMD_internal::FastNoiseSIMD_L3::FillValueSet(float*, int, int, int, int, int, int, float)’:
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbFreqV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:20: note: ‘perturbFreqV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
                    ^
FastNoiseSIMD_internal.cpp:1321:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1367:1: note: in expansion of macro ‘FILL_SET’
 FILL_SET(Value)
 ^~~~~~~~
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbAmpV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:7: note: ‘perturbAmpV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
       ^
FastNoiseSIMD_internal.cpp:1321:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1367:1: note: in expansion of macro ‘FILL_SET’
 FILL_SET(Value)
 ^~~~~~~~
FastNoiseSIMD_internal.cpp: In member function ‘virtual void FastNoiseSIMD_internal::FastNoiseSIMD_L3::FillCubicSet(float*, int, int, int, int, int, int, float)’:
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbFreqV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:20: note: ‘perturbFreqV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
                    ^
FastNoiseSIMD_internal.cpp:1321:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1378:1: note: in expansion of macro ‘FILL_SET’
 FILL_SET(Cubic)
 ^~~~~~~~
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbAmpV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:7: note: ‘perturbAmpV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
       ^
FastNoiseSIMD_internal.cpp:1321:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1378:1: note: in expansion of macro ‘FILL_SET’
 FILL_SET(Cubic)
 ^~~~~~~~
FastNoiseSIMD_internal.cpp: In member function ‘virtual void FastNoiseSIMD_internal::FastNoiseSIMD_L3::FillValueSet(float*, FastNoiseVectorSet*, float, float, float)’:
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbFreqV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:20: note: ‘perturbFreqV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
                    ^
FastNoiseSIMD_internal.cpp:1435:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1482:2: note: in expansion of macro ‘FILL_VECTOR_SET’
  FILL_VECTOR_SET(Value)
  ^~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbAmpV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:7: note: ‘perturbAmpV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
       ^
FastNoiseSIMD_internal.cpp:1435:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1482:2: note: in expansion of macro ‘FILL_VECTOR_SET’
  FILL_VECTOR_SET(Value)
  ^~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp: In member function ‘virtual void FastNoiseSIMD_internal::FastNoiseSIMD_L3::FillWhiteNoiseSet(float*, FastNoiseVectorSet*, float, float, float)’:
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbFreqV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:20: note: ‘perturbFreqV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
                    ^
FastNoiseSIMD_internal.cpp:1435:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1491:2: note: in expansion of macro ‘FILL_VECTOR_SET’
  FILL_VECTOR_SET(WhiteNoise)
  ^~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbAmpV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:7: note: ‘perturbAmpV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
       ^
FastNoiseSIMD_internal.cpp:1435:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1491:2: note: in expansion of macro ‘FILL_VECTOR_SET’
  FILL_VECTOR_SET(WhiteNoise)
  ^~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp: In member function ‘virtual void FastNoiseSIMD_internal::FastNoiseSIMD_L3::FillCubicSet(float*, FastNoiseVectorSet*, float, float, float)’:
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbFreqV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:20: note: ‘perturbFreqV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
                    ^
FastNoiseSIMD_internal.cpp:1435:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1493:2: note: in expansion of macro ‘FILL_VECTOR_SET’
  FILL_VECTOR_SET(Cubic)
  ^~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbAmpV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:7: note: ‘perturbAmpV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
       ^
FastNoiseSIMD_internal.cpp:1435:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1493:2: note: in expansion of macro ‘FILL_VECTOR_SET’
  FILL_VECTOR_SET(Cubic)
  ^~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp: In member function ‘virtual void FastNoiseSIMD_internal::FastNoiseSIMD_L3::FillValueFractalSet(float*, int, int, int, int, int, int, float)’:
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbFreqV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:20: note: ‘perturbFreqV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
                    ^
FastNoiseSIMD_internal.cpp:1344:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1368:1: note: in expansion of macro ‘FILL_FRACTAL_SET’
 FILL_FRACTAL_SET(Value)
 ^~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbAmpV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:7: note: ‘perturbAmpV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
       ^
FastNoiseSIMD_internal.cpp:1344:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1368:1: note: in expansion of macro ‘FILL_FRACTAL_SET’
 FILL_FRACTAL_SET(Value)
 ^~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp: In member function ‘virtual void FastNoiseSIMD_internal::FastNoiseSIMD_L3::FillCubicFractalSet(float*, int, int, int, int, int, int, float)’:
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbFreqV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:20: note: ‘perturbFreqV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
                    ^
FastNoiseSIMD_internal.cpp:1344:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1379:1: note: in expansion of macro ‘FILL_FRACTAL_SET’
 FILL_FRACTAL_SET(Cubic)
 ^~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbAmpV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:7: note: ‘perturbAmpV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
       ^
FastNoiseSIMD_internal.cpp:1344:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1379:1: note: in expansion of macro ‘FILL_FRACTAL_SET’
 FILL_FRACTAL_SET(Cubic)
 ^~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp: In member function ‘virtual void FastNoiseSIMD_internal::FastNoiseSIMD_L3::FillValueFractalSet(float*, FastNoiseVectorSet*, float, float, float)’:
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbFreqV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:20: note: ‘perturbFreqV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
                    ^
FastNoiseSIMD_internal.cpp:1462:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1483:2: note: in expansion of macro ‘FILL_FRACTAL_VECTOR_SET’
  FILL_FRACTAL_VECTOR_SET(Value)
  ^~~~~~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbAmpV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:7: note: ‘perturbAmpV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
       ^
FastNoiseSIMD_internal.cpp:1462:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1483:2: note: in expansion of macro ‘FILL_FRACTAL_VECTOR_SET’
  FILL_FRACTAL_VECTOR_SET(Value)
  ^~~~~~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp: In member function ‘virtual void FastNoiseSIMD_internal::FastNoiseSIMD_L3::FillCubicFractalSet(float*, FastNoiseVectorSet*, float, float, float)’:
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbFreqV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:20: note: ‘perturbFreqV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
                    ^
FastNoiseSIMD_internal.cpp:1462:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1494:2: note: in expansion of macro ‘FILL_FRACTAL_VECTOR_SET’
  FILL_FRACTAL_VECTOR_SET(Cubic)
  ^~~~~~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbAmpV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:7: note: ‘perturbAmpV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
       ^
FastNoiseSIMD_internal.cpp:1462:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1494:2: note: in expansion of macro ‘FILL_FRACTAL_VECTOR_SET’
  FILL_FRACTAL_VECTOR_SET(Cubic)
  ^~~~~~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp: In member function ‘virtual void FastNoiseSIMD_internal::FastNoiseSIMD_L3::FillPerlinSet(float*, int, int, int, int, int, int, float)’:
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbFreqV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:20: note: ‘perturbFreqV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
                    ^
FastNoiseSIMD_internal.cpp:1321:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1370:1: note: in expansion of macro ‘FILL_SET’
 FILL_SET(Perlin)
 ^~~~~~~~
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbAmpV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:7: note: ‘perturbAmpV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
       ^
FastNoiseSIMD_internal.cpp:1321:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1370:1: note: in expansion of macro ‘FILL_SET’
 FILL_SET(Perlin)
 ^~~~~~~~
FastNoiseSIMD_internal.cpp: In member function ‘virtual void FastNoiseSIMD_internal::FastNoiseSIMD_L3::FillPerlinFractalSet(float*, int, int, int, int, int, int, float)’:
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbFreqV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:20: note: ‘perturbFreqV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
                    ^
FastNoiseSIMD_internal.cpp:1344:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1371:1: note: in expansion of macro ‘FILL_FRACTAL_SET’
 FILL_FRACTAL_SET(Perlin)
 ^~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbAmpV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:7: note: ‘perturbAmpV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
       ^
FastNoiseSIMD_internal.cpp:1344:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1371:1: note: in expansion of macro ‘FILL_FRACTAL_SET’
 FILL_FRACTAL_SET(Perlin)
 ^~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp: In member function ‘virtual void FastNoiseSIMD_internal::FastNoiseSIMD_L3::FillPerlinSet(float*, FastNoiseVectorSet*, float, float, float)’:
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbFreqV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:20: note: ‘perturbFreqV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
                    ^
FastNoiseSIMD_internal.cpp:1435:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1485:2: note: in expansion of macro ‘FILL_VECTOR_SET’
  FILL_VECTOR_SET(Perlin)
  ^~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbAmpV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:7: note: ‘perturbAmpV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
       ^
FastNoiseSIMD_internal.cpp:1435:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1485:2: note: in expansion of macro ‘FILL_VECTOR_SET’
  FILL_VECTOR_SET(Perlin)
  ^~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp: In member function ‘virtual void FastNoiseSIMD_internal::FastNoiseSIMD_L3::FillPerlinFractalSet(float*, FastNoiseVectorSet*, float, float, float)’:
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbFreqV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:20: note: ‘perturbFreqV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
                    ^
FastNoiseSIMD_internal.cpp:1462:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1486:2: note: in expansion of macro ‘FILL_FRACTAL_VECTOR_SET’
  FILL_FRACTAL_VECTOR_SET(Perlin)
  ^~~~~~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbAmpV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:7: note: ‘perturbAmpV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
       ^
FastNoiseSIMD_internal.cpp:1462:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1486:2: note: in expansion of macro ‘FILL_FRACTAL_VECTOR_SET’
  FILL_FRACTAL_VECTOR_SET(Perlin)
  ^~~~~~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp: In member function ‘virtual void FastNoiseSIMD_internal::FastNoiseSIMD_L3::FillSimplexSet(float*, int, int, int, int, int, int, float)’:
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbFreqV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:20: note: ‘perturbFreqV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
                    ^
FastNoiseSIMD_internal.cpp:1321:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1373:1: note: in expansion of macro ‘FILL_SET’
 FILL_SET(Simplex)
 ^~~~~~~~
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbAmpV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:7: note: ‘perturbAmpV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
       ^
FastNoiseSIMD_internal.cpp:1321:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1373:1: note: in expansion of macro ‘FILL_SET’
 FILL_SET(Simplex)
 ^~~~~~~~
FastNoiseSIMD_internal.cpp: In member function ‘virtual void FastNoiseSIMD_internal::FastNoiseSIMD_L3::FillSimplexFractalSet(float*, int, int, int, int, int, int, float)’:
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbFreqV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:20: note: ‘perturbFreqV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
                    ^
FastNoiseSIMD_internal.cpp:1344:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1374:1: note: in expansion of macro ‘FILL_FRACTAL_SET’
 FILL_FRACTAL_SET(Simplex)
 ^~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbAmpV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:7: note: ‘perturbAmpV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
       ^
FastNoiseSIMD_internal.cpp:1344:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1374:1: note: in expansion of macro ‘FILL_FRACTAL_SET’
 FILL_FRACTAL_SET(Simplex)
 ^~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp: In member function ‘virtual void FastNoiseSIMD_internal::FastNoiseSIMD_L3::FillSimplexSet(float*, FastNoiseVectorSet*, float, float, float)’:
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbFreqV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:20: note: ‘perturbFreqV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
                    ^
FastNoiseSIMD_internal.cpp:1435:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1488:2: note: in expansion of macro ‘FILL_VECTOR_SET’
  FILL_VECTOR_SET(Simplex)
  ^~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbAmpV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:7: note: ‘perturbAmpV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
       ^
FastNoiseSIMD_internal.cpp:1435:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1488:2: note: in expansion of macro ‘FILL_VECTOR_SET’
  FILL_VECTOR_SET(Simplex)
  ^~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp: In member function ‘virtual void FastNoiseSIMD_internal::FastNoiseSIMD_L3::FillSimplexFractalSet(float*, FastNoiseVectorSet*, float, float, float)’:
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbFreqV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:20: note: ‘perturbFreqV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
                    ^
FastNoiseSIMD_internal.cpp:1462:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1489:2: note: in expansion of macro ‘FILL_FRACTAL_VECTOR_SET’
  FILL_FRACTAL_VECTOR_SET(Simplex)
  ^~~~~~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbAmpV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:7: note: ‘perturbAmpV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
       ^
FastNoiseSIMD_internal.cpp:1462:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();\
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1489:2: note: in expansion of macro ‘FILL_FRACTAL_VECTOR_SET’
  FILL_FRACTAL_VECTOR_SET(Simplex)
  ^~~~~~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp: In function ‘SIMDf L3_FUNC_CellularLookupEuclideanSingle(SIMDi, SIMDf, SIMDf, SIMDf, SIMDf, const NoiseLookupSettings&)’:
FastNoiseSIMD_internal.cpp:1773:9: warning: ‘result’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  return result;\
         ^~~~~~
FastNoiseSIMD_internal.cpp:1741:8: note: ‘result’ was declared here
  SIMDf result;\
        ^
FastNoiseSIMD_internal.cpp:1907:1: note: in expansion of macro ‘CELLULAR_LOOKUP_SINGLE’
 CELLULAR_LOOKUP_SINGLE(Euclidean)
 ^~~~~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp: In function ‘SIMDf L3_FUNC_CellularLookupManhattanSingle(SIMDi, SIMDf, SIMDf, SIMDf, SIMDf, const NoiseLookupSettings&)’:
FastNoiseSIMD_internal.cpp:1773:9: warning: ‘result’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  return result;\
         ^~~~~~
FastNoiseSIMD_internal.cpp:1741:8: note: ‘result’ was declared here
  SIMDf result;\
        ^
FastNoiseSIMD_internal.cpp:1908:1: note: in expansion of macro ‘CELLULAR_LOOKUP_SINGLE’
 CELLULAR_LOOKUP_SINGLE(Manhattan)
 ^~~~~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp: In function ‘SIMDf L3_FUNC_CellularLookupNaturalSingle(SIMDi, SIMDf, SIMDf, SIMDf, SIMDf, const NoiseLookupSettings&)’:
FastNoiseSIMD_internal.cpp:1773:9: warning: ‘result’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  return result;\
         ^~~~~~
FastNoiseSIMD_internal.cpp:1741:8: note: ‘result’ was declared here
  SIMDf result;\
        ^
FastNoiseSIMD_internal.cpp:1909:1: note: in expansion of macro ‘CELLULAR_LOOKUP_SINGLE’
 CELLULAR_LOOKUP_SINGLE(Natural)
 ^~~~~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp: In member function ‘virtual void FastNoiseSIMD_internal::FastNoiseSIMD_L3::FillCellularSet(float*, int, int, int, int, int, int, float)’:
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbFreqV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:20: note: ‘perturbFreqV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
                    ^
FastNoiseSIMD_internal.cpp:1966:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbAmpV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:7: note: ‘perturbAmpV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
       ^
FastNoiseSIMD_internal.cpp:1966:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp: In member function ‘virtual void FastNoiseSIMD_internal::FastNoiseSIMD_L3::FillCellularSet(float*, FastNoiseVectorSet*, float, float, float)’:
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbFreqV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:20: note: ‘perturbFreqV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
                    ^
FastNoiseSIMD_internal.cpp:2072:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp:1143:29: warning: ‘perturbAmpV’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  FUNC(GradientPerturbSingle)(seedF, ampF, freqF, xF, yF, zF);\
                             ^
FastNoiseSIMD_internal.cpp:1077:7: note: ‘perturbAmpV’ was declared here
 SIMDf perturbAmpV, perturbFreqV, perturbLacunarityV, perturbGainV, perturbNormaliseLengthV;\
       ^
FastNoiseSIMD_internal.cpp:2072:2: note: in expansion of macro ‘INIT_PERTURB_VALUES’
  INIT_PERTURB_VALUES();
  ^~~~~~~~~~~~~~~~~~~
FastNoiseSIMD_internal.cpp: In static member function ‘static float* FastNoiseSIMD_internal::FastNoiseSIMD_L3::GetEmptySet(int)’:
FastNoiseSIMD_internal.cpp:1057:9: warning: ‘noiseSet’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  return noiseSet;
         ^~~~~~~~

I'm not sure if that means optimizations are breaking something or these warnings are harmless. Or the compiler's just better able to track things with optimizations on.

Adding and deleting blocks while run time in Unity/C#

Hello Auburns,
Sorry that it's me asking again, but I'm just in love with your library and spend much time figuring out to add something to, cause I'm not so expirienced. So now my issue is that I wanna delete and add cubes, while I'm playing. I already programmed a script, that can get the single Cube I hitted with a RayCast. But I'm not abled to figure out how I can delete a cube (change the mesh) or add a cube (change the mesh). I'm using an expanded version of your tutorial, but the generation of terrain, chunks is the same. I would really appreciate some small example code, that was implemented inside the example.
Thanks for your help Auburns
Fable67

Missing initialization of SIMDi_NUM(19990303)

SIMDi_NUM(19990303) is used for creating hash index.
The initialization is missing from 'void FUNC(InitSIMDValues)()'
Should Add this line there
SIMDi_NUM(19990303) = SIMDi_SET(19990303);

Python wrapper

Hi Jordan, I made a Python wrapper for your library:

https://github.com/robbmcleod/PyFastNoiseSIMD

Would you be willing to add a link?

I wrapped the code in Python's concurrent.futures as well to allow for multi-threaded generation. It's pretty obvious that you intended the code to be implemented in threads due to the fill mechanics, so thanks for that, it made it very easy.

Tileable Noise

Hey,

I would love to use your library, it checks most boxes I need! Except one.

Could you implement a possibility to make the noise tileable? So that the left and right (also up/down) sides of the texture fit together so that the texture can be used in a repeating pattern without having the seams visible.

Best regards,
Maurice

Frequency and axis scale settings are broked ( for SSE/AVX2 )

When frequency and axis scales set to 1.0, the generated image is correct.
When I set frequency to 0.01, the generated image is scaled on y axis, seems that scalemodifier or scale is only correct on x-axis.
In my case, CPU SIMD avx2 was detected. Tried to set to NO_SIMD_FALLBACK, then everything is correct.

Running in OSX giving `Illegal instruction: 4`

Here's my code:

#include <iostream>
#include <cmath>
#include "FastNoiseSIMD.h"
FastNoiseSIMD* noise = FastNoiseSIMD::NewFastNoiseSIMD();

int main() {
}

And my compile script

rm noise
g++ cpp/main.cpp cpp/FastNoiseSIMD.cpp -msse2 cpp/FastNoiseSIMD_sse2.cpp -msse4.1 cpp/FastNoiseSIMD_sse41.cpp -march=core-avx2 cpp/FastNoiseSIMD_avx2.cpp -std=c++11 -o noise
chmod +x noise

I compile with no errors. When I run './noise' it says: Illegal instruction: 4

Build failure on aarch64/armv7l

The NEON file fails to build on aarch64 and armv7l (Note these builds are for pyfastnoisesimd, but fail in code from here). The errors are like this:

pyfastnoisesimd/fastnoisesimd/FastNoiseSIMD_internal.cpp:201:50: note: use -flax-vector-conversions to permit conversions between vectors with differing element types or numbers of subparts
 #define SIMDf_BLENDV(a,b,mask) vbslq_f32(mask,b,a)
                                                  ^
pyfastnoisesimd/fastnoisesimd/FastNoiseSIMD_internal.cpp:778:12: note: in expansion of macro ‘SIMDf_BLENDV’
  SIMDf u = SIMDf_BLENDV(y, x, l8);
            ^~~~~~~~~~~~
pyfastnoisesimd/fastnoisesimd/FastNoiseSIMD_internal.cpp:201:50: error: cannot convert ‘MASK {aka __vector(4) int}’ to ‘uint32x4_t {aka __vector(4) unsigned int}’ for argument ‘1’ to ‘float32x4_t vbslq_f32(uint32x4_t, float32x4_t, float32x4_t)’
 #define SIMDf_BLENDV(a,b,mask) vbslq_f32(mask,b,a)
                                                  ^

and

pyfastnoisesimd/fastnoisesimd/FastNoiseSIMD_internal.cpp:115:47: error: ‘posix_memalign’ was not declared in this scope
 #define SIMD_ALLOCATE_SET(floatP, floatCount) posix_memalign((void**)&floatP, MEMORY_ALIGNMENT, (floatCount)* sizeof(float))
                                               ^
pyfastnoisesimd/fastnoisesimd/FastNoiseSIMD_internal.cpp:1055:2: note: in expansion of macro ‘SIMD_ALLOCATE_SET’
  SIMD_ALLOCATE_SET(noiseSet, size);
  ^~~~~~~~~~~~~~~~~
pyfastnoisesimd/fastnoisesimd/FastNoiseSIMD_internal.cpp:115:47: note: suggested alternative: ‘__builtin_posix_memalign’
 #define SIMD_ALLOCATE_SET(floatP, floatCount) posix_memalign((void**)&floatP, MEMORY_ALIGNMENT, (floatCount)* sizeof(float))
                                               ^

Should -flax-vector-conversions be added to the wiki for compiler settings or is something wrong with those files?

Readme/documentation suggestions

Seems like this lib does not support 2D noise, and the API is slightly different than FastNoise.

Ideally these would be implemented, but an easy win would be to just document this so the next person doesn't have to dig into the code to find out :).

cpuid.h does not exist on ppc64(le) or s390x

cpuid.h is included if not on Windows or ARM, but it doesn't appear to exist on ppc64(le)/s390x either. Compile fails on ppc64, ppc64le, and s390x because the header cannot be found (note this build is for pyfastnoisesimd, but the problem is here.)

I don't know much about this arch, so I don't know what can be used to replace cpuid.

Generating 2d noise.

The documentation only shows how to generate 3d Simplex Fractals. How do the other noise types work in 2d?

Different xSize and ySize issues in FillVectorSet

I am getting repeated patterns when I set different sizes for x and y in FillVectorSet(FastNoiseVectorSet* vectorSet, int xSize, int ySize, int zSize);. When I set the same size it looks at desired, is it mandatory?.

I am using FillNoiseSet(float* noiseSet, FastNoiseVectorSet* vectorSet, float xOffset = 0.0f, float yOffset = 0.0f, float zOffset = 0.0f); to get my noise since I want to apply an offset.

Here is an example code:

FastNoiseSIMD::FillVectorSet(&m_tVectorSet, 512, 256, 1);
m_ptFloatValues = FastNoiseSIMD::GetEmptySet(512, 256, 1);
m_ptNoise->FillNoiseSet(m_ptFloatValues, &m_tVectorSet, xOffset, yOffset, zOffset);

And an example image:

noise

For xSize = 503 and ySize = 200:

noise2

Thanks.

Scaling center is offset

Hi, I'm exploring implementing FastNoiseSIMD in Godot. I've noticed that the center for the scaling factor on GetNoise is neither 0,0,0, nor the base position requested. This is causing me no end of trouble implementing terrains with LODs.

If I get a 2048x2048x1 2D slice of noise with a call like GetNoise(0, 0, 0, 2048, 2048, 1, scale), then I would expect adjusting scale would mean the noise zooms in and out around 0,0,0, but it doesn't. GetNoise(0,0,0,2048,1,2048, scale) does the same thing. If I offset the beginning of the noise to (1557, 1005, 0), scaling happens around the center of the texture. If I begin at (1060, 670, 0) scaling happens around the top left point of the plane, which should be (0,0). These positions are just eyeball estimates using Cellular with a jitter of 0 (checkerboard).

I've used 2D to simplify my problems in 3D. Swapping Y & Z, it seems the Z offset is also 1005 for the center or 670 for (0,-,0), but I'm not completely sure about that.

In my terrain, basically the Levels Of Detail are not lining up. Each higher LOD pulls noise at a scaling factor 2x the previous level. So my theory is that because the scale is offset to some strange point, and it may even be non-linear or non-static, given the above odd location, that when my LODs pull the noise data at higher scaling factors, they are offset from each other. Unfortunately, I haven't been able to manually line them up as I was able to do with 2D slices.

Is this a bug in FastNoiseSIMD?
Do you have a solution or workaround?
Do you know the true coordinates for the scaling center? And do they change based upon starting location of GetNoise, the data set size, the scaling factor, or other aspects?

Thanks

artifacts on cellular distance with high Jitter

Hello,

There is problem of horizontal or vertical discontinuity that occurs more often when the Jitter >=0.8 for Cellular Distance ( Euclidian for example). It seems to me that the jitter move the feature points outside of there cube, so that the nearest neighbor distance algorithm on point inside cube cannot work. What do you think ?

I would prefer that the jitter does not move the point outside of their cube.

cheers,
Florian

Nim bindings

Not an issue per se - but I've created bindings to this library.

They're probably only functional on OSX atm, but it's a trivial matter of adding some more compiler flags to fix that - which I plan on getting around to soon.

Just thought I'd share - https://github.com/zacharycarter/cacophony

Thanks for the great library!

Sampling at arbitrary positions

Hi, the example in the wiki shows how to use the library in a 3D grid. I would like to provide my own 3D coordinates instead. Is that possible?
As an example imagine that I have an array of particles, and I want to deviate their movement based on the noise. Another example is to generate some properties for vertices of a general mesh.
Thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.