[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36733] branches/cycles/source/blender: Render API: code cleanup.

Brecht Van Lommel brechtvanlommel at pandora.be
Tue May 17 18:21:06 CEST 2011


Revision: 36733
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36733
Author:   blendix
Date:     2011-05-17 16:21:06 +0000 (Tue, 17 May 2011)
Log Message:
-----------
Render API: code cleanup.

Modified Paths:
--------------
    branches/cycles/source/blender/editors/render/render_preview.c
    branches/cycles/source/blender/editors/space_view3d/view3d_draw.c
    branches/cycles/source/blender/render/extern/include/RE_engine.h
    branches/cycles/source/blender/render/intern/pipeline/engine.c

Modified: branches/cycles/source/blender/editors/render/render_preview.c
===================================================================
--- branches/cycles/source/blender/editors/render/render_preview.c	2011-05-17 16:20:07 UTC (rev 36732)
+++ branches/cycles/source/blender/editors/render/render_preview.c	2011-05-17 16:21:06 UTC (rev 36733)
@@ -86,6 +86,7 @@
 
 #include "PIL_time.h"
 
+#include "RE_engine.h"
 #include "RE_pipeline.h"
 
 
@@ -99,15 +100,6 @@
 
 #include "render_intern.h"
 
-#define PR_XMIN		10
-#define PR_YMIN		5
-#define PR_XMAX		200
-#define PR_YMAX		195
-
-/* XXX */
-static int qtest(void) {return 0;}
-/* XXX */
-
 ImBuf* get_brush_icon(Brush *brush)
 {
 	static const int flags = IB_rect|IB_multilayer|IB_metadata;
@@ -174,123 +166,6 @@
 	
 } ShaderPreview;
 
