[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12467] branches/qdune/blender/source/ blender: Added a toggle button that sets a default filtersize for the

Alfredo de Greef eeshlo at yahoo.com
Sun Nov 4 05:17:39 CET 2007


Revision: 12467
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12467
Author:   eeshlo
Date:     2007-11-04 05:17:39 +0100 (Sun, 04 Nov 2007)

Log Message:
-----------
Added a toggle button that sets a default filtersize for the
currently selected filter. It is on by default.
Bugfix: RiOption() referenced a blender short value, but RiOption()
expects an integer. This might possibly explain some reported crashes on PPC.

Modified Paths:
--------------
    branches/qdune/blender/source/blender/blenkernel/intern/scene.c
    branches/qdune/blender/source/blender/blenloader/intern/readfile.c
    branches/qdune/blender/source/blender/makesdna/DNA_scene_types.h
    branches/qdune/blender/source/blender/render/intern/source/qdinterface.c
    branches/qdune/blender/source/blender/src/buttons_scene.c

Modified: branches/qdune/blender/source/blender/blenkernel/intern/scene.c
===================================================================
--- branches/qdune/blender/source/blender/blenkernel/intern/scene.c	2007-11-04 02:25:32 UTC (rev 12466)
+++ branches/qdune/blender/source/blender/blenkernel/intern/scene.c	2007-11-04 04:17:39 UTC (rev 12467)
@@ -217,6 +217,7 @@
 	sce->r.QDpixelsamples = 1;
 	sce->r.QDfiltersize = 1.0f;
 	sce->r.QDpartsize = 32;
+	sce->r.QDautofsize = 1;
 
 	sce->toolsettings = MEM_callocN(sizeof(struct ToolSettings),"Tool Settings Struct");
 	sce->toolsettings->cornertype=1;

Modified: branches/qdune/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/qdune/blender/source/blender/blenloader/intern/readfile.c	2007-11-04 02:25:32 UTC (rev 12466)
+++ branches/qdune/blender/source/blender/blenloader/intern/readfile.c	2007-11-04 04:17:39 UTC (rev 12467)
@@ -6750,6 +6750,7 @@
 				sce->r.QDfiltersize = 1.0f;
 				sce->r.QDshadingrate = 1.0f;
 				sce->r.QDpartsize = 32;
+				sce->r.QDautofsize = 1;
 			}
 		}
 	}

Modified: branches/qdune/blender/source/blender/makesdna/DNA_scene_types.h
===================================================================
--- branches/qdune/blender/source/blender/makesdna/DNA_scene_types.h	2007-11-04 02:25:32 UTC (rev 12466)
+++ branches/qdune/blender/source/blender/makesdna/DNA_scene_types.h	2007-11-04 04:17:39 UTC (rev 12467)
@@ -278,7 +278,7 @@
 	/* micropolygon */
 	float QDshadingrate, QDfiltersize;
 	short QDpixelsamples, QDpartorder, QDpartsize;
-	short pad3;
+	short QDautofsize;
 
 	/* paths to backbufffer, output, ftype */
 	char backbuf[160], pic[160], ftype[160];

Modified: branches/qdune/blender/source/blender/render/intern/source/qdinterface.c
===================================================================
--- branches/qdune/blender/source/blender/render/intern/source/qdinterface.c	2007-11-04 02:25:32 UTC (rev 12466)
+++ branches/qdune/blender/source/blender/render/intern/source/qdinterface.c	2007-11-04 04:17:39 UTC (rev 12467)
@@ -490,6 +490,7 @@
 	ShadBuf *shb= lar->shb;
 	float jitter = 0.0f, wsize, angle, temp;
 	float mat[4][4];
