[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56705] trunk/blender/source/blender: 3D viewport render preview:

Ton Roosendaal ton at blender.org
Sun May 12 15:15:42 CEST 2013


Revision: 56705
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56705
Author:   ton
Date:     2013-05-12 13:15:41 +0000 (Sun, 12 May 2013)
Log Message:
-----------
3D viewport render preview:

- Put it available as a default now (no debug value needed)
- Fixed viewport size error, viewport was badly set
  (visible with border render, property regions)
- Fixed hanging lock in conflict between drawing and initialize
  new renders.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/render/render_internal.c
    trunk/blender/source/blender/editors/render/render_preview.c
    trunk/blender/source/blender/render/extern/include/RE_pipeline.h
    trunk/blender/source/blender/render/intern/include/render_types.h
    trunk/blender/source/blender/render/intern/source/external_engine.c
    trunk/blender/source/blender/render/intern/source/pipeline.c

Modified: trunk/blender/source/blender/editors/render/render_internal.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_internal.c	2013-05-12 12:23:44 UTC (rev 56704)
+++ trunk/blender/source/blender/editors/render/render_internal.c	2013-05-12 13:15:41 UTC (rev 56705)
@@ -854,10 +854,10 @@
 		/* initalize always */
 		if (render_view3d_disprect(rp->scene, rp->ar, rp->v3d, rp->rv3d, &cliprct)) {
 			rdata.mode |= R_BORDER;
-			RE_InitState(re, NULL, &rdata, NULL, rp->sa->winx, rp->sa->winy, &cliprct);
+			RE_InitState(re, NULL, &rdata, NULL, rp->ar->winx, rp->ar->winy, &cliprct);
 		}
 		else
-			RE_InitState(re, NULL, &rdata, NULL, rp->sa->winx, rp->sa->winy, NULL);
+			RE_InitState(re, NULL, &rdata, NULL, rp->ar->winx, rp->ar->winy, NULL);
 	}
 
 	if (orth)
@@ -1030,7 +1030,7 @@
 	if (rres.rectf) {
 		unsigned char *rect_byte = MEM_mallocN(rres.rectx * rres.recty * sizeof(int), "ed_preview_draw_rect");
 				
-		RE_ResultGet32(re, (unsigned int *)rect_byte);
+		RE_AcquiredResultGet32(re, &rres, (unsigned int *)rect_byte);
 		
 		glEnable(GL_BLEND);
 		glColor4f(1.0f, 1.0f, 1.0f, 1.0f);

Modified: trunk/blender/source/blender/editors/render/render_preview.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_preview.c	2013-05-12 12:23:44 UTC (rev 56704)
+++ trunk/blender/source/blender/editors/render/render_preview.c	2013-05-12 13:15:41 UTC (rev 56705)
@@ -563,7 +563,7 @@
 				float fx = rect->xmin + offx;
 				float fy = rect->ymin;
 				
-				RE_ResultGet32(re, (unsigned int *)rect_byte);
+				RE_AcquiredResultGet32(re, &rres, (unsigned int *)rect_byte);
 				glaDrawPixelsSafe(fx, fy, rres.rectx, rres.recty, rres.rectx, GL_RGBA, GL_UNSIGNED_BYTE, rect_byte);
 				
 				MEM_freeN(rect_byte);

Modified: trunk/blender/source/blender/render/extern/include/RE_pipeline.h
===================================================================
--- trunk/blender/source/blender/render/extern/include/RE_pipeline.h	2013-05-12 12:23:44 UTC (rev 56704)
+++ trunk/blender/source/blender/render/extern/include/RE_pipeline.h	2013-05-12 13:15:41 UTC (rev 56705)
@@ -179,7 +179,10 @@
 void RE_ReleaseResultImage(struct Render *re);
 void RE_SwapResult(struct Render *re, struct RenderResult **rr);
 struct RenderStats *RE_GetStats(struct Render *re);
+
 void RE_ResultGet32(struct Render *re, unsigned int *rect);
+void RE_AcquiredResultGet32(struct Render *re, struct RenderResult *result, unsigned int *rect);
+
 struct RenderLayer *RE_GetRenderLayer(struct RenderResult *rr, const char *name);
 float *RE_RenderLayerGetPass(struct RenderLayer *rl, int passtype);
 

Modified: trunk/blender/source/blender/render/intern/include/render_types.h
===================================================================
--- trunk/blender/source/blender/render/intern/include/render_types.h	2013-05-12 12:23:44 UTC (rev 56704)
+++ trunk/blender/source/blender/render/intern/include/render_types.h	2013-05-12 13:15:41 UTC (rev 56705)
@@ -345,7 +345,8 @@
 	Object *ob, *par;
 	int index, psysindex, lay;
 
-	float mat[4][4], nmat[3][3]; /* nmat is inverse mat tranposed */
+	float mat[4][4], imat[4][4];
+	float nmat[3][3]; /* nmat is inverse mat tranposed */
 	short flag;
 
 	float dupliorco[3], dupliuv[2];

Modified: trunk/blender/source/blender/render/intern/source/external_engine.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/external_engine.c	2013-05-12 12:23:44 UTC (rev 56704)
+++ trunk/blender/source/blender/render/intern/source/external_engine.c	2013-05-12 13:15:41 UTC (rev 56705)
@@ -115,18 +115,6 @@
 	type = BLI_findstring(&R_engines, idname, offsetof(RenderEngineType, idname));
 	if (!type)
 		type = &internal_render_type;
-
-	/* XXX Hack to make this a debug-only option, remove section to make it available default */
-	if (type == &internal_render_type) {
-		static RenderEngineType rtype;
-		
-		if (type->view_update == NULL)
-			rtype = internal_render_type;
-		else if (G.debug_value != -1) {
-			type = &rtype;
-		}
-	}
-	/* XXX end hack */
 	
 	return type;
 }

Modified: trunk/blender/source/blender/render/intern/source/pipeline.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/pipeline.c	2013-05-12 12:23:44 UTC (rev 56704)
+++ trunk/blender/source/blender/render/intern/source/pipeline.c	2013-05-12 13:15:41 UTC (rev 56705)
@@ -348,6 +348,13 @@
 	RE_ReleaseResultImage(re);
 }
 
+/* caller is responsible for allocating rect in correct size! */
+/* Only for acquired results, for lock */
+void RE_AcquiredResultGet32(Render *re, RenderResult *result, unsigned int *rect)
+{
+	render_result_rect_get_pixels(result, rect, re->rectx, re->recty, &re->scene->view_settings, &re->scene->display_settings);
+}
+
 RenderStats *RE_GetStats(Render *re)
 {
 	return &re->i;
@@ -2446,7 +2453,7 @@
 		if (ibuf->rect == NULL) {
 			ibuf->rect = MEM_mapallocN(sizeof(int) * rres.rectx * rres.recty, "temp 32 bits rect");
 			ibuf->mall |= IB_rect;
-			RE_ResultGet32(re, ibuf->rect);
+			RE_AcquiredResultGet32(re, &rres, ibuf->rect);
 			do_free = TRUE;
 		}
 




More information about the Bf-blender-cvs mailing list