[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26747] trunk/blender/source/blender: J-key render switching back, now with 10 slots.

Brecht Van Lommel brecht at blender.org
Tue Feb 9 20:37:37 CET 2010


Revision: 26747
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26747
Author:   blendix
Date:     2010-02-09 20:37:37 +0100 (Tue, 09 Feb 2010)

Log Message:
-----------
J-key render switching back, now with 10 slots.

Implementation note: this was done by giving each Render a slot number,
and for every slot a new Render will be created. Not sure if this is
ideal, but it ensures that all passes, render info, etc are separate so
you can also compare render layers and passes, in 2.4x only whatever it
was currently displaying was backed up.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/displist.c
    trunk/blender/source/blender/blenkernel/intern/image.c
    trunk/blender/source/blender/blenkernel/intern/sequencer.c
    trunk/blender/source/blender/editors/object/object_bake.c
    trunk/blender/source/blender/editors/render/render_preview.c
    trunk/blender/source/blender/editors/screen/screen_ops.c
    trunk/blender/source/blender/editors/space_file/writeimage.c
    trunk/blender/source/blender/editors/space_image/image_buttons.c
    trunk/blender/source/blender/editors/space_image/image_intern.h
    trunk/blender/source/blender/editors/space_image/image_ops.c
    trunk/blender/source/blender/editors/space_image/space_image.c
    trunk/blender/source/blender/editors/space_node/node_edit.c
    trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_composite.c
    trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_image.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/convertblender.c
    trunk/blender/source/blender/render/intern/source/envmap.c
    trunk/blender/source/blender/render/intern/source/pipeline.c

