[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22633] branches/blender2.5/blender/source /blender: More texnode preview fixes.

Robin Allen roblovski at gmail.com
Wed Aug 19 17:45:20 CEST 2009


Revision: 22633
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22633
Author:   kakbarnf
Date:     2009-08-19 17:45:16 +0200 (Wed, 19 Aug 2009)

Log Message:
-----------
More texnode preview fixes. Previews now have correct aspect ratio and are drawn by the renderer.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/BKE_node.h
    branches/blender2.5/blender/source/blender/editors/preview/previewrender.c
    branches/blender2.5/blender/source/blender/editors/space_node/node_edit.c
    branches/blender2.5/blender/source/blender/editors/space_node/space_node.c
    branches/blender2.5/blender/source/blender/nodes/intern/TEX_util.c
    branches/blender2.5/blender/source/blender/nodes/intern/TEX_util.h
    branches/blender2.5/blender/source/blender/render/intern/source/texture.c

Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_node.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_node.h	2009-08-19 14:04:21 UTC (rev 22632)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_node.h	2009-08-19 15:45:16 UTC (rev 22633)
@@ -421,10 +421,9 @@
 
 /* API */
 int  ntreeTexTagAnimated(struct bNodeTree *ntree);
-void ntreeTexUpdatePreviews( struct bNodeTree* nodetree );
-void ntreeTexExecTree(struct bNodeTree *ntree, struct TexResult *target, float *coord, float *dxt, float *dyt, char do_preview, short thread, struct Tex *tex, short which_output, int cfra);
+void ntreeTexSetPreviewFlag(int);
+void ntreeTexExecTree(struct bNodeTree *ntree, struct TexResult *target, float *coord, float *dxt, float *dyt, short thread, struct Tex *tex, short which_output, int cfra);
 void ntreeTexCheckCyclics(struct bNodeTree *ntree);
-void ntreeTexAssignIndex(struct bNodeTree *ntree, struct bNode *node);
 char* ntreeTexOutputMenu(struct bNodeTree *ntree);
 
 

Modified: branches/blender2.5/blender/source/blender/editors/preview/previewrender.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/preview/previewrender.c	2009-08-19 14:04:21 UTC (rev 22632)
+++ branches/blender2.5/blender/source/blender/editors/preview/previewrender.c	2009-08-19 15:45:16 UTC (rev 22633)
@@ -946,7 +946,11 @@
 	/* XXX ugly global still, but we can't do preview while rendering */
 	if(G.rendering)
 		return;
-
+	
+	if(GS(id->name) == ID_TE) {
+		ntreeTexSetPreviewFlag(1);
+	}
+	
 	steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), owner);
 	sp= MEM_callocN(sizeof(ShaderPreview), "shader preview");
 

Modified: branches/blender2.5/blender/source/blender/editors/space_node/node_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_node/node_edit.c	2009-08-19 14:04:21 UTC (rev 22632)
+++ branches/blender2.5/blender/source/blender/editors/space_node/node_edit.c	2009-08-19 15:45:16 UTC (rev 22633)
@@ -574,7 +574,6 @@
 	nodeAddLink(tx->nodetree, in, fromsock, out, tosock);
 	
 	ntreeSolveOrder(tx->nodetree);	/* needed for pointers */
-	ntreeTexUpdatePreviews(tx->nodetree); /* XXX texture nodes should follow shader node methods (ton) */
 }
 
 /* Here we set the active tree(s), even called for each redraw now, so keep it fast :) */
@@ -1111,9 +1110,6 @@
 				node->width= nsw->oldwidth + mx - nsw->mxstart;
 				CLAMP(node->width, node->typeinfo->minwidth, node->typeinfo->maxwidth);
 			}
-			// XXX
-			if(snode->nodetree->type == NTREE_TEXTURE)
-				ntreeTexUpdatePreviews(snode->nodetree); /* XXX texture nodes should follow shader node methods (ton) */
 				
 			ED_region_tag_redraw(ar);
 
@@ -1659,7 +1655,6 @@
 	
 	if(snode->nodetree->type==NTREE_TEXTURE) {
 		ntreeTexCheckCyclics(snode->edittree);
-		ntreeTexUpdatePreviews(snode->edittree); /* XXX texture nodes should follow shader node methods (ton) */
 	}
 	
 	return node;

Modified: branches/blender2.5/blender/source/blender/editors/space_node/space_node.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_node/space_node.c	2009-08-19 14:04:21 UTC (rev 22632)
+++ branches/blender2.5/blender/source/blender/editors/space_node/space_node.c	2009-08-19 15:45:16 UTC (rev 22633)
@@ -184,8 +184,9 @@
 		}
 		else if(snode->treetype==NTREE_TEXTURE) {
 			Tex *tex= (Tex *)snode->id;
-			if(tex->use_nodes)
-				ntreeTexUpdatePreviews(tex->nodetree);
+			if(tex->use_nodes) {
+				ED_preview_shader_job(C, sa, snode->id, NULL, NULL, 100, 100);
+			}
 		}
 	}
 }

Modified: branches/blender2.5/blender/source/blender/nodes/intern/TEX_util.c
===================================================================
--- branches/blender2.5/blender/source/blender/nodes/intern/TEX_util.c	2009-08-19 14:04:21 UTC (rev 22632)
+++ branches/blender2.5/blender/source/blender/nodes/intern/TEX_util.c	2009-08-19 15:45:16 UTC (rev 22633)
@@ -47,6 +47,8 @@
 
 #define PREV_RES 128 /* default preview resolution */
 
