[Bf-blender-cvs] [98bd0b4] texture_nodes_refactor: Get rid of old legacy stuff happening all over the place

Sergey Sharybin noreply at git.blender.org
Sat Oct 11 15:04:32 CEST 2014


Commit: 98bd0b4027d8cb43c97440490cf4b0ee611a2552
Author: Sergey Sharybin
Date:   Sat Oct 11 17:01:16 2014 +0600
Branches: texture_nodes_refactor
https://developer.blender.org/rB98bd0b4027d8cb43c97440490cf4b0ee611a2552

Get rid of old legacy stuff happening all over the place

Basically get rid of texture nodes deligates and exec data stored
in the DNA node tree structure.

Blender is pretty much unusable now, because there are whole areas
to be ported over.

===================================================================

M	source/blender/blenkernel/intern/material.c
M	source/blender/blenkernel/intern/node.c
M	source/blender/blenkernel/intern/texture.c
M	source/blender/blenloader/intern/readfile.c
M	source/blender/editors/sculpt_paint/paint_cursor.c
M	source/blender/editors/sculpt_paint/paint_image.c
M	source/blender/editors/sculpt_paint/sculpt.c
M	source/blender/makesdna/DNA_node_types.h
M	source/blender/nodes/shader/node_shader_tree.c
M	source/blender/nodes/texture/node_texture_tree.c
M	source/blender/nodes/texture/node_texture_util.c
M	source/blender/nodes/texture/node_texture_util.h
M	source/blender/render/intern/source/render_texture.c

===================================================================

diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c
index eeca60f..fec17e6 100644
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@ -1074,9 +1074,12 @@ void init_render_material(Material *mat, int r_mode, float *amb)
 		ntreeShaderGetTexcoMode(mat->nodetree, r_mode, &mat->texco, &mat->mode_l);
 
 		init_render_nodetree(mat->nodetree, mat, r_mode, amb);
