[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