+int preview_flag = 0;
+
 void tex_call_delegate(TexDelegate *dg, float *out, TexParams *params, short thread)
 {
 	if(dg->node->need_exec)
@@ -108,12 +110,6 @@
 	if(node->preview==NULL)
 		node->preview= MEM_callocN(sizeof(bNodePreview), "node preview");
 	
-	if(node->preview->rect)
-		if(node->preview->xsize!=xsize && node->preview->ysize!=ysize) {
-			MEM_freeN(node->preview->rect);
-			node->preview->rect= NULL;
-		}
-	
 	if(node->preview->rect==NULL) {
 		node->preview->rect= MEM_callocN(4*xsize + xsize*ysize*sizeof(float)*4, "node preview rect");
 		node->preview->xsize= xsize;
@@ -136,6 +132,8 @@
 	bNodePreview *preview;
 	float coord[3] = {0, 0, 0};
 	TexParams params;
+	int resolution;
+	int xsize, ysize;
 	
 	if(!cdata->do_preview)
 		return;
@@ -146,19 +144,23 @@
 	init_preview(node);
 	
 	preview = node->preview;
+	xsize = preview->xsize;
+	ysize = preview->ysize;
 	
 	params.dxt = 0;
 	params.dyt = 0;
 	params.cfra = cdata->cfra;
 	params.coord = coord;
 	
-	for(x=0; x<preview->xsize; x++)
-	for(y=0; y<preview->ysize; y++)
+	resolution = (xsize < ysize) ? xsize : ysize;
+	
+	for(x=0; x<xsize; x++)
+	for(y=0; y<ysize; y++)
 	{
-		params.coord[0] = ((float) x / preview->xsize) * 2 - 1;
-		params.coord[1] = ((float) y / preview->ysize) * 2 - 1;
+		params.coord[0] = ((float) x / resolution) * 2 - 1;
+		params.coord[1] = ((float) y / resolution) * 2 - 1;
 		
-		result = preview->rect + 4 * (preview->xsize*y + x);
+		result = preview->rect + 4 * (xsize*y + x);
 		
 		tex_input_rgba(result, ns, &params, cdata->thread);
 	}
@@ -212,7 +214,6 @@
 	TexResult *texres,
 	float *coord,
 	float *dxt, float *dyt,
-	char do_preview, 
 	short thread, 
 	Tex *tex, 
 	short which_output, 
@@ -230,28 +231,19 @@
 	data.dxt = dxt;
 	data.dyt = dyt;
 	data.target = texres;
-	data.do_preview = do_preview;
+	data.do_preview = preview_flag;
 	data.thread = thread;
 	data.which_output = which_output;
 	data.cfra= cfra;
 	
+	preview_flag = 0;
+	
 	ntreeExecTree(nodes, &data, thread);
 }
 
-void ntreeTexUpdatePreviews(bNodeTree* nodetree)
+void ntreeTexSetPreviewFlag(int doit)
 {
-	Tex *tex;
-	float coord[] = {0,0,0};
-	TexResult dummy_texres;
-	
-	for(tex= G.main->tex.first; tex; tex= tex->id.next)
-		if(tex->nodetree == nodetree) break;
-	if(tex) {
-		dummy_texres.nor = 0;
-	
-		ntreeBeginExecTree(nodetree);
-		ntreeTexExecTree(nodetree, &dummy_texres, coord, 0, 0, 1, 0, tex, 0, 0);
-	}
+	preview_flag = doit;
 }
 
 char* ntreeTexOutputMenu(bNodeTree *ntree)

Modified: branches/blender2.5/blender/source/blender/nodes/intern/TEX_util.h
===================================================================
--- branches/blender2.5/blender/source/blender/nodes/intern/TEX_util.h	2009-08-19 14:04:21 UTC (rev 22632)
+++ branches/blender2.5/blender/source/blender/nodes/intern/TEX_util.h	2009-08-19 15:45:16 UTC (rev 22633)
@@ -102,8 +102,7 @@
 void tex_output(bNode *node, bNodeStack **in, bNodeStack *out, TexFn texfn);
 void tex_do_preview(bNode *node, bNodeStack *ns, TexCallData *cdata);
 
-void ntreeTexUpdatePreviews( bNodeTree* nodetree );
-void ntreeTexExecTree(bNodeTree *nodes, TexResult *texres, float *coord, float *dxt, float *dyt, char do_preview, short thread, struct Tex *tex, short which_output, int cfra);
+void ntreeTexExecTree(bNodeTree *nodes, TexResult *texres, float *coord, float *dxt, float *dyt, short thread, struct Tex *tex, short which_output, int cfra);
 
 void params_from_cdata(TexParams *out, TexCallData *in);
 

Modified: branches/blender2.5/blender/source/blender/render/intern/source/texture.c
===================================================================
--- branches/blender2.5/blender/source/blender/render/intern/source/texture.c	2009-08-19 14:04:21 UTC (rev 22632)
+++ branches/blender2.5/blender/source/blender/render/intern/source/texture.c	2009-08-19 15:45:16 UTC (rev 22633)
@@ -719,7 +719,7 @@
 	short rv = TEX_INT;
 	bNodeTree *nodes = tex->nodetree;
 	
-	ntreeTexExecTree(nodes, texres, texvec, dxt, dyt, 0, thread, tex, which_output, R.r.cfra);
+	ntreeTexExecTree(nodes, texres, texvec, dxt, dyt, thread, tex, which_output, R.r.cfra);
 	
 	if(texres->nor) rv |= TEX_NOR;
 	rv |= TEX_RGB;





More information about the Bf-blender-cvs mailing list