[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16582] branches/soc-2008-unclezeiv/source /blender: Added a debug switch ("No rand clus") that disables random selection of lights as cluster representatives.

Davide Vercelli davide.vercelli at gmail.com
Wed Sep 17 23:00:43 CEST 2008


Revision: 16582
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16582
Author:   unclezeiv
Date:     2008-09-17 23:00:41 +0200 (Wed, 17 Sep 2008)

Log Message:
-----------
Added a debug switch ("No rand clus") that disables random selection of lights as cluster representatives. This options is intended for testers to see how it affects flickering in animations.

Modified Paths:
--------------
    branches/soc-2008-unclezeiv/source/blender/render/intern/source/lightcuts.c
    branches/soc-2008-unclezeiv/source/blender/src/buttons_scene.c

Modified: branches/soc-2008-unclezeiv/source/blender/render/intern/source/lightcuts.c
===================================================================
--- branches/soc-2008-unclezeiv/source/blender/render/intern/source/lightcuts.c	2008-09-17 20:02:20 UTC (rev 16581)
+++ branches/soc-2008-unclezeiv/source/blender/render/intern/source/lightcuts.c	2008-09-17 21:00:41 UTC (rev 16582)
@@ -100,6 +100,7 @@
 #define LC_OPT_NO_CLAMP    0x0020
 #define LC_OPT_ENV_NOSPEC  0x0040
 #define LC_OPT_IND_NOSPEC  0x0080
+#define LC_OPT_NO_RAND_CLS 0x0100
 
 #define LC_LAR_INDIRECT  0x01
 #define LC_LAR_GENERATED 0x02
@@ -291,12 +292,12 @@
 }
 
 /* returns 0 if the new cluster uses the first child as representative, 1 otherwise */
