Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacques Lucke <jacques@blender.org>2022-03-17 14:48:41 +0300
committerJacques Lucke <jacques@blender.org>2022-03-17 14:48:41 +0300
commitd0968a9c52019b817c001562adbb875780d94786 (patch)
tree4f5548adcd757cb75443bde77b082487fbf81839 /source/blender/blenlib/intern
parent8f68cff01b85bfde18c9442e6a638eda181ee159 (diff)
BLI: add probabilistic rounding utility
Diffstat (limited to 'source/blender/blenlib/intern')
-rw-r--r--source/blender/blenlib/intern/rand.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/blenlib/intern/rand.cc b/source/blender/blenlib/intern/rand.cc
index 27774cad31b..17bf5585f3f 100644
--- a/source/blender/blenlib/intern/rand.cc
+++ b/source/blender/blenlib/intern/rand.cc
@@ -374,6 +374,15 @@ void RandomNumberGenerator::seed_random(uint32_t seed)
this->seed(seed + hash[seed & 255]);
}
+int RandomNumberGenerator::round_probabilistic(float x)
+{
+ /* Support for negative values can be added when necessary. */
+ BLI_assert(x >= 0.0f);
+ const float round_up_probability = fractf(x);
+ const bool round_up = round_up_probability > this->get_float();
+ return (int)x + (int)round_up;
+}
+
float2 RandomNumberGenerator::get_unit_float2()
{
float a = (float)(M_PI * 2.0) * this->get_float();