summaryrefslogtreecommitdiff
path: root/src/noise.cpp
Commit message (Collapse)AuthorAge
* Inline triLinearInterpolationNoEase and triLinearInterpolation (#12421)paradust72022-06-11
| | | Performance profiling on Linux AMD64 showed this to be a significant bottleneck. The non-inlined functions are expensive due to XMM registers spilling onto the stack.
* fix integer overflow in mapgen (#11641)JosiahWI2022-06-03
| | | | | | | | | | | | | | | | | | | | * fix integer overflow in mapgen Some calculations involving the magic seed had overflow because the result of an intermediate arithmetic step could not fit in an s32. By making the magic seed unsigned, the other operand in the equation will be cast to unsigned, and possibly other operands or intermediate operands. This will result in unexpected behavior if an operand is negative, which is technically possible, but logically should not happen. * comment noise2d bitshift While working through the code I was momentarily concerned that the right bitshift in noise2d could fill ones in some cases. It turns out that with signed integers, this is indeed true, but this one is shifting an unsigned integer, so the behavior is as expected. I put a comment here to clarify this, in case someone else wonders the same thing down the line. * noise2d and noise3d unittests I have added 3 tests each for noise2d and noise3d, testing all zero inputs, a very large seed (case which caused UB in the old implementation) and some fun primes I picked for no particular reason. This should be sufficient to demonstrate that the behavior of the new implementation has not changed. I used uniform initialization because it is a good feature of C++11. Please do not explode. * uncomment the noise2d bitshift This reverts commit 583b77ee9f1ad6bb77340ebb5ba51eb9a88ff51c. It's a well-defined language semantic; it doesn't need to be commented. * code cleanliness
* Remove a few unused functions reported by callcatcher (#11658)SmallJoker2021-10-12
|
* Fix broken `BiomeGen` abstraction (#11107)sfan52021-03-23
|
* Fix GCC class-memaccess warnings (#10239)Paul Ouellette2020-08-01
|
* Remove unused lookup table from noise.cppsfan52020-04-26
| | | | closes #9757
* Display an error when a noise parameter has too many octaves (#9394)Paramat2020-02-12
| | | | Display an error and throw exception when one or more octaves of a noise has spread < 1, causing random looking broken noise.
* Fix more clang-tidy reported problems for performance-type-promotion-in-math-fnLoic Blot2018-04-03
| | | | Based on https://travis-ci.org/minetest/minetest/jobs/361714253 output
* Code modernization: src/n*, src/o* (#6280)Loïc Blot2017-08-19
| | | | | | | | | | | * Code modernization: src/n*, src/o* * empty function * default constructor/destructor * for range-based loops * use emplace_back instead of push_back * remove unused IWritableNodeDefManager::clone() * C++ STL header style * Pointer constness in some functions
* Noise: Prevent unittest crash caused by division by zeroSmallJoker2017-07-29
|
* Revert "Noise::perlinMap2D,3D: replace a loop init with a single memset call"Loïc Blot2017-07-27
| | | | This reverts commit bc1654feedc90caa8c26328ca6f0fc59fbe5b76c.
* Noise::perlinMap2D,3D: replace a loop init with a single memset callLoic Blot2017-07-27
|
* Fix msvc annoyances (#5963)adrido2017-06-27
| | | | | | | | | | | | | | | | | | | | * MSVC: Fix '/std:c++11' is not a valid compiler option * MSVC/MINGW: Define 'WIN32_LEAN_AND_MEAN' for the whole project In some obscure cases 'Windows.h" got includet before that definition, which leaded to compilation warnings+errors * MSVC: '/arch:SSE' is only available for x86 * MSVC: Fix float conversation * MSVC/MINGW: use winthreads on Windows * MSVC: 'USE_CMAKE_CONFIG' might be already definied by CMake build system * MSVC: Use all available cpu cores for compiling * Add missing include ctime and use std::time_t
* Cpp11 patchset 11: continue working on constructor style migration (#6004)Loïc Blot2017-06-18
|
* PcgRandom: Fix/improve documentationkwolekr2016-06-04
|
* Change internal type for seeds to s32kwolekr2016-06-04
| | | | | This fixes value truncation (and therefore incompatibility) on platforms with an LP32 data model, such as VAX or MS-DOS.
* Fix spelling of noise_thresholdJun Zhang2015-12-06
|
* Fix Noise compiled under clang >= 3.7.x with -O2 or higherkwolekr2015-11-01
| | | | | | | | | | When compiled with optimizations, the most recent versions of clang seem to 'optimize' out a crucial "and %reg, 0x7FFFFFFF" instruction in noise2d(), probably because it somehow assumed the variable n would never become greater than that amount. Indeed, signed integer underflow is undefined behavior in C and C++, so while this optimization is "correct" in that sense, it breaks lots of existing code. Solved by changing n to an unsigned type, making behavior well-defined.
* Fix Lua PcgRandomest312015-08-12
| | | | | | | | | | | | | | | | Before, this lua code led to a crash: local pcg = PcgRandom(42) local value = pcg:next() This was because if you called s32 PcgRandom::range(min, max) with the minimum and maximum possible values for s32 integers (which the lua binding code did), u32 PcgRandom::range(bound) got called with 0 as the bound. The bound however is one above the maximum value, so 0 is a "special" value to pass to this function. This commit fixes the lua crash by assigning the RNG's full range to the bound 0, which is also fits to the "maximum is bound - 1" principle, as (u32)-1 is the maximum value in the u32 range.
* Remove some old dead code. Fix some Clang warnings in SRP (ng->N... willLoic Blot2015-07-24
| | | | always evaluate to true.
* Misc. minor fixeskwolekr2015-07-10
|
* Noise: Fix interpolation at negative coordinateskwolekr2015-05-17
|
* Add -Wsign-compare for Clang builds and fix some signed/unsigned compiler ↵kwolekr2015-05-16
| | | | warnings
* Noise: Make buffer size parameters unsignedkwolekr2015-05-15
|
* Fix MSVC compatibilitykwolekr2015-04-29
| | | | | | Make sure to include random unittests in android builds, too Use SWAP() macro Ensure that negative ranges are tested as well in random unittests
* Noise: Fix PcgRandom::randNormalDist() when range contains negative numberskwolekr2015-04-27
| | | | | This fixes an issue with erroneous float-to-int rounding that resulted in truncation toward 0, causing a biased distribution.
* Replace PRNG assertions with PrngExceptionkwolekr2015-04-27
|
* Noise: Add noise unittestskwolekr2015-04-21
| | | | | Fix buffer size calculation for lacunarity < 1.0 Add guard against absurd noise parameters
* Noise: Correct noise objects created with invalid dimensionskwolekr2015-04-19
|
* Fix endianness inconsistency with PcgRandom::bytes()kwolekr2015-03-23
|
* Fix some loose ends from 3993093fkwolekr2015-03-22
|
* Add support for the PCG32 PRNG algo (and associated script APIs)kwolekr2015-03-22
|
* Noise: Don't assume Noise is used for 2D unless gradientMap2D is actually calledkwolekr2014-12-14
|
* Clean up Noise macroskwolekr2014-12-11
|
* Noise: Automatically transform noise maps if neededkwolekr2014-12-10
|
* Noise: Create a deep copy of NoiseParamskwolekr2014-12-10
|
* Noise: Update Noise::resizeNoiseBuf to account for lacunarity not equal to 2kwolekr2014-12-09
|
* Optimize noise implementationskwolekr2014-12-08
|
* Add flags and lacunarity as new noise parameterskwolekr2014-12-07
| | | | | | | Add 'absolute value' option to noise map functions Extend persistence modulation to 3D noise Extend 'eased' option to noise2d_perlin* functions Some noise.cpp formatting fixups
* noise: Throw exception on noise allocation failurekwolekr2014-11-29
|
* Add eased 3d point-value noise functionskwolekr2014-11-12
|
* Add mgv5. New noise code, uses biome API. Eased 3d noise for terrain, caves, ↵paramat2014-11-08
| | | | blobs
* Change license of noise implementation to Simplified BSDkwolekr2014-10-27
|
* Add support for eased 3d noisekwolekr2014-10-27
|
* Omnicleanup: header cleanup, add ModApiUtil shared between game and mainmenuKahrl2013-08-14
|
* Add Mapgen V7, reorganize biomeskwolekr2013-04-07
|
* Fix most warnings, re-fix MSVC compile errorkwolekr2013-02-26
|
* Update Copyright YearsSfan52013-02-24
|
* Change Minetest-c55 to MinetestPilzAdam2013-02-24
|
* Fix and improve noise map functionskwolekr2013-02-06
|