[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52434] trunk/blender/source/blender/ render/intern: fix for re->partx/re-> party values being different for RE_Database_FromScene() then the main render loop.

Campbell Barton ideasman42 at gmail.com
Wed Nov 21 11:20:41 CET 2012


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;
+	}
 }
 
 /**




More information about the Bf-blender-cvs mailing list