[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57604] trunk/blender/source/blender/ render/intern/source/pipeline.c: Fix #35439: Render Border have weird influence on compositing

Sergey Sharybin sergey.vfx at gmail.com
Thu Jun 20 13:32:08 CEST 2013


Revision: 57604
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57604
Author:   nazgul
Date:     2013-06-20 11:32:08 +0000 (Thu, 20 Jun 2013)
Log Message:
-----------
Fix #35439: Render Border have weird influence on compositing

Issue was caused by render result passing to a compositor
was having a resolution of border when using a camera border
in cases there's no Render Layer nodes.

Made it so resolution in which compositor works does not
depend on whether Render Layers present or not.

Modified Paths:
--------------
    trunk/blender/source/blender/render/intern/source/pipeline.c

Modified: trunk/blender/source/blender/render/intern/source/pipeline.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/pipeline.c	2013-06-20 11:18:19 UTC (rev 57603)
+++ trunk/blender/source/blender/render/intern/source/pipeline.c	2013-06-20 11:32:08 UTC (rev 57604)
@@ -1406,6 +1406,16 @@
 	re->display_draw(re->ddh, re->result, NULL);
 }
 
+/* make sure disprect is not affected by the render border */
+static void render_result_disprect_to_full_resolution(Render *re)
+{
+	re->disprect.xmin = re->disprect.ymin = 0;
+	re->disprect.xmax = re->winx;
+	re->disprect.ymax = re->winy;
+	re->rectx = re->winx;
+	re->recty = re->winy;
+}
+
 /* main render routine, no compositing */
 static void do_render_fields_blur_3d(Render *re)
 {
@@ -1438,13 +1448,8 @@
 				/* sub-rect for merge call later on */
 				re->result->tilerect = re->disprect;
 				
-				/* this copying sequence could become function? */
 				/* weak is: it chances disprect from border */
-				re->disprect.xmin = re->disprect.ymin = 0;
-				re->disprect.xmax = re->winx;
-				re->disprect.ymax = re->winy;
-				re->rectx = re->winx;
-				re->recty = re->winy;
+				render_result_disprect_to_full_resolution(re);
 				
 				rres = render_result_new(re, &re->disprect, 0, RR_USE_MEM, RR_ALL_LAYERS);
 				
@@ -1910,6 +1915,9 @@
 		BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);
 		
 		render_result_free(re->result);
+		if ((re->r.mode & R_CROP) == 0) {
+			render_result_disprect_to_full_resolution(re);
+		}
 		re->result = render_result_new(re, &re->disprect, 0, RR_USE_MEM, RR_ALL_LAYERS);
 
 		BLI_rw_mutex_unlock(&re->resultmutex);




More information about the Bf-blender-cvs mailing list