[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55418] trunk/blender/source: Fix: jittered brushes are not jittered, reported by kursad karatas.

Antony Riakiotakis kalast at gmail.com
Tue Mar 19 15:25:12 CET 2013


Revision: 55418
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55418
Author:   psy-fi
Date:     2013-03-19 14:25:12 +0000 (Tue, 19 Mar 2013)
Log Message:
-----------
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.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_brush.h
    trunk/blender/source/blender/blenkernel/intern/blender.c
    trunk/blender/source/blender/blenkernel/intern/brush.c
    trunk/blender/source/creator/creator.c

Modified: trunk/blender/source/blender/blenkernel/BKE_brush.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_brush.h	2013-03-19 13:46:46 UTC (rev 55417)
+++ trunk/blender/source/blender/blenkernel/BKE_brush.h	2013-03-19 14:25:12 UTC (rev 55418)
@@ -42,6 +42,11 @@
 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);

Modified: trunk/blender/source/blender/blenkernel/intern/blender.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/blender.c	2013-03-19 13:46:46 UTC (rev 55417)
+++ trunk/blender/source/blender/blenkernel/intern/blender.c	2013-03-19 14:25:12 UTC (rev 55418)
@@ -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 @@
 	IMB_exit();
 	BKE_images_exit();
 
+	BKE_brush_system_exit();
+
 	BLI_callback_global_finalize();
 
 	BKE_sequencer_cache_destruct();

Modified: trunk/blender/source/blender/blenkernel/intern/brush.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/brush.c	2013-03-19 13:46:46 UTC (rev 55417)
+++ trunk/blender/source/blender/blenkernel/intern/brush.c	2013-03-19 14:25:12 UTC (rev 55418)
@@ -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 @@
 		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);
 
 

Modified: trunk/blender/source/creator/creator.c
===================================================================
--- trunk/blender/source/creator/creator.c	2013-03-19 13:46:46 UTC (rev 55417)
+++ trunk/blender/source/creator/creator.c	2013-03-19 14:25:12 UTC (rev 55418)
@@ -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 @@
 	IMB_init();
 	BKE_images_init();
 
+	BKE_brush_system_init();
+
 #ifdef WITH_FFMPEG
 	IMB_ffmpeg_init();
 #endif




More information about the Bf-blender-cvs mailing list