summaryrefslogtreecommitdiffstats
path: root/thirdparty
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-02-20 17:13:32 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-02-20 17:13:32 +0100
commitfb8f0daf708607eae5d4c7713cee2730fee78968 (patch)
tree1ceb8855c471e654ab892145360d53aa1708a748 /thirdparty
parentdbf598034e673dc65e539c2cb9c9c56b5976903b (diff)
parenta5c52c1e38a591847f694cb2a54428cd3a82386a (diff)
downloadredot-engine-fb8f0daf708607eae5d4c7713cee2730fee78968.tar.gz
Merge pull request #88526 from akien-mga/fastnoiselite-cleanup
FastNoiseLite: Sync with 1.1.0, clean up SCsub
Diffstat (limited to 'thirdparty')
-rw-r--r--thirdparty/README.md2
-rw-r--r--thirdparty/noise/FastNoiseLite.h15
-rw-r--r--thirdparty/noise/patches/FastNoiseLite.patch455
-rw-r--r--thirdparty/noise/patches/namespace-warnings.patch43
4 files changed, 52 insertions, 463 deletions
diff --git a/thirdparty/README.md b/thirdparty/README.md
index cf3184ab04..2e99abc622 100644
--- a/thirdparty/README.md
+++ b/thirdparty/README.md
@@ -697,7 +697,7 @@ Files extracted from the upstream source:
## noise
- Upstream: https://github.com/Auburn/FastNoiseLite
-- Version: git (6be3d6bf7fb408de341285f9ee8a29b67fd953f1, 2022)
+- Version: 1.1.0 (f7af54b56518aa659e1cf9fb103c0b6e36a833d9, 2023)
- License: MIT
Files extracted from the upstream source:
diff --git a/thirdparty/noise/FastNoiseLite.h b/thirdparty/noise/FastNoiseLite.h
index a213f0888e..fb6dbcb92a 100644
--- a/thirdparty/noise/FastNoiseLite.h
+++ b/thirdparty/noise/FastNoiseLite.h
@@ -1,7 +1,7 @@
// MIT License
//
-// Copyright(c) 2020 Jordan Peck (jordan.me2@gmail.com)
-// Copyright(c) 2020 Contributors
+// Copyright(c) 2023 Jordan Peck (jordan.me2@gmail.com)
+// Copyright(c) 2023 Contributors
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files(the "Software"), to deal
@@ -44,15 +44,15 @@
// ....',;:codxkO000OOxdoc:;,''',,,;;;;,''.......',,;:clodkO00000Okxolc::;,,''..',;:ldxOKXNWWWNNK0OkkkkkkkkkkkxxddooooodxxkOOOOO000
// ....',;;clodxkkOOOkkdolc:;,,,,,,,,'..........,;:clodxkO0KKXKK0Okxdolcc::;;,,,;;:codkO0XXNNNNXKK0OOOOOkkkkxxdoollloodxkO0KKKXXXXX
//
-// VERSION: 1.0.1
-// https://github.com/Auburn/FastNoise
+// VERSION: 1.1.0
+// https://github.com/Auburn/FastNoiseLite
#ifndef FASTNOISELITE_H
#define FASTNOISELITE_H
#include <cmath>
-namespace fastnoiselite{
+namespace fastnoiselite {
class FastNoiseLite
{
@@ -2594,5 +2594,6 @@ const T FastNoiseLite::Lookup<T>::RandVecs3D[] =
-0.7870349638f, 0.03447489231f, 0.6159443543f, 0, -0.2015596421f, 0.6859872284f, 0.6991389226f, 0, -0.08581082512f, -0.10920836f, -0.9903080513f, 0, 0.5532693395f, 0.7325250401f, -0.396610771f, 0, -0.1842489331f, -0.9777375055f, -0.1004076743f, 0, 0.0775473789f, -0.9111505856f, 0.4047110257f, 0, 0.1399838409f, 0.7601631212f, -0.6344734459f, 0, 0.4484419361f, -0.845289248f, 0.2904925424f, 0
};
-}
-#endif // namespace fastnoiselite
+} // namespace fastnoiselite
+
+#endif
diff --git a/thirdparty/noise/patches/FastNoiseLite.patch b/thirdparty/noise/patches/FastNoiseLite.patch
deleted file mode 100644
index 3c835c7b06..0000000000
--- a/thirdparty/noise/patches/FastNoiseLite.patch
+++ /dev/null
@@ -1,455 +0,0 @@
---- orig/FastNoiseLite.h 1900-01-00 00:00:00 +0000
-+++ noise/FastNoiseLite.h 1900-01-00 00:00:00 +0000
-@@ -52,6 +52,8 @@
-
- #include <cmath>
-
-+namespace fastnoiselite{
-+
- class FastNoiseLite
- {
- public:
-@@ -2583,4 +2585,5 @@
- -0.7870349638f, 0.03447489231f, 0.6159443543f, 0, -0.2015596421f, 0.6859872284f, 0.6991389226f, 0, -0.08581082512f, -0.10920836f, -0.9903080513f, 0, 0.5532693395f, 0.7325250401f, -0.396610771f, 0, -0.1842489331f, -0.9777375055f, -0.1004076743f, 0, 0.0775473789f, -0.9111505856f, 0.4047110257f, 0, 0.1399838409f, 0.7601631212f, -0.6344734459f, 0, 0.4484419361f, -0.845289248f, 0.2904925424f, 0
- };
-
--#endif
-+}
-+#endif // namespace fastnoiselite
-@@ -295,7 +295,7 @@ public:
- /// Noise output bounded between -1...1
- /// </returns>
- template <typename FNfloat>
-- float GetNoise(FNfloat x, FNfloat y)
-+ float GetNoise(FNfloat x, FNfloat y) const
- {
- Arguments_must_be_floating_point_values<FNfloat>();
-
-@@ -321,7 +321,7 @@ public:
- /// Noise output bounded between -1...1
- /// </returns>
- template <typename FNfloat>
-- float GetNoise(FNfloat x, FNfloat y, FNfloat z)
-+ float GetNoise(FNfloat x, FNfloat y, FNfloat z) const
- {
- Arguments_must_be_floating_point_values<FNfloat>();
-
-@@ -350,7 +350,7 @@ public:
- /// noise = GetNoise(x, y)</code>
- /// </example>
- template <typename FNfloat>
-- void DomainWarp(FNfloat& x, FNfloat& y)
-+ void DomainWarp(FNfloat& x, FNfloat& y) const
- {
- Arguments_must_be_floating_point_values<FNfloat>();
-
-@@ -377,7 +377,7 @@ public:
- /// noise = GetNoise(x, y, z)</code>
- /// </example>
- template <typename FNfloat>
-- void DomainWarp(FNfloat& x, FNfloat& y, FNfloat& z)
-+ void DomainWarp(FNfloat& x, FNfloat& y, FNfloat& z) const
- {
- Arguments_must_be_floating_point_values<FNfloat>();
-
-@@ -528,7 +528,7 @@ private:
- }
-
-
-- float GradCoord(int seed, int xPrimed, int yPrimed, float xd, float yd)
-+ float GradCoord(int seed, int xPrimed, int yPrimed, float xd, float yd) const
- {
- int hash = Hash(seed, xPrimed, yPrimed);
- hash ^= hash >> 15;
-@@ -541,7 +541,7 @@ private:
- }
-
-
-- float GradCoord(int seed, int xPrimed, int yPrimed, int zPrimed, float xd, float yd, float zd)
-+ float GradCoord(int seed, int xPrimed, int yPrimed, int zPrimed, float xd, float yd, float zd) const
- {
- int hash = Hash(seed, xPrimed, yPrimed, zPrimed);
- hash ^= hash >> 15;
-@@ -555,7 +555,7 @@ private:
- }
-
-
-- void GradCoordOut(int seed, int xPrimed, int yPrimed, float& xo, float& yo)
-+ void GradCoordOut(int seed, int xPrimed, int yPrimed, float& xo, float& yo) const
- {
- int hash = Hash(seed, xPrimed, yPrimed) & (255 << 1);
-
-@@ -564,7 +564,7 @@ private:
- }
-
-
-- void GradCoordOut(int seed, int xPrimed, int yPrimed, int zPrimed, float& xo, float& yo, float& zo)
-+ void GradCoordOut(int seed, int xPrimed, int yPrimed, int zPrimed, float& xo, float& yo, float& zo) const
- {
- int hash = Hash(seed, xPrimed, yPrimed, zPrimed) & (255 << 2);
-
-@@ -574,7 +574,7 @@ private:
- }
-
-
-- void GradCoordDual(int seed, int xPrimed, int yPrimed, float xd, float yd, float& xo, float& yo)
-+ void GradCoordDual(int seed, int xPrimed, int yPrimed, float xd, float yd, float& xo, float& yo) const
- {
- int hash = Hash(seed, xPrimed, yPrimed);
- int index1 = hash & (127 << 1);
-@@ -592,7 +592,7 @@ private:
- }
-
-
-- void GradCoordDual(int seed, int xPrimed, int yPrimed, int zPrimed, float xd, float yd, float zd, float& xo, float& yo, float& zo)
-+ void GradCoordDual(int seed, int xPrimed, int yPrimed, int zPrimed, float xd, float yd, float zd, float& xo, float& yo, float& zo) const
- {
- int hash = Hash(seed, xPrimed, yPrimed, zPrimed);
- int index1 = hash & (63 << 2);
-@@ -616,7 +616,7 @@ private:
- // Generic noise gen
-
- template <typename FNfloat>
-- float GenNoiseSingle(int seed, FNfloat x, FNfloat y)
-+ float GenNoiseSingle(int seed, FNfloat x, FNfloat y) const
- {
- switch (mNoiseType)
- {
-@@ -638,7 +638,7 @@ private:
- }
-
- template <typename FNfloat>
-- float GenNoiseSingle(int seed, FNfloat x, FNfloat y, FNfloat z)
-+ float GenNoiseSingle(int seed, FNfloat x, FNfloat y, FNfloat z) const
- {
- switch (mNoiseType)
- {
-@@ -663,7 +663,7 @@ private:
- // Noise Coordinate Transforms (frequency, and possible skew or rotation)
-
- template <typename FNfloat>
-- void TransformNoiseCoordinate(FNfloat& x, FNfloat& y)
-+ void TransformNoiseCoordinate(FNfloat& x, FNfloat& y) const
- {
- x *= mFrequency;
- y *= mFrequency;
-@@ -686,7 +686,7 @@ private:
- }
-
- template <typename FNfloat>
-- void TransformNoiseCoordinate(FNfloat& x, FNfloat& y, FNfloat& z)
-+ void TransformNoiseCoordinate(FNfloat& x, FNfloat& y, FNfloat& z) const
- {
- x *= mFrequency;
- y *= mFrequency;
-@@ -757,7 +757,7 @@ private:
- // Domain Warp Coordinate Transforms
-
- template <typename FNfloat>
-- void TransformDomainWarpCoordinate(FNfloat& x, FNfloat& y)
-+ void TransformDomainWarpCoordinate(FNfloat& x, FNfloat& y) const
- {
- switch (mDomainWarpType)
- {
-@@ -777,7 +777,7 @@ private:
- }
-
- template <typename FNfloat>
-- void TransformDomainWarpCoordinate(FNfloat& x, FNfloat& y, FNfloat& z)
-+ void TransformDomainWarpCoordinate(FNfloat& x, FNfloat& y, FNfloat& z) const
- {
- switch (mWarpTransformType3D)
- {
-@@ -844,7 +844,7 @@ private:
- // Fractal FBm
-
- template <typename FNfloat>
-- float GenFractalFBm(FNfloat x, FNfloat y)
-+ float GenFractalFBm(FNfloat x, FNfloat y) const
- {
- int seed = mSeed;
- float sum = 0;
-@@ -865,7 +865,7 @@ private:
- }
-
- template <typename FNfloat>
-- float GenFractalFBm(FNfloat x, FNfloat y, FNfloat z)
-+ float GenFractalFBm(FNfloat x, FNfloat y, FNfloat z) const
- {
- int seed = mSeed;
- float sum = 0;
-@@ -890,7 +890,7 @@ private:
- // Fractal Ridged
-
- template <typename FNfloat>
-- float GenFractalRidged(FNfloat x, FNfloat y)
-+ float GenFractalRidged(FNfloat x, FNfloat y) const
- {
- int seed = mSeed;
- float sum = 0;
-@@ -911,7 +911,7 @@ private:
- }
-
- template <typename FNfloat>
-- float GenFractalRidged(FNfloat x, FNfloat y, FNfloat z)
-+ float GenFractalRidged(FNfloat x, FNfloat y, FNfloat z) const
- {
- int seed = mSeed;
- float sum = 0;
-@@ -936,7 +936,7 @@ private:
- // Fractal PingPong
-
- template <typename FNfloat>
-- float GenFractalPingPong(FNfloat x, FNfloat y)
-+ float GenFractalPingPong(FNfloat x, FNfloat y) const
- {
- int seed = mSeed;
- float sum = 0;
-@@ -957,7 +957,7 @@ private:
- }
-
- template <typename FNfloat>
-- float GenFractalPingPong(FNfloat x, FNfloat y, FNfloat z)
-+ float GenFractalPingPong(FNfloat x, FNfloat y, FNfloat z) const
- {
- int seed = mSeed;
- float sum = 0;
-@@ -982,7 +982,7 @@ private:
- // Simplex/OpenSimplex2 Noise
-
- template <typename FNfloat>
-- float SingleSimplex(int seed, FNfloat x, FNfloat y)
-+ float SingleSimplex(int seed, FNfloat x, FNfloat y) const
- {
- // 2D OpenSimplex2 case uses the same algorithm as ordinary Simplex.
-
-@@ -1053,7 +1053,7 @@ private:
- }
-
- template <typename FNfloat>
-- float SingleOpenSimplex2(int seed, FNfloat x, FNfloat y, FNfloat z)
-+ float SingleOpenSimplex2(int seed, FNfloat x, FNfloat y, FNfloat z) const
- {
- // 3D OpenSimplex2 case uses two offset rotated cube grids.
-
-@@ -1155,7 +1155,7 @@ private:
- // OpenSimplex2S Noise
-
- template <typename FNfloat>
-- float SingleOpenSimplex2S(int seed, FNfloat x, FNfloat y)
-+ float SingleOpenSimplex2S(int seed, FNfloat x, FNfloat y) const
- {
- // 2D OpenSimplex2S case is a modified 2D simplex noise.
-
-@@ -1286,7 +1286,7 @@ private:
- }
-
- template <typename FNfloat>
-- float SingleOpenSimplex2S(int seed, FNfloat x, FNfloat y, FNfloat z)
-+ float SingleOpenSimplex2S(int seed, FNfloat x, FNfloat y, FNfloat z) const
- {
- // 3D OpenSimplex2S case uses two offset rotated cube grids.
-
-@@ -1482,7 +1482,7 @@ private:
- // Cellular Noise
-
- template <typename FNfloat>
-- float SingleCellular(int seed, FNfloat x, FNfloat y)
-+ float SingleCellular(int seed, FNfloat x, FNfloat y) const
- {
- int xr = FastRound(x);
- int yr = FastRound(y);
-@@ -1612,7 +1612,7 @@ private:
- }
-
- template <typename FNfloat>
-- float SingleCellular(int seed, FNfloat x, FNfloat y, FNfloat z)
-+ float SingleCellular(int seed, FNfloat x, FNfloat y, FNfloat z) const
- {
- int xr = FastRound(x);
- int yr = FastRound(y);
-@@ -1769,7 +1769,7 @@ private:
- // Perlin Noise
-
- template <typename FNfloat>
-- float SinglePerlin(int seed, FNfloat x, FNfloat y)
-+ float SinglePerlin(int seed, FNfloat x, FNfloat y) const
- {
- int x0 = FastFloor(x);
- int y0 = FastFloor(y);
-@@ -1794,7 +1794,7 @@ private:
- }
-
- template <typename FNfloat>
-- float SinglePerlin(int seed, FNfloat x, FNfloat y, FNfloat z)
-+ float SinglePerlin(int seed, FNfloat x, FNfloat y, FNfloat z) const
- {
- int x0 = FastFloor(x);
- int y0 = FastFloor(y);
-@@ -1833,7 +1833,7 @@ private:
- // Value Cubic Noise
-
- template <typename FNfloat>
-- float SingleValueCubic(int seed, FNfloat x, FNfloat y)
-+ float SingleValueCubic(int seed, FNfloat x, FNfloat y) const
- {
- int x1 = FastFloor(x);
- int y1 = FastFloor(y);
-@@ -1863,7 +1863,7 @@ private:
- }
-
- template <typename FNfloat>
-- float SingleValueCubic(int seed, FNfloat x, FNfloat y, FNfloat z)
-+ float SingleValueCubic(int seed, FNfloat x, FNfloat y, FNfloat z) const
- {
- int x1 = FastFloor(x);
- int y1 = FastFloor(y);
-@@ -1920,7 +1920,7 @@ private:
- // Value Noise
-
- template <typename FNfloat>
-- float SingleValue(int seed, FNfloat x, FNfloat y)
-+ float SingleValue(int seed, FNfloat x, FNfloat y) const
- {
- int x0 = FastFloor(x);
- int y0 = FastFloor(y);
-@@ -1940,7 +1940,7 @@ private:
- }
-
- template <typename FNfloat>
-- float SingleValue(int seed, FNfloat x, FNfloat y, FNfloat z)
-+ float SingleValue(int seed, FNfloat x, FNfloat y, FNfloat z) const
- {
- int x0 = FastFloor(x);
- int y0 = FastFloor(y);
-@@ -1972,7 +1972,7 @@ private:
- // Domain Warp
-
- template <typename FNfloat>
-- void DoSingleDomainWarp(int seed, float amp, float freq, FNfloat x, FNfloat y, FNfloat& xr, FNfloat& yr)
-+ void DoSingleDomainWarp(int seed, float amp, float freq, FNfloat x, FNfloat y, FNfloat& xr, FNfloat& yr) const
- {
- switch (mDomainWarpType)
- {
-@@ -1989,7 +1989,7 @@ private:
- }
-
- template <typename FNfloat>
-- void DoSingleDomainWarp(int seed, float amp, float freq, FNfloat x, FNfloat y, FNfloat z, FNfloat& xr, FNfloat& yr, FNfloat& zr)
-+ void DoSingleDomainWarp(int seed, float amp, float freq, FNfloat x, FNfloat y, FNfloat z, FNfloat& xr, FNfloat& yr, FNfloat& zr) const
- {
- switch (mDomainWarpType)
- {
-@@ -2009,7 +2009,7 @@ private:
- // Domain Warp Single Wrapper
-
- template <typename FNfloat>
-- void DomainWarpSingle(FNfloat& x, FNfloat& y)
-+ void DomainWarpSingle(FNfloat& x, FNfloat& y) const
- {
- int seed = mSeed;
- float amp = mDomainWarpAmp * mFractalBounding;
-@@ -2023,7 +2023,7 @@ private:
- }
-
- template <typename FNfloat>
-- void DomainWarpSingle(FNfloat& x, FNfloat& y, FNfloat& z)
-+ void DomainWarpSingle(FNfloat& x, FNfloat& y, FNfloat& z) const
- {
- int seed = mSeed;
- float amp = mDomainWarpAmp * mFractalBounding;
-@@ -2041,7 +2041,7 @@ private:
- // Domain Warp Fractal Progressive
-
- template <typename FNfloat>
-- void DomainWarpFractalProgressive(FNfloat& x, FNfloat& y)
-+ void DomainWarpFractalProgressive(FNfloat& x, FNfloat& y) const
- {
- int seed = mSeed;
- float amp = mDomainWarpAmp * mFractalBounding;
-@@ -2062,7 +2062,7 @@ private:
- }
-
- template <typename FNfloat>
-- void DomainWarpFractalProgressive(FNfloat& x, FNfloat& y, FNfloat& z)
-+ void DomainWarpFractalProgressive(FNfloat& x, FNfloat& y, FNfloat& z) const
- {
- int seed = mSeed;
- float amp = mDomainWarpAmp * mFractalBounding;
-@@ -2087,7 +2087,7 @@ private:
- // Domain Warp Fractal Independant
-
- template <typename FNfloat>
-- void DomainWarpFractalIndependent(FNfloat& x, FNfloat& y)
-+ void DomainWarpFractalIndependent(FNfloat& x, FNfloat& y) const
- {
- FNfloat xs = x;
- FNfloat ys = y;
-@@ -2108,7 +2108,7 @@ private:
- }
-
- template <typename FNfloat>
-- void DomainWarpFractalIndependent(FNfloat& x, FNfloat& y, FNfloat& z)
-+ void DomainWarpFractalIndependent(FNfloat& x, FNfloat& y, FNfloat& z) const
- {
- FNfloat xs = x;
- FNfloat ys = y;
-@@ -2133,7 +2133,7 @@ private:
- // Domain Warp Basic Grid
-
- template <typename FNfloat>
-- void SingleDomainWarpBasicGrid(int seed, float warpAmp, float frequency, FNfloat x, FNfloat y, FNfloat& xr, FNfloat& yr)
-+ void SingleDomainWarpBasicGrid(int seed, float warpAmp, float frequency, FNfloat x, FNfloat y, FNfloat& xr, FNfloat& yr) const
- {
- FNfloat xf = x * frequency;
- FNfloat yf = y * frequency;
-@@ -2166,7 +2166,7 @@ private:
- }
-
- template <typename FNfloat>
-- void SingleDomainWarpBasicGrid(int seed, float warpAmp, float frequency, FNfloat x, FNfloat y, FNfloat z, FNfloat& xr, FNfloat& yr, FNfloat& zr)
-+ void SingleDomainWarpBasicGrid(int seed, float warpAmp, float frequency, FNfloat x, FNfloat y, FNfloat z, FNfloat& xr, FNfloat& yr, FNfloat& zr) const
- {
- FNfloat xf = x * frequency;
- FNfloat yf = y * frequency;
-@@ -2228,7 +2228,7 @@ private:
- // Domain Warp Simplex/OpenSimplex2
-
- template <typename FNfloat>
-- void SingleDomainWarpSimplexGradient(int seed, float warpAmp, float frequency, FNfloat x, FNfloat y, FNfloat& xr, FNfloat& yr, bool outGradOnly)
-+ void SingleDomainWarpSimplexGradient(int seed, float warpAmp, float frequency, FNfloat x, FNfloat y, FNfloat& xr, FNfloat& yr, bool outGradOnly) const
- {
- const float SQRT3 = 1.7320508075688772935274463415059f;
- const float G2 = (3 - SQRT3) / 6;
-@@ -2326,7 +2326,7 @@ private:
- }
-
- template <typename FNfloat>
-- void SingleDomainWarpOpenSimplex2Gradient(int seed, float warpAmp, float frequency, FNfloat x, FNfloat y, FNfloat z, FNfloat& xr, FNfloat& yr, FNfloat& zr, bool outGradOnly)
-+ void SingleDomainWarpOpenSimplex2Gradient(int seed, float warpAmp, float frequency, FNfloat x, FNfloat y, FNfloat z, FNfloat& xr, FNfloat& yr, FNfloat& zr, bool outGradOnly) const
- {
- x *= frequency;
- y *= frequency;
-@@ -1611,6 +1611,12 @@ private:
- }
- }
-
-+// GCC raises warnings when integer overflows occur, which are needed for hashing here.
-+#if defined(__GNUC__) && !defined(__clang__)
-+#pragma GCC diagnostic push
-+#pragma GCC diagnostic ignored "-Waggressive-loop-optimizations"
-+#endif
-+
- template <typename FNfloat>
- float SingleCellular(int seed, FNfloat x, FNfloat y, FNfloat z) const
- {
-@@ -1765,6 +1771,9 @@ private:
- }
- }
-
-+#if defined(__GNUC__) && !defined(__clang__)
-+#pragma GCC diagnostic pop
-+#endif
-
- // Perlin Noise
- \ No newline at end of file
diff --git a/thirdparty/noise/patches/namespace-warnings.patch b/thirdparty/noise/patches/namespace-warnings.patch
new file mode 100644
index 0000000000..6348ae1f05
--- /dev/null
+++ b/thirdparty/noise/patches/namespace-warnings.patch
@@ -0,0 +1,43 @@
+diff --git a/thirdparty/noise/FastNoiseLite.h b/thirdparty/noise/FastNoiseLite.h
+index ed97b0fcac..fb6dbcb92a 100644
+--- a/thirdparty/noise/FastNoiseLite.h
++++ b/thirdparty/noise/FastNoiseLite.h
+@@ -52,6 +52,8 @@
+
+ #include <cmath>
+
++namespace fastnoiselite {
++
+ class FastNoiseLite
+ {
+ public:
+@@ -1609,6 +1611,12 @@ private:
+ }
+ }
+
++// GCC raises warnings when integer overflows occur, which are needed for hashing here.
++#if defined(__GNUC__) && !defined(__clang__)
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Waggressive-loop-optimizations"
++#endif
++
+ template <typename FNfloat>
+ float SingleCellular(int seed, FNfloat x, FNfloat y, FNfloat z) const
+ {
+@@ -1763,6 +1771,9 @@ private:
+ }
+ }
+
++#if defined(__GNUC__) && !defined(__clang__)
++#pragma GCC diagnostic pop
++#endif
+
+ // Perlin Noise
+
+@@ -2583,4 +2594,6 @@ const T FastNoiseLite::Lookup<T>::RandVecs3D[] =
+ -0.7870349638f, 0.03447489231f, 0.6159443543f, 0, -0.2015596421f, 0.6859872284f, 0.6991389226f, 0, -0.08581082512f, -0.10920836f, -0.9903080513f, 0, 0.5532693395f, 0.7325250401f, -0.396610771f, 0, -0.1842489331f, -0.9777375055f, -0.1004076743f, 0, 0.0775473789f, -0.9111505856f, 0.4047110257f, 0, 0.1399838409f, 0.7601631212f, -0.6344734459f, 0, 0.4484419361f, -0.845289248f, 0.2904925424f, 0
+ };
+
++} // namespace fastnoiselite
++
+ #endif