[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