Modified: trunk/blender/source/blender/blenkernel/intern/displist.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/displist.c	2010-02-09 19:22:57 UTC (rev 26746)
+++ trunk/blender/source/blender/blenkernel/intern/displist.c	2010-02-09 19:37:37 UTC (rev 26747)
@@ -321,9 +321,9 @@
 	/* XXX ugly global still, but we can't do preview while rendering */
 	if(G.rendering==0) {
 		
-		Render *re= RE_GetRender("_Shade View_");
+		Render *re= RE_GetRender("_Shade View_", RE_SLOT_DEFAULT);
 		if(re==NULL) {
-			re= RE_NewRender("_Shade View_");
+			re= RE_NewRender("_Shade View_", RE_SLOT_DEFAULT);
 		
 			RE_Database_Baking(re, scene, 0, 0);	/* 0= no faces */
 		}
@@ -337,7 +337,7 @@
 /* called on file reading */
 void fastshade_free_render(void)
 {
-	Render *re= RE_GetRender("_Shade View_");
+	Render *re= RE_GetRender("_Shade View_", RE_SLOT_DEFAULT);
 	
 	if(re) {
 		RE_Database_Free(re);

Modified: trunk/blender/source/blender/blenkernel/intern/image.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/image.c	2010-02-09 19:22:57 UTC (rev 26746)
+++ trunk/blender/source/blender/blenkernel/intern/image.c	2010-02-09 19:37:37 UTC (rev 26747)
@@ -1088,7 +1088,7 @@
 	}
 
 	{
-		Render *re= RE_GetRender(scene->id.name);
+		Render *re= RE_GetRender(scene->id.name, RE_SLOT_RENDERING);
 		RenderStats *stats= re ? RE_GetStats(re):NULL;
 
 		if (stats && (scene->r.stamp & R_STAMP_RENDERTIME)) {
@@ -1599,7 +1599,7 @@
 	if(ima->rr)
 		return ima->rr;
 	else if(ima->type==IMA_TYPE_R_RESULT)
-		return RE_AcquireResultRead(RE_GetRender(scene->id.name));
+		return RE_AcquireResultRead(RE_GetRender(scene->id.name, RE_SLOT_VIEW));
 	return NULL;
 }
 
@@ -1607,7 +1607,7 @@
 {
 	if(ima->rr);
 	else if(ima->type==IMA_TYPE_R_RESULT)
-		RE_ReleaseResult(RE_GetRender(scene->id.name));
+		RE_ReleaseResult(RE_GetRender(scene->id.name, RE_SLOT_VIEW));
 }
 
 /* after imbuf load, openexr type can return with a exrhandle open */
@@ -1919,7 +1919,7 @@
 		return NULL;
 
 	if(iuser && iuser->scene) {
-		re= RE_GetRender(iuser->scene->id.name);
+		re= RE_GetRender(iuser->scene->id.name, RE_SLOT_VIEW);
 		rr= RE_AcquireResultRead(re);
 
 		/* release is done in BKE_image_release_ibuf using lock_r */
@@ -1953,7 +1953,7 @@
 		pass= (iuser)? iuser->pass: 0;
 		
 		/* this gives active layer, composite or seqence result */
-		RE_AcquireResultImage(RE_GetRender(iuser->scene->id.name), &rres);
+		RE_AcquireResultImage(RE_GetRender(iuser->scene->id.name, RE_SLOT_VIEW), &rres);
 		rect= (unsigned int *)rres.rect32;
 		rectf= rres.rectf;
 		rectz= rres.rectz;

Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c	2010-02-09 19:22:57 UTC (rev 26746)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c	2010-02-09 19:37:37 UTC (rev 26747)
@@ -2049,7 +2049,6 @@
 		Scene *sce= seq->scene;// *oldsce= scene;
 		Render *re;
 		RenderResult rres;
-		char scenename[64];
 		int have_seq= FALSE;
 		int sce_valid= FALSE;
 
@@ -2093,11 +2092,10 @@
 
 			oldcfra = seq->scene->r.cfra;
 
-			if(rendering) {
-				BLI_strncpy(scenename, sce->id.name+2, 64);
-				strcpy(sce->id.name+2, " do_build_seq_ibuf");
-			}
-			re= RE_NewRender(sce->id.name);
+			if(rendering)
+				re= RE_NewRender(" do_build_seq_ibuf", RE_SLOT_DEFAULT);
+			else
+				re= RE_NewRender(sce->id.name, RE_SLOT_VIEW);
 			
 			/* prevent eternal loop */
 			doseq= scene->r.scemode & R_DOSEQ;
@@ -2106,9 +2104,6 @@
 			RE_BlenderFrame(re, sce, NULL,
 					seq->sfra+se->nr+seq->anim_startofs);
 			
-			if(rendering)
-				BLI_strncpy(sce->id.name+2, scenename, 64);
-			
 			RE_AcquireResultImage(re, &rres);
 			
 			if(rres.rectf) {

Modified: trunk/blender/source/blender/editors/object/object_bake.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_bake.c	2010-02-09 19:22:57 UTC (rev 26746)
+++ trunk/blender/source/blender/editors/object/object_bake.c	2010-02-09 19:37:37 UTC (rev 26747)
@@ -141,7 +141,7 @@
 	bkr->sa= biggest_image_area(CTX_wm_screen(C)); /* can be NULL */
 	bkr->scene= scene;
 	bkr->actob= (scene->r.bake_flag & R_BAKE_TO_ACTIVE) ? OBACT : NULL;
-	bkr->re= RE_NewRender("_Bake View_");
+	bkr->re= RE_NewRender("_Bake View_", RE_SLOT_DEFAULT);
 
 	if(scene->r.bake_mode==RE_BAKE_AO) {
 		/* If raytracing or AO is disabled, switch it on temporarily for baking. */

Modified: trunk/blender/source/blender/editors/render/render_preview.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_preview.c	2010-02-09 19:22:57 UTC (rev 26746)
+++ trunk/blender/source/blender/editors/render/render_preview.c	2010-02-09 19:37:37 UTC (rev 26747)
@@ -474,7 +474,7 @@
 		}
 	}
 
-	re= RE_GetRender(name);
+	re= RE_GetRender(name, RE_SLOT_DEFAULT);
 	RE_AcquireResultImage(re, &rres);
 
 	if(rres.rectf) {
@@ -702,7 +702,7 @@
 		ri->status= 0;
 		
 		sprintf(name, "View3dPreview %p", sa);
-		re= ri->re= RE_NewRender(name);
+		re= ri->re= RE_NewRender(name, RE_SLOT_DEFAULT);
 		//RE_display_draw_cb(re, view3d_previewrender_progress);
 		//RE_stats_draw_cb(re, view3d_previewrender_stats);
 		//RE_test_break_cb(re, qtest);
@@ -890,11 +890,11 @@
 	
 	if(!split || first) sprintf(name, "Preview %p", sp->owner);
 	else sprintf(name, "SecondPreview %p", sp->owner);
-	re= RE_GetRender(name);
+	re= RE_GetRender(name, RE_SLOT_DEFAULT);
 	
 	/* full refreshed render from first tile */
 	if(re==NULL)
-		re= RE_NewRender(name);
+		re= RE_NewRender(name, RE_SLOT_DEFAULT);
 		
 	/* sce->r gets copied in RE_InitState! */
 	sce->r.scemode &= ~(R_MATNODE_PREVIEW|R_TEXNODE_PREVIEW);

Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c	2010-02-09 19:22:57 UTC (rev 26746)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c	2010-02-09 19:37:37 UTC (rev 26747)
@@ -2885,10 +2885,10 @@
 static int screen_render_exec(bContext *C, wmOperator *op)
 {
 	Scene *scene= CTX_data_scene(C);
-	Render *re= RE_GetRender(scene->id.name);
+	Render *re= RE_GetRender(scene->id.name, RE_SLOT_VIEW);
 	
 	if(re==NULL) {
-		re= RE_NewRender(scene->id.name);
+		re= RE_NewRender(scene->id.name, RE_SLOT_VIEW);
 	}
 	RE_test_break_cb(re, NULL, (int (*)(void *)) blender_test_break);
 	
@@ -3236,7 +3236,7 @@
 	rj->image= ima;
 	
 	/* setup new render */
-	re= RE_NewRender(scene->id.name);
+	re= RE_NewRender(scene->id.name, RE_SLOT_VIEW);
 	RE_test_break_cb(re, rj, render_breakjob);
 	RE_display_draw_cb(re, rj, image_rect_update);
 	RE_stats_draw_cb(re, rj, image_renderinfo_cb);
@@ -3398,7 +3398,7 @@
 	oglrender->iuser.ok= 1;
 	
 	/* create render and render result */
-	oglrender->re= RE_NewRender(scene->id.name);
+	oglrender->re= RE_NewRender(scene->id.name, RE_SLOT_VIEW);
 	RE_InitState(oglrender->re, NULL, &scene->r, NULL, sizex, sizey, NULL);
 	
 	rr= RE_AcquireResultWrite(oglrender->re);

Modified: trunk/blender/source/blender/editors/space_file/writeimage.c
===================================================================
--- trunk/blender/source/blender/editors/space_file/writeimage.c	2010-02-09 19:22:57 UTC (rev 26746)
+++ trunk/blender/source/blender/editors/space_file/writeimage.c	2010-02-09 19:37:37 UTC (rev 26747)
@@ -114,14 +114,14 @@
 	
 	if(overwrite) {
 		if(scene->r.imtype==R_MULTILAYER) {
-			Render *re= RE_GetRender(scene->id.name);
+			Render *re= RE_GetRender(scene->id.name, RE_SLOT_VIEW);
 			RenderResult *rr= RE_AcquireResultRead(re);
 			if(rr) 
 				RE_WriteRenderResult(rr, str, scene->r.quality);
 			RE_ReleaseResult(re);
 		}
 		else {
-			Render *re= RE_GetRender(scene->id.name);
+			Render *re= RE_GetRender(scene->id.name, RE_SLOT_VIEW);
 			RenderResult rres;
 			ImBuf *ibuf;
 			
@@ -235,7 +235,7 @@
 /* calls fileselect */
 void BIF_save_rendered_image_fs(Scene *scene)
 {
-	Render *re= RE_GetRender(scene->id.name);
+	Render *re= RE_GetRender(scene->id.name, RE_SLOT_VIEW);
 	RenderResult rres;
 	
 	RE_AcquireResultImage(re, &rres);

Modified: trunk/blender/source/blender/editors/space_image/image_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/space_image/image_buttons.c	2010-02-09 19:22:57 UTC (rev 26746)
+++ trunk/blender/source/blender/editors/space_image/image_buttons.c	2010-02-09 19:37:37 UTC (rev 26747)
@@ -533,6 +533,22 @@
 
 /* ********************* callbacks for standard image buttons *************** */
 
+static char *slot_menu()
+{
+	char *str;
+	int a, slot;
+	
+	str= MEM_callocN(RE_SLOT_MAX*32, "menu slots");
+	
+	strcpy(str, "Slot %t");
+	a= strlen(str);
+
+	for(slot=0; slot<RE_SLOT_MAX; slot++)
+		a += sprintf(str+a, "|Slot %d %%x%d", slot+1, slot);
+	
+	return str;
+}
+
 static char *layer_menu(RenderResult *rr, short *curlay)
 {
 	RenderLayer *rl;
@@ -599,7 +615,10 @@
 /* 5 layer button callbacks... */
 static void image_multi_cb(bContext *C, void *rr_v, void *iuser_v) 
 {
-	BKE_image_multilayer_index(rr_v, iuser_v); 
+	ImageUser *iuser= iuser_v;
+
+	RE_SetViewSlot(iuser->menunr);
+	BKE_image_multilayer_index(rr_v, iuser); 
 	WM_event_add_notifier(C, NC_IMAGE|ND_DRAW, NULL);
 }
 static void image_multi_inclay_cb(bContext *C, void *rr_v, void *iuser_v) 
@@ -699,34 +718,45 @@
 }
 #endif
 
-static void uiblock_layer_pass_buttons(uiLayout *layout, RenderResult *rr, ImageUser *iuser, int w)
+static void uiblock_layer_pass_buttons(uiLayout *layout, RenderResult *rr, ImageUser *iuser, int w, int render)
 {
 	uiBlock *block= uiLayoutGetBlock(layout);
 	uiBut *but;
 	RenderLayer *rl= NULL;
-	int wmenu1, wmenu2;
+	int wmenu1, wmenu2, wmenu3;
 	char *strp;
 
 	uiLayoutRow(layout, 1);
 
 	/* layer menu is 1/3 larger than pass */
-	wmenu1= (3*w)/5;
-	wmenu2= (2*w)/5;
+	wmenu1= (2*w)/5;
+	wmenu2= (3*w)/5;
+	wmenu3= (3*w)/6;
 	
 	/* menu buts */
-	strp= layer_menu(rr, &iuser->layer);
-	but= uiDefButS(block, MENU, 0, strp,					0, 0, wmenu1, 20, &iuser->layer, 0,0,0,0, "Select Layer");
-	uiButSetFunc(but, image_multi_cb, rr, iuser);
-	MEM_freeN(strp);
-	
-	rl= BLI_findlink(&rr->layers, iuser->layer - (rr->rectf?1:0)); /* fake compo layer, return NULL is meant to be */
-	strp= pass_menu(rl, &iuser->pass);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list