Преглед на файлове

FastNoiseLite: Sync with 1.1.0, clean up SCsub

Doesn't fix the LTO warning about `-Waggressive-loop-optimizations`
due to GCC bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80922.
Rémi Verschelde преди 1 година
родител
ревизия
a5c52c1e38
променени са 6 файла, в които са добавени 53 реда и са изтрити 481 реда
  1. 1 1
      COPYRIGHT.txt
  2. 0 17
      modules/noise/SCsub
  3. 1 1
      thirdparty/README.md
  4. 8 7
      thirdparty/noise/FastNoiseLite.h
  5. 0 455
      thirdparty/noise/patches/FastNoiseLite.patch
  6. 43 0
      thirdparty/noise/patches/namespace-warnings.patch

+ 1 - 1
COPYRIGHT.txt

@@ -397,7 +397,7 @@ License: Expat
 
 Files: ./thirdparty/noise/FastNoiseLite.h
 Comment: FastNoise Lite
-Copyright: 2020, Jordan Peck and contributors
+Copyright: 2023, Jordan Peck and contributors
 License: Expat
 
 Files: ./thirdparty/misc/pcg.cpp

+ 0 - 17
modules/noise/SCsub

@@ -5,23 +5,9 @@ Import("env_modules")
 
 env_noise = env_modules.Clone()
 
-# Thirdparty source files
-
-thirdparty_obj = []
-
 thirdparty_dir = "#thirdparty/noise/"
-thirdparty_sources = [
-    # Add C++ source files for noise modules here
-]
-thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
-
 env_noise.Prepend(CPPPATH=[thirdparty_dir])
 
-env_thirdparty = env_noise.Clone()
-env_thirdparty.disable_warnings()
-env_thirdparty.add_source_files(thirdparty_obj, thirdparty_sources)
-env.modules_sources += thirdparty_obj
-
 # Godot source files
 
 module_obj = []
@@ -29,6 +15,3 @@ module_obj = []
 env_noise.add_source_files(module_obj, "*.cpp")
 env_noise.add_source_files(module_obj, "editor/*.cpp")
 env.modules_sources += module_obj
-
-# Needed to force rebuilding the module files when the thirdparty library is updated.
-env.Depends(module_obj, thirdparty_obj)

+ 1 - 1
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:

+ 8 - 7
thirdparty/noise/FastNoiseLite.h

@@ -1,7 +1,7 @@
 // MIT License
 //
-// Copyright(c) 2020 Jordan Peck ([email protected])
-// Copyright(c) 2020 Contributors
+// Copyright(c) 2023 Jordan Peck ([email protected])
+// 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

+ 0 - 455
thirdparty/noise/patches/FastNoiseLite.patch

@@ -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
- 

+ 43 - 0
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