-		
+
+		/*
 		if (!mat->nodetree->execdata)
 			mat->nodetree->execdata = ntreeShaderBeginExecTree(mat->nodetree);
+		*/
+		BLI_assert(!"Need to port this thing");
 	}
 	else {
 		mat->mode_l = mat->mode;
@@ -1116,8 +1119,8 @@ void init_render_materials(Main *bmain, int r_mode, float *amb)
 void end_render_material(Material *mat)
 {
 	if (mat && mat->nodetree && mat->use_nodes) {
-		if (mat->nodetree->execdata)
-			ntreeShaderEndExecTree(mat->nodetree->execdata);
+		/* ntreeShaderEndExecTree(mat->nodetree->execdata); */
+		BLI_assert(!"Port to the copper!");
 	}
 }
 
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index 3a7bfb0..b71035d 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -1129,9 +1129,6 @@ static bNodeTree *ntreeCopyTree_internal(bNodeTree *ntree, Main *bmain, bool do_
 
 	id_us_plus((ID *)newtree->gpd);
 
-	/* in case a running nodetree is copied */
-	newtree->execdata = NULL;
-	
 	BLI_listbase_clear(&newtree->nodes);
 	BLI_listbase_clear(&newtree->links);
 	
@@ -1625,13 +1622,7 @@ static void node_free_node_ex(bNodeTree *ntree, bNode *node, bool remove_animdat
 
 		if (ntree->typeinfo->free_node_cache)
 			ntree->typeinfo->free_node_cache(ntree, node);
-		
-		/* texture node has bad habit of keeping exec data around */
-		if (ntree->type == NTREE_TEXTURE && ntree->execdata) {
-			ntreeTexEndExecTree(ntree->execdata);
-			ntree->execdata = NULL;
-		}
-		
+
 		if (node->typeinfo->freefunc)
 			node->typeinfo->freefunc(node);
 	}
@@ -1705,24 +1696,7 @@ void ntreeFreeTree_ex(bNodeTree *ntree, const bool do_id_user)
 	bNodeSocket *sock, *nextsock;
 	
 	if (ntree == NULL) return;
-	
-	/* XXX hack! node trees should not store execution graphs at all.
-	 * This should be removed when old tree types no longer require it.
-	 * Currently the execution data for texture nodes remains in the tree
-	 * after execution, until the node tree is updated or freed.
-	 */
-	if (ntree->execdata) {
-		switch (ntree->type) {
-			case NTREE_SHADER:
-				ntreeShaderEndExecTree(ntree->execdata);
-				break;
-			case NTREE_TEXTURE:
-				ntreeTexEndExecTree(ntree->execdata);
-				ntree->execdata = NULL;
-				break;
-		}
-	}
-	
+
 	/* XXX not nice, but needed to free localized node groups properly */
 	free_localized_node_groups(ntree);
 	
diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c
index b1981a3..f938ed0 100644
--- a/source/blender/blenkernel/intern/texture.c
+++ b/source/blender/blenkernel/intern/texture.c
@@ -836,10 +836,7 @@ Tex *BKE_texture_copy(Tex *tex)
 	if (texn->ot) texn->ot = BKE_copy_oceantex(texn->ot);
 	if (tex->preview) texn->preview = BKE_previewimg_copy(tex->preview);
 
-	if (tex->nodetree) {
-		if (tex->nodetree->execdata) {
-			ntreeTexEndExecTree(tex->nodetree->execdata);
-		}
+	if (tex->nodetree != NULL) {
 		texn->nodetree = ntreeCopyTree(tex->nodetree);
 	}
 	
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index aea3596..ede2e08 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -2660,7 +2660,6 @@ static void direct_link_nodetree(FileData *fd, bNodeTree *ntree)
 	ntree->interface_type = NULL;
 	
 	ntree->progress = NULL;
-	ntree->execdata = NULL;
 	
 	ntree->adt = newdataadr(fd, ntree->adt);
 	direct_link_animdata(fd, ntree->adt);
diff --git a/source/blender/editors/sculpt_paint/paint_cursor.c b/source/blender/editors/sculpt_paint/paint_cursor.c
index e27ef70..4e969dd 100644
--- a/source/blender/editors/sculpt_paint/paint_cursor.c
+++ b/source/blender/editors/sculpt_paint/paint_cursor.c
@@ -305,8 +305,10 @@ static int load_tex(Brush *br, ViewContext *vc, float zoom, bool col, bool prima
 			}
 		}
 
-		if (mtex->tex && mtex->tex->nodetree)
-			ntreeTexEndExecTree(mtex->tex->nodetree->execdata);
+		if (mtex->tex && mtex->tex->nodetree) {
+			/* ntreeTexEndExecTree(mtex->tex->nodetree->execdata); */
+			BLI_assert(!"Need to port this over");
+		}
 
 		if (pool)
 			BKE_image_pool_free(pool);
diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c
index f4189b5..56ab7c7 100644
--- a/source/blender/editors/sculpt_paint/paint_image.c
+++ b/source/blender/editors/sculpt_paint/paint_image.c
@@ -712,11 +712,15 @@ void paint_brush_exit_tex(Brush *brush)
 {
 	if (brush) {
 		MTex *mtex = &brush->mtex;
-		if (mtex->tex && mtex->tex->nodetree)
-			ntreeTexEndExecTree(mtex->tex->nodetree->execdata);
+		if (mtex->tex && mtex->tex->nodetree) {
+			/* ntreeTexEndExecTree(mtex->tex->nodetree->execdata); */
+			BLI_assert(!"Need to port thing over");
+		}
 		mtex = &brush->mask_mtex;
-		if (mtex->tex && mtex->tex->nodetree)
-			ntreeTexEndExecTree(mtex->tex->nodetree->execdata);
+		if (mtex->tex && mtex->tex->nodetree) {
+			/* ntreeTexEndExecTree(mtex->tex->nodetree->execdata); */
+			BLI_assert(!"Need to port thing over");
+		}
 	}
 }
 
diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c
index 0e0012c..26f810a 100644
--- a/source/blender/editors/sculpt_paint/sculpt.c
+++ b/source/blender/editors/sculpt_paint/sculpt.c
@@ -4339,8 +4339,10 @@ static void sculpt_brush_exit_tex(Sculpt *sd)
 	Brush *brush = BKE_paint_brush(&sd->paint);
 	MTex *mtex = &brush->mtex;
 
-	if (mtex->tex && mtex->tex->nodetree)
-		ntreeTexEndExecTree(mtex->tex->nodetree->execdata);
+	if (mtex->tex && mtex->tex->nodetree) {
+		/* ntreeTexEndExecTree(mtex->tex->nodetree->execdata); */
+		BLI_assert(!"Need to port the damn thing");
+	}
 }
 
 static void sculpt_stroke_done(const bContext *C, struct PaintStroke *UNUSED(stroke))
diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h
index e0d25e7..a29f7e8 100644
--- a/source/blender/makesdna/DNA_node_types.h
+++ b/source/blender/makesdna/DNA_node_types.h
@@ -379,7 +379,7 @@ typedef struct bNodeTree {
 	 * Execution data is generated from the tree once at execution start and can then be used
 	 * as long as necessary, even while the tree is being modified.
 	 */
-	struct bNodeTreeExec *execdata;
+	//struct bNodeTreeExec *execdata;
 	
 	/* callbacks */
 	void (*progress)(void *, float progress);
diff --git a/source/blender/nodes/shader/node_shader_tree.c b/source/blender/nodes/shader/node_shader_tree.c
index 299172a..57710df 100644
--- a/source/blender/nodes/shader/node_shader_tree.c
+++ b/source/blender/nodes/shader/node_shader_tree.c
@@ -248,24 +248,8 @@ bNodeTreeExec *ntreeShaderBeginExecTree_internal(bNodeExecContext *context, bNod
 bNodeTreeExec *ntreeShaderBeginExecTree(bNodeTree *ntree)
 {
 	bNodeExecContext context;
-	bNodeTreeExec *exec;
-	
-	/* XXX hack: prevent exec data from being generated twice.
-	 * this should be handled by the renderer!
-	 */
-	if (ntree->execdata)
-		return ntree->execdata;
-	
 	context.previews = ntree->previews;
-	
-	exec = ntreeShaderBeginExecTree_internal(&context, ntree, NODE_INSTANCE_KEY_BASE);
-	
-	/* XXX this should not be necessary, but is still used for cmp/sha/tex nodes,
-	 * which only store the ntree pointer. Should be fixed at some point!
-	 */
-	ntree->execdata = exec;
-	
-	return exec;
+	return ntreeShaderBeginExecTree_internal(&context, ntree, NODE_INSTANCE_KEY_BASE);
 }
 
 void ntreeShaderEndExecTree_internal(bNodeTreeExec *exec)
@@ -289,18 +273,13 @@ void ntreeShaderEndExecTree_internal(bNodeTreeExec *exec)
 
 void ntreeShaderEndExecTree(bNodeTreeExec *exec)
 {
-	if (exec) {
-		/* exec may get freed, so assign ntree */
-		bNodeTree *ntree = exec->nodetree;
+	if (exec != NULL) {
 		ntreeShaderEndExecTree_internal(exec);
-		
-		/* XXX clear nodetree backpointer to exec data, same problem as noted in ntreeBeginExecTree */
-		ntree->execdata = NULL;
 	}
 }
 
 /* only for Blender internal */
-bool ntreeShaderExecTree(bNodeTree *ntree, ShadeInput *shi, ShadeResult *shr)
+bool ntreeShaderExecTree(bNodeTree *UNUSED(ntree), ShadeInput *shi, ShadeResult *shr)
 {
 	ShaderCallData scd;
 	/**
@@ -309,9 +288,12 @@ bool ntreeShaderExecTree(bNodeTree *ntree, ShadeInput *shi, ShadeResult *shr)
 	 */
 	Material *mat = shi->mat;
 	bNodeThreadStack *nts = NULL;
-	bNodeTreeExec *exec = ntree->execdata;
+	bNodeTreeExec *exec = NULL;
 	int compat;
-	
+
+	BLI_assert(!"Port the damn thing over");
+	return false;
+
 	/* convert caller data to struct */
 	scd.shi = shi;
 	scd.shr = shr;
@@ -319,16 +301,6 @@ bool ntreeShaderExecTree(bNodeTree *ntree, ShadeInput *shi, ShadeResult *shr)
 	/* each material node has own local shaderesult, with optional copying */
 	memset(shr, 0, sizeof(ShadeResult));
 	
-	/* ensure execdata is only initialized once */
-	if (!exec) {
-		BLI_lock_thread(LOCK_NODES);
-		if (!ntree->execdata)
-			ntree->execdata = ntreeShaderBeginExecTree(ntree);
-		BLI_unlock_thread(LOCK_NODES);
-
-		exec = ntree->execdata;
-	}
-	
 	nts = ntreeGetThreadStack(exec, shi->thread);
 	compat = ntreeExecThreadNodes(exec, nts, &scd, shi->thread);
 	ntreeReleaseThreadStack(nts);
diff --git a/source/blender/nodes/texture/node_texture_tree.c b/source/blender/nodes/texture/node_texture_tree.c
index 1b790f87..fb3eadb 100644
--- a/source/blender/nodes/texture/node_texture_tree.c
+++ b/source/blender/nodes/texture/node_texture_tree.c
@@ -137,10 +137,6 @@ static void foreach_nodeclass(Scene *UNUSED(scene), void *calldata, bNodeClassCa
 	func(calldata, NODE_CLASS_LAYOUT, N_("Layout"));
 }
 
-/* XXX muting disabled in previews because of threading issues with the main execution
- * it works here, but disabled for consistency
- */
-#if 1
 static void localize(bNodeTree *localtree, bNodeTree *UNUSED(ntree))
 {
 	bNode *node, *node_next;
@@ -155,11 +151

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list