-static int add_new_cluster(LightcutsCluster *array, LightcutsClusterPair *minpair, int *root, float *colw)
+static int add_new_cluster(LightcutsCluster *array, LightcutsClusterPair *minpair, int *root, float *colw, int random)
 {
 	LightcutsCluster *one = &array[minpair->first];
 	LightcutsCluster *two = &array[minpair->second];
 	LightcutsCluster *dest = &array[*root];
-	int rep;
+	int rep, use_one_as_repr;
 
 	/* mark children elements as already in tree */
 	one->in_tree = 1;
@@ -324,8 +325,13 @@
 	if (one->type == CLUSTER_SPOT)
 		dest->cone_angle= get_bounding_cone(one, two, dest->cone_dir);
 
+	if (random)
+		use_one_as_repr= BLI_frand() * (one->luminance + two->luminance) < one->luminance;
+	else
+		use_one_as_repr= one->luminance > two->luminance;
+	
 	/* the representative light is chosen randomly among children */
-	if (BLI_frand() * (one->luminance + two->luminance) < one->luminance) {
+	if (use_one_as_repr) {
 		dest->lar= one->lar;
 		VECCOPY(dest->col, one->col);
 		rep= 0;
@@ -711,7 +717,7 @@
 
 		/* valid pair: build cluster out of it, mark children as used */
 		cluster_id = tree->free;
-		rep= add_new_cluster(array, minpair, &tree->free, lcd->colw);
+		rep= add_new_cluster(array, minpair, &tree->free, lcd->colw, !(lcd->options & LC_OPT_NO_RAND_CLS));
 		
 		if (rep==0) {
 			BLI_kdtree_weak_delete(kdtree, minpair->second);

Modified: branches/soc-2008-unclezeiv/source/blender/src/buttons_scene.c
===================================================================
--- branches/soc-2008-unclezeiv/source/blender/src/buttons_scene.c	2008-09-17 20:02:20 UTC (rev 16581)
+++ branches/soc-2008-unclezeiv/source/blender/src/buttons_scene.c	2008-09-17 21:00:41 UTC (rev 16582)
@@ -3473,17 +3473,18 @@
 	uiBlockEndAlign(block);
 	
 	uiBlockBeginAlign(block);
-	uiDefButBitI(block, TOG, SCE_PASS_LCFAUX, B_SET_PASS, "False color", 200, 0, 48, 20, &srl->passflag, 0, 0, 0, 0, "(Debug option) Deliver false color pass");
-	uiDefButI(block, NUM, B_DIFF, "Debug:", 200, -22, 48, 20, &G.scene->r.lightcuts_debug_options, 0, 0xffffffff, 0, 0, "(Debug option) Slider to select debug prints");
-	uiDefButBitI(block, TOG, 0x10, B_DIFF, "VPL Mesh", 200, -44, 48, 20, &G.scene->r.lightcuts_options, 0, 0, 0, 0, "(Debug option) Creates a mesh to visualize indirect light placement");
-	uiDefButBitI(block, TOG, 0x20, B_DIFF, "No clamp", 200, -66, 48, 20, &G.scene->r.lightcuts_options, 0, 0, 0, 0, "(Debug option) Disable clamping mechanism for virtual point lights");
-	uiDefButBitI(block, TOG, 0x01, B_DIFF, "Fixed", 200, -88, 48, 20, &G.scene->r.lightcuts_options, 0, 0, 0, 0, "(Debug option) Enable fixed directions for indirect lighting");
+	uiDefButBitI(block, TOG, 0x100, B_DIFF, "No rand clus", 200, 0, 64, 20, &G.scene->r.lightcuts_options, 0, 0, 0, 0, "(Debug option) Disable random selection of cluster representative");
+	uiDefButBitI(block, TOG, SCE_PASS_LCFAUX, B_SET_PASS, "False color", 200, -22, 64, 20, &srl->passflag, 0, 0, 0, 0, "(Debug option) Deliver false color pass");
+	uiDefButI(block, NUM, B_DIFF, "Debug:", 200, -44, 64, 20, &G.scene->r.lightcuts_debug_options, 0, 0xffffffff, 0, 0, "(Debug option) Slider to select debug prints");
+	uiDefButBitI(block, TOG, 0x10, B_DIFF, "VPL Mesh", 200, -66, 64, 20, &G.scene->r.lightcuts_options, 0, 0, 0, 0, "(Debug option) Creates a mesh to visualize indirect light placement");
+	uiDefButBitI(block, TOG, 0x20, B_DIFF, "No clamp", 200, -88, 64, 20, &G.scene->r.lightcuts_options, 0, 0, 0, 0, "(Debug option) Disable clamping mechanism for virtual point lights");
+	uiDefButBitI(block, TOG, 0x01, B_DIFF, "Fixed", 200, -110, 64, 20, &G.scene->r.lightcuts_options, 0, 0, 0, 0, "(Debug option) Enable fixed directions for indirect lighting");
 	uiBlockEndAlign(block);
 	
 	uiBlockBeginAlign(block);
-	uiDefButS(block, ROW, B_DIFF, "R601", 200, -120, 48, 20, &G.scene->r.lightcuts_color_weight, 0, 3, 0, 0, "R601 color weights: 0.299r 0.587g 0.114");
-	uiDefButS(block, ROW, B_DIFF, "Mid", 200, -132, 48, 20, &G.scene->r.lightcuts_color_weight, 0, 1, 0, 0, "Midway color weights: 0.316r 0.460g 0.224g");
-	uiDefButS(block, ROW, B_DIFF, "Even", 200, -154, 48, 20, &G.scene->r.lightcuts_color_weight, 0, 2, 0, 0, "Even color weights: 1/3r 1/3g 1/3b");
+	uiDefButS(block, ROW, B_DIFF, "R601", 200, -142, 64, 20, &G.scene->r.lightcuts_color_weight, 0, 3, 0, 0, "R601 color weights: 0.299r 0.587g 0.114");
+	uiDefButS(block, ROW, B_DIFF, "Mid", 200, -154, 64, 20, &G.scene->r.lightcuts_color_weight, 0, 1, 0, 0, "Midway color weights: 0.316r 0.460g 0.224g");
+	uiDefButS(block, ROW, B_DIFF, "Even", 200, -176, 64, 20, &G.scene->r.lightcuts_color_weight, 0, 2, 0, 0, "Even color weights: 1/3r 1/3g 1/3b");
 	uiBlockEndAlign(block);
 }
 





More information about the Bf-blender-cvs mailing list