-
-
-/* unused now */
-void draw_tex_crop(Tex *tex)
-{
-	rcti rct;
-	int ret= 0;
-	
-	if(tex==NULL) return;
-	
-	if(tex->type==TEX_IMAGE) {
-		if(tex->cropxmin==0.0f) ret++;
-		if(tex->cropymin==0.0f) ret++;
-		if(tex->cropxmax==1.0f) ret++;
-		if(tex->cropymax==1.0f) ret++;
-		if(ret==4) return;
-		
-		rct.xmin= PR_XMIN+2+tex->cropxmin*(PR_XMAX-PR_XMIN-4);
-		rct.xmax= PR_XMIN+2+tex->cropxmax*(PR_XMAX-PR_XMIN-4);
-		rct.ymin= PR_YMIN+2+tex->cropymin*(PR_YMAX-PR_YMIN-4);
-		rct.ymax= PR_YMIN+2+tex->cropymax*(PR_YMAX-PR_YMIN-4);
-
-		glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); 
-
-		glColor3ub(0, 0, 0);
-		glRecti(rct.xmin+1,  rct.ymin-1,  rct.xmax+1,  rct.ymax-1); 
-
-		glColor3ub(255, 255, 255);
-		glRecti(rct.xmin,  rct.ymin,  rct.xmax,  rct.ymax);
-
-		glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);			
-	}
-	
-}
-
-/* temporal abuse; if id_code is -1 it only does texture.... solve! */
-void BIF_preview_changed(short UNUSED(id_code))
-{
-#if 0	
-	ScrArea *sa;
-	
-	for(sa= G.curscreen->areabase.first; sa; sa= sa->next) {
-		if(sa->spacetype==SPACE_BUTS) {
-			SpaceButs *sbuts= sa->spacedata.first;
-			if(sbuts->mainb==CONTEXT_SHADING) {
-				int tab= sbuts->tab[CONTEXT_SHADING];
-				if(tab==TAB_SHADING_MAT && (id_code==ID_MA || id_code==ID_TE)) {
-					if (sbuts->ri) sbuts->ri->curtile= 0;
-					addafterqueue(sa->win, RENDERPREVIEW, 1);
-				}
-				else if(tab==TAB_SHADING_TEX && (id_code==ID_TE || id_code==-1)) {
-					if (sbuts->ri) sbuts->ri->curtile= 0;
-					addafterqueue(sa->win, RENDERPREVIEW, 1);
-				}
-				else if(tab==TAB_SHADING_LAMP && (id_code==ID_LA || id_code==ID_TE)) {
-					if (sbuts->ri) sbuts->ri->curtile= 0;
-					addafterqueue(sa->win, RENDERPREVIEW, 1);
-				}
-				else if(tab==TAB_SHADING_WORLD && (id_code==ID_WO || id_code==ID_TE)) {
-					if (sbuts->ri) sbuts->ri->curtile= 0;
-					addafterqueue(sa->win, RENDERPREVIEW, 1);
-				}
-			}
-			else if (sbuts->ri) 
-				sbuts->ri->curtile= 0;	/* ensure changes always result in re-render when context is restored */
-		}
-		else if(sa->spacetype==SPACE_NODE) {
-			SpaceNode *snode= sa->spacedata.first;
-			if(snode->treetype==NTREE_SHADER && (id_code==ID_MA || id_code==ID_TE)) {
-				snode_tag_dirty(snode);
-			}
-		}
-		else if(sa->spacetype==SPACE_VIEW3D) {
-			View3D *vd= sa->spacedata.first;
-			/* if is has a renderinfo, we consider that reason for signalling */
-			if (vd->ri) {
-				vd->ri->curtile= 0;
-				addafterqueue(sa->win, RENDERPREVIEW, 1);
-			}
-		}
-	}
-
-	if(ELEM4(id_code, ID_MA, ID_TE, ID_LA, ID_WO)) {
-		Object *ob;
-		Material *ma;
-
-		if(id_code == ID_WO) {
-			for(ma=G.main->mat.first; ma; ma=ma->id.next) {
-				if(ma->gpumaterial.first) {
-					GPU_material_free(ma);
-				}
-			}
-		}
-		else if(id_code == ID_LA) {
-			for(ob=G.main->object.first; ob; ob=ob->id.next) {
-				if(ob->gpulamp.first) {
-					GPU_lamp_free(ob);
-				}
-			}
-
-			for(ma=G.main->mat.first; ma; ma=ma->id.next) {
-				if(ma->gpumaterial.first) {
-					GPU_material_free(ma);
-				}
-			}
-		} else if(OBACT) {
-			Object *ob = OBACT;
-
-			ma= give_current_material(ob, ob->actcol);
-			if(ma && ma->gpumaterial.first) {
-				GPU_material_free(ma);
-			}
-		}
-	}
-#endif
-}
-
 /* *************************** Preview for buttons *********************** */
 
 static Main *pr_main= NULL;
@@ -667,321 +542,6 @@
 	}	
 }
 
