Revision: 52434
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52434
Author:   campbellbarton
Date:     2012-11-21 10:20:38 +0000 (Wed, 21 Nov 2012)
Log Message:
-----------
fix for re->partx/re->party values being different for RE_Database_FromScene() 
then the main render loop.

Modified Paths:
--------------
    trunk/blender/source/blender/render/intern/include/initrender.h
    trunk/blender/source/blender/render/intern/source/external_engine.c
    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/renderdatabase.c

Modified: trunk/blender/source/blender/render/intern/include/initrender.h
===================================================================
--- trunk/blender/source/blender/render/intern/include/initrender.h     
2012-11-21 10:13:52 UTC (rev 52433)
+++ trunk/blender/source/blender/render/intern/include/initrender.h     
2012-11-21 10:20:38 UTC (rev 52434)
@@ -40,8 +40,9 @@
 void free_sample_tables(Render *re);
 void make_sample_tables(Render *re);
 
-void initparts(Render *re, int do_crop);
-void freeparts(Render *re);
+void RE_parts_clamp(Render *re);
+void RE_parts_init(Render *re, int do_crop);
+void RE_parts_free(Render *re);
 
 
 #endif /* __INITRENDER_H__ */

Modified: trunk/blender/source/blender/render/intern/source/external_engine.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/external_engine.c 
2012-11-21 10:13:52 UTC (rev 52433)
+++ trunk/blender/source/blender/render/intern/source/external_engine.c 
2012-11-21 10:20:38 UTC (rev 52434)
@@ -376,7 +376,7 @@
        if ((re->r.scemode & (R_NO_FRAME_UPDATE | R_PREVIEWBUTS)) == 0)
                BKE_scene_update_for_newframe(re->main, re->scene, re->lay);
 
-       initparts(re, FALSE);
+       RE_parts_init(re, FALSE);
        engine->tile_x = re->partx;
        engine->tile_y = re->party;
 
@@ -407,7 +407,7 @@
                BLI_rw_mutex_unlock(&re->resultmutex);
        }
 
-       freeparts(re);
+       RE_parts_free(re);
 
        if (BKE_reports_contain(re->reports, RPT_ERROR))
                G.is_break = TRUE;

Modified: trunk/blender/source/blender/render/intern/source/initrender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/initrender.c      
2012-11-21 10:13:52 UTC (rev 52433)
+++ trunk/blender/source/blender/render/intern/source/initrender.c      
2012-11-21 10:20:38 UTC (rev 52434)
@@ -525,7 +525,7 @@
 /* ~~~~~~~~~~~~~~~~ part (tile) calculus ~~~~~~~~~~~~~~~~~~~~~~ */
 
 
-void freeparts(Render *re)
+void RE_parts_free(Render *re)
 {
        RenderPart *part = re->parts.first;
        
@@ -537,12 +537,19 @@
        BLI_freelistN(&re->parts);
 }
 
