[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26650] trunk/blender: Fix #20452: motion blur buttons were missing.
Brecht Van Lommel
brecht at blender.org
Sat Feb 6 21:25:19 CET 2010
Revision: 26650
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26650
Author: blendix
Date: 2010-02-06 21:25:17 +0100 (Sat, 06 Feb 2010)
Log Message:
-----------
Fix #20452: motion blur buttons were missing. Motion blur samples
are now also decoupled from antialiasing samples. Implemented by
Matt, I'm just committing the patch.
Modified Paths:
--------------
trunk/blender/release/scripts/ui/properties_render.py
trunk/blender/source/blender/blenloader/intern/readfile.c
trunk/blender/source/blender/makesdna/DNA_scene_types.h
trunk/blender/source/blender/makesrna/intern/rna_scene.c
trunk/blender/source/blender/render/intern/include/render_types.h
trunk/blender/source/blender/render/intern/source/initrender.c
trunk/blender/source/blender/render/intern/source/pipeline.c
trunk/blender/source/blender/render/intern/source/zbuf.c
Modified: trunk/blender/release/scripts/ui/properties_render.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_render.py 2010-02-06 18:26:27 UTC (rev 26649)
+++ trunk/blender/release/scripts/ui/properties_render.py 2010-02-06 20:25:17 UTC (rev 26650)
@@ -460,8 +460,27 @@
col = split.column()
col.prop(rd, "pixel_filter", text="")
col.prop(rd, "filter_size", text="Size")
+
+class RENDER_PT_motion_blur(RenderButtonsPanel):
+ bl_label = "Full Sample Motion Blur"
+ bl_default_closed = True
+ COMPAT_ENGINES = {'BLENDER_RENDER'}
+ def draw_header(self, context):
+ rd = context.scene.render_data
+
+ self.layout.prop(rd, "motion_blur", text="")
+
+ def draw(self, context):
+ layout = self.layout
+
+ rd = context.scene.render_data
+ layout.active = rd.motion_blur
+
+ row = layout.row()
+ row.prop(rd, "motion_blur_samples")
+
class RENDER_PT_dimensions(RenderButtonsPanel):
bl_label = "Dimensions"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -608,6 +627,7 @@
bpy.types.register(RENDER_PT_layers)
bpy.types.register(RENDER_PT_dimensions)
bpy.types.register(RENDER_PT_antialiasing)
+bpy.types.register(RENDER_PT_motion_blur)
bpy.types.register(RENDER_PT_shading)
bpy.types.register(RENDER_PT_output)
bpy.types.register(RENDER_PT_encoding)
Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c 2010-02-06 18:26:27 UTC (rev 26649)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c 2010-02-06 20:25:17 UTC (rev 26650)
@@ -10082,6 +10082,8 @@
if(sce->r.frame_step==0)
sce->r.frame_step= 1;
+ if (sce->r.mblur_samples==0)
+ sce->r.mblur_samples = sce->r.osa;
if(sce->ed && sce->ed->seqbasep)
{
Modified: trunk/blender/source/blender/makesdna/DNA_scene_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_scene_types.h 2010-02-06 18:26:27 UTC (rev 26649)
+++ trunk/blender/source/blender/makesdna/DNA_scene_types.h 2010-02-06 20:25:17 UTC (rev 26650)
@@ -302,8 +302,11 @@
/* information on different layers to be rendered */
ListBase layers;
- short actlay, pad;
+ short actlay;
+ /* number of mblur samples */
+ short mblur_samples;
+
/**
* Adjustment factors for the aspect ratio in the x direction, was a short in 2.45
*/
Modified: trunk/blender/source/blender/makesrna/intern/rna_scene.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_scene.c 2010-02-06 18:26:27 UTC (rev 26649)
+++ trunk/blender/source/blender/makesrna/intern/rna_scene.c 2010-02-06 20:25:17 UTC (rev 26650)
@@ -2164,9 +2164,15 @@
prop= RNA_def_property(srna, "motion_blur", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", R_MBLUR);
- RNA_def_property_ui_text(prop, "Motion Blur", "Use multi-sampled 3D scene motion blur (uses number of anti-aliasing samples).");
+ RNA_def_property_ui_text(prop, "Motion Blur", "Use multi-sampled 3D scene motion blur");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+ prop= RNA_def_property(srna, "motion_blur_samples", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "mblur_samples");
+ RNA_def_property_range(prop, 1, 32);
+ RNA_def_property_ui_text(prop, "Motion Samples", "Number of scene samples to take with motion blur");
+ RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
+
prop= RNA_def_property(srna, "use_border", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", R_BORDER);
RNA_def_property_ui_text(prop, "Border", "Render a user-defined border region, within the frame size.");
Modified: trunk/blender/source/blender/render/intern/include/render_types.h
===================================================================
--- trunk/blender/source/blender/render/intern/include/render_types.h 2010-02-06 18:26:27 UTC (rev 26649)
+++ trunk/blender/source/blender/render/intern/include/render_types.h 2010-02-06 20:25:17 UTC (rev 26650)
@@ -161,6 +161,7 @@
/* samples */
SampleTables *samples;
float jit[32][2];
+ float mblur_jit[32][2];
ListBase *qmcsamplers;
/* shadow counter, detect shadow-reuse for shaders */
Modified: trunk/blender/source/blender/render/intern/source/initrender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/initrender.c 2010-02-06 18:26:27 UTC (rev 26649)
+++ trunk/blender/source/blender/render/intern/source/initrender.c 2010-02-06 20:25:17 UTC (rev 26650)
@@ -85,15 +85,23 @@
static void init_render_jit(Render *re)
{
static float jit[32][2]; /* simple caching */
+ static float mblur_jit[32][2]; /* simple caching */
static int lastjit= 0;
+ static int last_mblur_jit= 0;
- if(lastjit!=re->r.osa) {
+ if(lastjit!=re->r.osa || last_mblur_jit != re->r.mblur_samples) {
memset(jit, 0, sizeof(jit));
BLI_initjit(jit[0], re->r.osa);
+
+ memset(mblur_jit, 0, sizeof(mblur_jit));
+ BLI_initjit(mblur_jit[0], re->r.mblur_samples);
}
lastjit= re->r.osa;
memcpy(re->jit, jit, sizeof(jit));
+
+ last_mblur_jit= re->r.mblur_samples;
+ memcpy(re->mblur_jit, mblur_jit, sizeof(mblur_jit));
}
Modified: trunk/blender/source/blender/render/intern/source/pipeline.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/pipeline.c 2010-02-06 18:26:27 UTC (rev 26649)
+++ trunk/blender/source/blender/render/intern/source/pipeline.c 2010-02-06 20:25:17 UTC (rev 26650)
@@ -1929,20 +1929,20 @@
{
RenderResult *rres;
float blurfac;
- int blur= re->r.osa;
+ int blur= re->r.mblur_samples;
/* create accumulation render result */
rres= new_render_result(re, &re->disprect, 0, RR_USEMEM);
/* do the blur steps */
while(blur--) {
- set_mblur_offs( re->r.blurfac*((float)(re->r.osa-blur))/(float)re->r.osa );
+ set_mblur_offs( re->r.blurfac*((float)(re->r.mblur_samples-blur))/(float)re->r.mblur_samples );
- re->i.curblur= re->r.osa-blur; /* stats */
+ re->i.curblur= re->r.mblur_samples-blur; /* stats */
do_render_3d(re);
- blurfac= 1.0f/(float)(re->r.osa-blur);
+ blurfac= 1.0f/(float)(re->r.mblur_samples-blur);
merge_renderresult_blur(rres, re->result, blurfac, re->r.alphamode & R_ALPHAKEY);
if(re->test_break(re->tbh)) break;
Modified: trunk/blender/source/blender/render/intern/source/zbuf.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/zbuf.c 2010-02-06 18:26:27 UTC (rev 26649)
+++ trunk/blender/source/blender/render/intern/source/zbuf.c 2010-02-06 20:25:17 UTC (rev 26650)
@@ -2070,8 +2070,8 @@
zspan->zofsy= -pa->disprect.ymin - R.jit[pa->sample+zsample][1];
}
else if(R.i.curblur) {
- zspan->zofsx= -pa->disprect.xmin - R.jit[R.i.curblur-1][0];
- zspan->zofsy= -pa->disprect.ymin - R.jit[R.i.curblur-1][1];
+ zspan->zofsx= -pa->disprect.xmin - R.mblur_jit[R.i.curblur-1][0];
+ zspan->zofsy= -pa->disprect.ymin - R.mblur_jit[R.i.curblur-1][1];
}
else {
zspan->zofsx= -pa->disprect.xmin;
@@ -3414,7 +3414,7 @@
if(R.osa)
jit= R.jit;
else if(R.i.curblur)
- jit= &R.jit[R.i.curblur-1];
+ jit= &R.mblur_jit[R.i.curblur-1];
else
jit= NULL;
More information about the Bf-blender-cvs
mailing list