auburn / fastnoisesimd Goto Github PK
View Code? Open in Web Editor NEWC++ SIMD Noise Library
License: MIT License
C++ SIMD Noise Library
License: MIT License
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)
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)
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.
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?
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.
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 ?
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?
This type of noise also known as divergence free noise:
https://en.wikipedia.org/wiki/Simulation_noise
is pretty common for computer graphics simulations. It will be cool to have this type of noise also integrated.
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?
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.
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
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.
Hi,
how can I add like trees or some decoration for the Simd_Desert example?
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
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);
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.
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
Any plans to allow use of double in addition to float?
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.
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
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?
Would it be possible to add support for F3, F4, and F5 distances in Cellular noise?
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
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.
The documentation only shows how to generate 3d Simplex Fractals. How do the other noise types work in 2d?
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:
For xSize = 503
and ySize = 200
:
Thanks.
The comments here don't match the return values, if I understand correctly?
https://github.com/Auburns/FastNoiseSIMD/blob/master/FastNoiseSIMD/FastNoiseSIMD.cpp#L134
Really need fast noise library for my planets game project. It was easy to change non-SIMD code from floats to doubles. But SIMd have problems. Will you add double precision support?
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
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
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!
Hello,
I try to compile your lib using cmake I say your Compilation Settings
Can you create a CMakeLists.txt for compilation pls?
Thanks in advance for your further response.
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.