diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-04-16 03:12:40 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-04-16 03:12:40 +0400 |
commit | afb4b65167165613f177a531bd3d4dcb3649c1c6 (patch) | |
tree | 32e1446b5fc3ce8ec00fa0e8b9e0fcb2eedda127 /source/blender/modifiers/intern/MOD_weightvgedit.c | |
parent | 638b084f824bc345468bc8e02422b5da65a641a7 (diff) |
Random number generator: replace a bunch of usage of the global random number
generator with a local one. It's not thread safe and will not give repeatable
results, so in most cases it should not be used.
Also fixes #34992 where the noise texture of a displacement modifier was not
properly random in opengl animation render, because the seed got reset to a
fixed value by an unrelated function while for final render it changed each
frame.
Diffstat (limited to 'source/blender/modifiers/intern/MOD_weightvgedit.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_weightvgedit.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/source/blender/modifiers/intern/MOD_weightvgedit.c b/source/blender/modifiers/intern/MOD_weightvgedit.c index 779ac6b5ecf..dd84dce05c2 100644 --- a/source/blender/modifiers/intern/MOD_weightvgedit.c +++ b/source/blender/modifiers/intern/MOD_weightvgedit.c @@ -29,6 +29,7 @@ */ #include "BLI_utildefines.h" +#include "BLI_ghash.h" #include "BLI_math.h" #include "BLI_string.h" @@ -239,7 +240,15 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der /* Do mapping. */ if (wmd->falloff_type != MOD_WVG_MAPPING_NONE) { - weightvg_do_map(numVerts, new_w, wmd->falloff_type, wmd->cmap_curve); + RNG *rng = NULL; + + if (wmd->falloff_type == MOD_WVG_MAPPING_RANDOM) + rng = BLI_rng_new_srandom(BLI_ghashutil_strhash(ob->id.name)); + + weightvg_do_map(numVerts, new_w, wmd->falloff_type, wmd->cmap_curve, rng); + + if (rng) + BLI_rng_free(rng); } /* Do masking. */ |