Fix: jittered brushes are not jittered, reported by kursad karatas.
Issue is sharing using global random generator which is shared with particle system which resets the seed due to some scene/option combination. Since it may be desirable to get predictable results with particles, made sure brushes allocate their own random number generator on startup and use that for jittering.
This commit is contained in:
parent
8fe0c0eb45
commit
526d79d688
@ -42,6 +42,11 @@ struct Scene;
|
||||
struct wmOperator;
|
||||
// enum CurveMappingPreset;
|
||||
|
||||
|
||||
/* globals for brush execution */
|
||||
void BKE_brush_system_init(void);
|
||||
void BKE_brush_system_exit(void);
|
||||
|
||||
/* datablock functions */
|
||||
struct Brush *BKE_brush_add(struct Main *bmain, const char *name);
|
||||
struct Brush *BKE_brush_copy(struct Brush *brush);
|
||||
|
@ -66,6 +66,7 @@
|
||||
|
||||
#include "BKE_blender.h"
|
||||
#include "BKE_bpath.h"
|
||||
#include "BKE_brush.h"
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_depsgraph.h"
|
||||
#include "BKE_displist.h"
|
||||
@ -120,6 +121,8 @@ void free_blender(void)
|
||||
IMB_exit();
|
||||
BKE_images_exit();
|
||||
|
||||
BKE_brush_system_exit();
|
||||
|
||||
BLI_callback_global_finalize();
|
||||
|
||||
BKE_sequencer_cache_destruct();
|
||||
|
@ -55,6 +55,18 @@
|
||||
#include "RE_render_ext.h" /* externtex */
|
||||
#include "RE_shader_ext.h"
|
||||
|
||||
static RNG *brush_rng;
|
||||
|
||||
void BKE_brush_system_init(void) {
|
||||
brush_rng = BLI_rng_new(0);
|
||||
BLI_rng_srandom(brush_rng, 31415682);
|
||||
}
|
||||
|
||||
void BKE_brush_system_exit(void) {
|
||||
BLI_rng_free(brush_rng);
|
||||
}
|
||||
|
||||
|
||||
static void brush_defaults(Brush *brush)
|
||||
{
|
||||
brush->blend = 0;
|
||||
@ -877,8 +889,8 @@ void BKE_brush_jitter_pos(const Scene *scene, Brush *brush, const float pos[2],
|
||||
int diameter;
|
||||
|
||||
do {
|
||||
rand_pos[0] = BLI_frand() - 0.5f;
|
||||
rand_pos[1] = BLI_frand() - 0.5f;
|
||||
rand_pos[0] = BLI_rng_get_float(brush_rng) - 0.5f;
|
||||
rand_pos[1] = BLI_rng_get_float(brush_rng) - 0.5f;
|
||||
} while (len_v2(rand_pos) > 0.5f);
|
||||
|
||||
|
||||
|
@ -84,6 +84,7 @@
|
||||
#include "BLI_blenlib.h"
|
||||
|
||||
#include "BKE_blender.h"
|
||||
#include "BKE_brush.h"
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_depsgraph.h" /* for DAG_on_visible_update */
|
||||
#include "BKE_font.h"
|
||||
@ -1486,6 +1487,8 @@ int main(int argc, const char **argv)
|
||||
IMB_init();
|
||||
BKE_images_init();
|
||||
|
||||
BKE_brush_system_init();
|
||||
|
||||
#ifdef WITH_FFMPEG
|
||||
IMB_ffmpeg_init();
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user