[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20706] branches/blender2.5/blender/source /blender/render/intern/source/pipeline.c: 2.5

Ton Roosendaal ton at blender.org
Sun Jun 7 15:16:31 CEST 2009


Revision: 20706
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20706
Author:   ton
Date:     2009-06-07 15:16:31 +0200 (Sun, 07 Jun 2009)

Log Message:
-----------
2.5

Preview renders now re-use a rendered buffer when size is same.
Looks nicer while sliding, and no memory free/allocating.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/render/intern/source/pipeline.c

Modified: branches/blender2.5/blender/source/blender/render/intern/source/pipeline.c
===================================================================
--- branches/blender2.5/blender/source/blender/render/intern/source/pipeline.c	2009-06-07 13:09:18 UTC (rev 20705)
+++ branches/blender2.5/blender/source/blender/render/intern/source/pipeline.c	2009-06-07 13:16:31 UTC (rev 20706)
@@ -1121,8 +1121,13 @@
 		make_sample_tables(re);	
 		
 		/* if preview render, we try to keep old result */
-		if(re->result && (re->r.scemode & R_NODE_PREVIEW) && 
-		   re->result->rectx==re->rectx && re->result->recty==re->recty);
+		if(re->r.scemode & R_PREVIEWBUTS) {
+			if(re->result && re->result->rectx==re->rectx && re->result->recty==re->recty);
+			else {
+				RE_FreeRenderResult(re->result);
+				re->result= NULL;
+			}
+		}
 		else {
 			
 			/* make empty render result, so display callbacks can initialize */
@@ -1288,8 +1293,11 @@
 				save_render_result_tile(rr, rrpart);
 			
 		}
-		else if(render_display_draw_enabled(&R))
-			merge_render_result(R.result, pa->result);
+		else if(render_display_draw_enabled(&R)) {
+			/* on break, don't merge in result for preview renders, looks nicer */
+			if(R.test_break(R.tbh) && (R.r.scemode & R_PREVIEWBUTS));
+			else merge_render_result(R.result, pa->result);
+		}
 	}
 	
 	pa->ready= 1;
@@ -1483,14 +1491,16 @@
 	int rendering=1, counter= 1, drawtimer=0, hasdrawn, minx=0;
 	
 	/* first step; free the entire render result, make new, and/or prepare exr buffer saving */
-	RE_FreeRenderResult(re->result);
+	if(re->result==NULL || !(re->r.scemode & R_PREVIEWBUTS)) {
+		RE_FreeRenderResult(re->result);
 	
-	if(re->sss_points)
-		re->result= new_render_result(re, &re->disprect, 0, 0);
-	else if(re->r.scemode & R_FULL_SAMPLE)
-		re->result= new_full_sample_buffers_exr(re);
-	else
-		re->result= new_render_result(re, &re->disprect, 0, re->r.scemode & R_EXR_TILE_FILE);
+		if(re->sss_points)
+			re->result= new_render_result(re, &re->disprect, 0, 0);
+		else if(re->r.scemode & R_FULL_SAMPLE)
+			re->result= new_full_sample_buffers_exr(re);
+		else
+			re->result= new_render_result(re, &re->disprect, 0, re->r.scemode & R_EXR_TILE_FILE);
+	}
 	
 	if(re->result==NULL)
 		return;





More information about the Bf-blender-cvs mailing list