+	int partsize = (int)re->r.QDpartsize;	// RiOption expects an integer
 
 	RiBlenderFuncs(
 		(RtBlenderBucketAdd)qdune_shadow_part_add,
@@ -505,7 +506,8 @@
 	/* setup display */
 	RiDisplay("blender", RI_BLENDER, RI_Z, RI_NULL);
 	RiHider(RI_HIDDEN, RI_JITTER, &jitter, RI_NULL);
-	RiOption("limits", RI_BUCKETSIZE, &re->r.QDpartsize, RI_NULL);
+	/* !!! RiOption expects an integer, cannot reference QDpartsize here, is a short !!! */
+	RiOption("limits", RI_BUCKETSIZE, &partsize, RI_NULL);
 
 	/* setup image */
 	RiFormat(shb->size, shb->size, 1);
@@ -551,6 +553,7 @@
 	float jitter, pixw, pixh, filtersize;
 	int samples;
 	rctf viewplane;
+	int partsize = (int)re->r.QDpartsize;	// RiOption expects an integer
 	RtToken orders[] = {RI_SWEEP_ORDER, RI_SCAN_ORDER, RI_HILBERT_ORDER,
 	 RI_PEANO_ORDER, RI_SPIRAL_IN_ORDER, RI_SPIRAL_OUT_ORDER, RI_RANDOM_ORDER};
 
@@ -582,7 +585,8 @@
 	/* setup display */
 	RiDisplay("blender", RI_BLENDER, RI_RGB, RI_NULL);
 	RiHider(RI_HIDDEN, RI_JITTER, &jitter, RI_NULL);
-	RiOption("limits", RI_BUCKETSIZE, &re->r.QDpartsize, RI_NULL);
+	/* !!! RiOption expects an integer, cannot reference QDpartsize here, is a short !!! */
+	RiOption("limits", RI_BUCKETSIZE, &partsize, RI_NULL);
 
 	/* setup image */
 	RiFormat(re->disprect.xmax - re->disprect.xmin,
@@ -595,8 +599,29 @@
 	else {
 		RiPixelSamples(re->r.QDpixelsamples, re->r.QDpixelsamples);
 	}
-	
-	filtersize= re->r.QDfiltersize;
+
+	if (re->r.QDautofsize) {
+		/* use best default filtersize for selected filter */
+		if(re->r.filtertype == R_FILTER_BOX)
+			filtersize = 1.f;
+		else if(re->r.filtertype == R_FILTER_TENT)
+			filtersize = 1.5f;
+		else if(re->r.filtertype == R_FILTER_CATROM)
+			filtersize = 4.f;
+		else if(re->r.filtertype == R_FILTER_GAUSS)
+			filtersize = 2.f;
+		else if(re->r.filtertype == R_FILTER_QUAD)
+			filtersize = 3.f;
+		else if(re->r.filtertype == R_FILTER_CUBIC)
+			filtersize = 4.f;
+		else if(re->r.filtertype == R_FILTER_MITCH)
+			filtersize = 4.f;
+		else
+			filtersize = 1.f;
+	}
+	else
+		filtersize= re->r.QDfiltersize;
+
 	if(re->r.filtertype == R_FILTER_BOX)
 		RiPixelFilter(RiBoxFilter, filtersize, filtersize);
 	else if(re->r.filtertype == R_FILTER_TENT)

Modified: branches/qdune/blender/source/blender/src/buttons_scene.c
===================================================================
--- branches/qdune/blender/source/blender/src/buttons_scene.c	2007-11-04 02:25:32 UTC (rev 12466)
+++ branches/qdune/blender/source/blender/src/buttons_scene.c	2007-11-04 04:17:39 UTC (rev 12467)
@@ -1305,8 +1305,9 @@
 
 	if(G.scene->r.renderer == R_QDUNE) {
 		uiBlockBeginAlign(block);
-		uiDefButS(block, MENU, B_DIFF, "Part Order %t|Sweep %x0|Scan %x1|Hilbert %x2|Peano %x3|Spiral In %x4|Spiral Out %x5|Random %x6", 369, 46, 95, 29, &G.scene->r.QDpartorder, 0, 0, 0, 0, "Choose render part order");	
-		uiDefButS(block, NUM,B_DIFF, "Size:", 464, 46, 95, 29,&G.scene->r.QDpartsize,1.0, 1024.0, 0, 0, "Sets the size of parts in pixels");
+		uiDefButS(block, MENU, B_DIFF, "Part Order %t|Sweep %x0|Scan %x1|Hilbert %x2|Peano %x3|Spiral In %x4|Spiral Out %x5|Random %x6", 369, 60, 95, 20, &G.scene->r.QDpartorder, 0, 0, 0, 0, "Choose render part order");	
+		uiDefButS(block, NUM,B_DIFF, "Size:", 464, 60, 95, 20,&G.scene->r.QDpartsize,1.0, 1024.0, 0, 0, "Sets the size of parts in pixels");
+		uiDefButBitS(block, TOG, 1, B_REDR, "Auto Filtersize", 369, 40, 190, 20, &G.scene->r.QDautofsize, 0, 0, 0, 0, "Automatically set best filter size for the current selected filter");
 		uiBlockEndAlign(block);
 	}
 	else {
@@ -1347,8 +1348,10 @@
 	
 	sprintf(str, "Filter%%t|Box %%x%d|Tent %%x%d|Quad %%x%d|Cubic %%x%d|Gauss %%x%d|CatRom %%x%d|Mitch %%x%d", R_FILTER_BOX, R_FILTER_TENT, R_FILTER_QUAD, R_FILTER_CUBIC, R_FILTER_GAUSS, R_FILTER_CATROM, R_FILTER_MITCH);
 	uiDefButS(block, MENU, B_DIFF,str,		565,34,60,20, &G.scene->r.filtertype, 0, 0, 0, 0, "Set sampling filter for antialiasing");
-	if(G.scene->r.renderer == R_QDUNE)
-		uiDefButF(block, NUM,B_DIFF,"",			627,34,60,20,&G.scene->r.QDfiltersize,1.0, 10.0, 10, 2, "Sets the filter size");
+	if(G.scene->r.renderer == R_QDUNE) {
+		if (!G.scene->r.QDautofsize)
+			uiDefButF(block, NUM,B_DIFF,"",			627,34,60,20,&G.scene->r.QDfiltersize,1.0, 10.0, 10, 2, "Sets the filter size");
+	}
 	else
 		uiDefButF(block, NUM,B_DIFF,"",			627,34,60,20,&G.scene->r.gauss,0.5, 1.5, 10, 2, "Sets the filter size");
 	





More information about the Bf-blender-cvs mailing list