-void initparts(Render *re, int do_crop)
+void RE_parts_clamp(Render *re)
 {
+       /* part size */
+       re->partx = min_ii(re->r.tilex, re->rectx);
+       re->party = min_ii(re->r.tiley, re->recty);
+}
+
+void RE_parts_init(Render *re, int do_crop)
+{
        int nr, xd, yd, partx, party, xparts, yparts;
        int xminb, xmaxb, yminb, ymaxb;
        
-       freeparts(re);
+       RE_parts_free(re);
        
        /* this is render info for caller, is not reset when parts are freed! */
        re->i.totpart = 0;
@@ -555,13 +562,10 @@
        xmaxb = re->disprect.xmax;
        ymaxb = re->disprect.ymax;
        
-       /* part size */
-       partx = min_ii(re->r.tilex, re->rectx);
-       party = min_ii(re->r.tiley, re->recty);
-       
-       re->partx = partx;
-       re->party = party;
-       
+       RE_parts_clamp(re);
+
+       partx = re->partx;
+       party = re->party;
        /* part count */
        xparts = (re->rectx + partx - 1) / partx;
        yparts = (re->recty + party - 1) / party;

Modified: trunk/blender/source/blender/render/intern/source/pipeline.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/pipeline.c        
2012-11-21 10:13:52 UTC (rev 52433)
+++ trunk/blender/source/blender/render/intern/source/pipeline.c        
2012-11-21 10:20:38 UTC (rev 52434)
@@ -693,7 +693,7 @@
 
 /* calculus for how much 1 pixel rendered should rotate the 3d geometry */
 /* is not that simple, needs to be corrected for errors of larger viewplane 
sizes */
-/* called in initrender.c, initparts() and convertblender.c, for speedvectors 
*/
+/* called in initrender.c, RE_parts_init() and convertblender.c, for 
speedvectors */
 float panorama_pixel_rot(Render *re)
 {
        float psize, phi, xfac;
@@ -836,7 +836,7 @@
        
        /* warning; no return here without closing exr file */
        
-       initparts(re, TRUE);
+       RE_parts_init(re, TRUE);
 
        if (re->result->do_exr_tile)
                render_result_exr_file_begin(re);
@@ -928,7 +928,7 @@
        g_break = 0;
        
        BLI_end_threads(&threads);
-       freeparts(re);
+       RE_parts_free(re);
        re->viewplane = viewplane; /* restore viewplane, modified by pano 
render */
 }
 
@@ -947,6 +947,7 @@
                return;
 
        /* internal */
+       RE_parts_clamp(re);
        
 //     re->cfra= cfra; /* <- unused! */
        re->scene->r.subframe = re->mblur_offs + re->field_offs;

Modified: trunk/blender/source/blender/render/intern/source/renderdatabase.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/renderdatabase.c  
2012-11-21 10:13:52 UTC (rev 52433)
+++ trunk/blender/source/blender/render/intern/source/renderdatabase.c  
2012-11-21 10:20:38 UTC (rev 52434)
@@ -1179,30 +1179,36 @@
 /* -------------------------- operations on entire database 
----------------------- */
 
 /* ugly function for halos in panorama */
-static int panotestclip(Render *re, int do_pano, float *v)
+static int panotestclip(Render *re, int do_pano, float v[4])
 {
-       /* to be used for halos en infos */
-       float abs4;
-       short c=0;
-       int xparts = (re->rectx + re->partx - 1) / re->partx;
+       /* part size (ensure we run RE_parts_clamp first) */
+       BLI_assert(re->partx == min_ii(re->r.tilex, re->rectx));
+       BLI_assert(re->party == min_ii(re->r.tiley, re->recty));
 
        if (do_pano == FALSE) {
                return testclip(v);
        }
+       else {
+               /* to be used for halos en infos */
+               float abs4;
+               short c = 0;
 
-       abs4= fabs(v[3]);
+               int xparts = (re->rectx + re->partx - 1) / re->partx;
 
-       if (v[2]< -abs4) c=16;          /* this used to be " if (v[2]<0) ", see 
clippz() */
-       else if (v[2]> abs4) c+= 32;
+               abs4= fabsf(v[3]);
 
-       if ( v[1]>abs4) c+=4;
-       else if ( v[1]< -abs4) c+=8;
+               if (v[2]< -abs4) c=16;          /* this used to be " if 
(v[2]<0) ", see clippz() */
+               else if (v[2]> abs4) c+= 32;
 
-       abs4*= xparts;
-       if ( v[0]>abs4) c+=2;
-       else if ( v[0]< -abs4) c+=1;
+               if ( v[1]>abs4) c+=4;
+               else if ( v[1]< -abs4) c+=8;
 
-       return c;
+               abs4*= xparts;
+               if ( v[0]>abs4) c+=2;
+               else if ( v[0]< -abs4) c+=1;
+
+               return c;
+       }
 }
 
 /**

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

Reply via email to