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;
        


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to