-/* ******************************** Icon Preview **************************** */
-
-void ED_preview_icon_draw(const bContext *UNUSED(C), void *UNUSED(idp), void *UNUSED(arg1), void *UNUSED(arg2), rcti *UNUSED(rect))
-{
-}
-
-/* *************************** Preview for 3d window *********************** */
-
-void view3d_previewrender_progress(RenderResult *rr, volatile rcti *renrect)
-{
-//	ScrArea *sa= NULL; // XXX
-//	View3D *v3d= NULL; // XXX
-	RenderLayer *rl;
-	int ofsx=0, ofsy=0;
-	
-	if(renrect) return;
-	
-	rl= rr->layers.first;
-	
-	/* this case is when we render envmaps... */
-//	if(rr->rectx > v3d->ri->pr_rectx || rr->recty > v3d->ri->pr_recty)
-//		return;
-	
-//	ofsx= v3d->ri->disprect.xmin + rr->tilerect.xmin;
-//	ofsy= v3d->ri->disprect.ymin + rr->tilerect.ymin;
-	
-	glDrawBuffer(GL_FRONT);
-//	glaDefine2DArea(&sa->winrct);
-	glaDrawPixelsSafe_to32(ofsx, ofsy, rr->rectx, rr->recty, rr->rectx, rl->rectf, 0);
-	bglFlush();
-	glDrawBuffer(GL_BACK);
-
-}
-
-void BIF_view3d_previewrender_signal(ScrArea *UNUSED(sa), short UNUSED(signal))
-{
-#if 0
-	View3D *v3d= sa->spacedata.first;
-	
-	/* this can be called from other window... solve! */
-	if(sa->spacetype!=SPACE_VIEW3D)
-		return; // XXX
-	   
-	if(v3d && v3d->ri) {
-		RenderInfo *ri= v3d->ri;
-		ri->status &= ~signal;
-		ri->curtile= 0;
-		//printf("preview signal %d\n", signal);
-		if(ri->re && (signal & PR_DBASE))
-			RE_Database_Free(ri->re);
-
-//		addafterqueue(sa->win, RENDERPREVIEW, 1);
-	}
-#endif
-}
-
-void BIF_view3d_previewrender_free(View3D *UNUSED(v3d))
-{
-#if 0
-	if(v3d->ri) {
-		RenderInfo *ri= v3d->ri;
-		if(ri->re) {
-//			printf("free render\n");
-			RE_Database_Free(ri->re);
-			RE_FreeRender(ri->re);
-			ri->re= NULL;
-		}
-		if (v3d->ri->rect) MEM_freeN(v3d->ri->rect);
-		MEM_freeN(v3d->ri);
-		v3d->ri= NULL;
-	}
-#endif
-}
-
-/* returns 1 if OK, do not call while in panel space!  */
-static int view3d_previewrender_get_rects(ScrArea *sa, rctf *viewplane, RenderInfo *ri, float *clipsta, float *clipend, int *ortho, float *pixsize)
-{
-	View3D *v3d= NULL; // XXX
-	RegionView3D *rv3d= NULL; // XXX
-	int rectx, recty;
-//	uiBlock *block;
-	
-//	block= uiFindOpenPanelBlockName(&sa->uiblocks, "Preview");
-//	if(block==NULL) return 0;
-	
-	/* calculate preview rect size */
-//	BLI_init_rctf(viewplane, 15.0f, (block->maxx - block->minx)-15.0f, 15.0f, (block->maxy - block->miny)-15.0f);
-//	uiPanelPush(block);
-//	ui_graphics_to_window_rct(sa->win, viewplane, &ri->disprect);
-//	uiPanelPop(block);
-	
-	/* correction for gla draw */
-//	BLI_translate_rcti(&ri->disprect, -sa->winrct.xmin, -sa->winrct.ymin);
-	
-	*ortho= get_view3d_viewplane(v3d, rv3d, sa->winx, sa->winy, viewplane, clipsta, clipend, pixsize);
-
-	rectx= ri->disprect.xmax - ri->disprect.xmin;
-	recty= ri->disprect.ymax - ri->disprect.ymin;
-	
-	if(rectx<4 || recty<4) return 0;
-	
-	if(ri->rect && (rectx!=ri->pr_rectx || recty!=ri->pr_recty)) {
-		MEM_freeN(ri->rect);
-		ri->rect= NULL;
-		ri->curtile= 0;
-		printf("changed size\n");
-	}
-	ri->pr_rectx= rectx;
-	ri->pr_recty= recty;
-	
-	return 1;
-}
-
-/* called before a panel gets moved/scaled, makes sure we can see through */
-void BIF_view3d_previewrender_clear(ScrArea *UNUSED(sa))
-{
-#if 0
-	View3D *v3d= sa->spacedata.first;
-
-	if(v3d->ri) {
-		RenderInfo *ri= v3d->ri;
-		ri->curtile= 0;
-		if(ri->rect)
-			MEM_freeN(ri->rect);
-		ri->rect= NULL;
-	}
-#endif
-}
-
-/* afterqueue call */
-void BIF_view3d_previewrender(Main *bmain, Scene *scene, ScrArea *sa)
-{
-	View3D *v3d= sa->spacedata.first;
-	RegionView3D *rv3d= NULL; // XXX
-	Render *re;
-	RenderInfo *ri=NULL;	/* preview struct! */
-	RenderStats *rstats;
-	RenderData rdata;
-	rctf viewplane;
-	float clipsta, clipend, pixsize;
-	int orth;
-	
-	/* first get the render info right */
-//	if (!v3d->ri) {
-//		ri= v3d->ri= MEM_callocN(sizeof(RenderInfo), "butsrenderinfo");
-//		ri->tottile= 10000;
-//	}
-//	ri= v3d->ri;
-	
-	if(0==view3d_previewrender_get_rects(sa, &viewplane, ri, &clipsta, &clipend, &orth, &pixsize))
-		return;
-	
-	/* render is finished, so return */
-	if(ri->tottile && ri->curtile>=ri->tottile) return;
-
-	/* or return with a new event */
-	if(qtest()) {
-//		addafterqueue(sa->win, RENDERPREVIEW, 1);
-		return;
-	}
-	//printf("Enter previewrender\n");
-	/* ok, are we rendering all over? */
-	if(ri->re==NULL) {
-		char name[32];
-		
-		ri->status= 0;
-		
-		sprintf(name, "View3dPreview %p", (void *)sa);
-		re= ri->re= RE_NewRender(name);
-		//RE_display_draw_cb(re, view3d_previewrender_progress);
-		//RE_stats_draw_cb(re, view3d_previewrender_stats);
-		//RE_test_break_cb(re, qtest);
-		
-		/* no osa, blur, seq, layers, etc for preview render */
-		rdata= scene->r;
-		rdata.mode &= ~(R_OSA|R_MBLUR);
-		rdata.scemode &= ~(R_DOSEQ|R_DOCOMP|R_FREE_IMAGE);
-		rdata.layers.first= rdata.layers.last= NULL;
-		rdata.renderer= R_INTERN;
-		 
-		RE_InitState(re, NULL, &rdata, NULL, sa->winx, sa->winy, &ri->disprect);
-	
-		if(orth)
-			RE_SetOrtho(re, &viewplane, clipsta, clipend);
-		else
-			RE_SetWindow(re, &viewplane, clipsta, clipend);
-		RE_SetPixelSize(re, pixsize);
-		
-		/* until here are no escapes */
-		ri->status |= PR_DISPRECT;
-		ri->curtile= 0;
-		//printf("new render\n");
-	}
-
-	re= ri->re;
-	
-	PIL_sleep_ms(100);	/* wait 0.1 second if theres really no event... */
-	if(qtest()==0)	{
-		
-		/* check status */
-		if((ri->status & PR_DISPRECT)==0) {
-			RE_SetDispRect(ri->re, &ri->disprect);
-			if(orth)
-				RE_SetOrtho(ri->re, &viewplane, clipsta, clipend);
-			else
-				RE_SetWindow(ri->re, &viewplane, clipsta, clipend);
-			RE_SetPixelSize(re, pixsize);
-			ri->status |= PR_DISPRECT;
-			ri->curtile= 0;
-			//printf("disprect update\n");
-		}
-		if((ri->status & PR_DBASE)==0) {
-			unsigned int lay= scene->lay;
-			
-			RE_SetView(re, rv3d->viewmat);
-			
-			/* allow localview render for objects with lights in normal layers */
-			if(v3d->lay & 0xFF000000)
-				lay |= v3d->lay;
-			else lay= v3d->lay;
-			
-			RE_Database_FromScene(re, bmain, scene, lay, 0);		// 0= dont use camera view
-			
-			rstats= RE_GetStats(re);
-			if(rstats->convertdone) 
-				ri->status |= PR_DBASE|PR_PROJECTED|PR_ROTATED;
-			ri->curtile= 0;
-			
-			/* database can have created render-resol data... */
-			if(rstats->convertdone) 
-				DAG_scene_flush_update(bmain, scene, scene->lay, 0);
-			
-			//printf("dbase update\n");
-		}
-		if((ri->status & PR_PROJECTED)==0) {
-			if(ri->status & PR_DBASE) {
-				if(orth)

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list