Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2014-10-11 15:01:16 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2014-10-11 15:01:16 +0400
commit98bd0b4027d8cb43c97440490cf4b0ee611a2552 (patch)
treedf65cfa37b65617037f07075557358e999373162 /source/blender/nodes
parentc4235ce820b0a9c3d019e31e7d4360162a0282a5 (diff)
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.
Diffstat (limited to 'source/blender/nodes')
-rw-r--r--source/blender/nodes/shader/node_shader_tree.c44
-rw-r--r--source/blender/nodes/texture/node_texture_tree.c69
-rw-r--r--source/blender/nodes/texture/node_texture_util.c50
-rw-r--r--source/blender/nodes/texture/node_texture_util.h10
4 files changed, 26 insertions, 147 deletions
diff --git a/source/blender/nodes/shader/node_shader_tree.c b/source/blender/nodes/shader/node_shader_tree.c
index 299172ae4cc..57710df1363 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 1b790f87faf..fb3eadbe663 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,6 @@ static void localize(bNodeTree *localtree, bNodeTree *UNUSED(ntree))
}
}
}
-#else
-static void localize(bNodeTree *UNUSED(localtree), bNodeTree *UNUSED(ntree))
-{
-}
-#endif
static void local_sync(bNodeTree *localtree, bNodeTree *ntree)
{
@@ -181,6 +172,7 @@ static void update(bNodeTree *ntree)
}
}
+
bNodeTreeType *ntreeType_Texture;
void register_node_tree_type_tex(void)
@@ -246,38 +238,8 @@ bNodeTreeExec *ntreeTexBeginExecTree_internal(bNodeExecContext *context, bNodeTr
bNodeTreeExec *ntreeTexBeginExecTree(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 = ntreeTexBeginExecTree_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;
-}
-
-/* free texture delegates */
-static void tex_free_delegates(bNodeTreeExec *exec)
-{
- bNodeThreadStack *nts;
- bNodeStack *ns;
- int th, a;
-
- for (th = 0; th < BLENDER_MAX_THREADS; th++)
- for (nts = exec->threadstack[th].first; nts; nts = nts->next)
- for (ns = nts->stack, a = 0; a < exec->stacksize; a++, ns++)
- if (ns->data && !ns->is_copy)
- MEM_freeN(ns->data);
+ return ntreeTexBeginExecTree_internal(&context, ntree, NODE_INSTANCE_KEY_BASE);
}
void ntreeTexEndExecTree_internal(bNodeTreeExec *exec)
@@ -286,8 +248,6 @@ void ntreeTexEndExecTree_internal(bNodeTreeExec *exec)
int a;
if (exec->threadstack) {
- tex_free_delegates(exec);
-
for (a = 0; a < BLENDER_MAX_THREADS; a++) {
for (nts = exec->threadstack[a].first; nts; nts = nts->next)
if (nts->stack) MEM_freeN(nts->stack);
@@ -303,18 +263,13 @@ void ntreeTexEndExecTree_internal(bNodeTreeExec *exec)
void ntreeTexEndExecTree(bNodeTreeExec *exec)
{
- if (exec) {
- /* exec may get freed, so assign ntree */
- bNodeTree *ntree = exec->nodetree;
+ if (exec != NULL) {
ntreeTexEndExecTree_internal(exec);
-
- /* XXX clear nodetree backpointer to exec data, same problem as noted in ntreeBeginExecTree */
- ntree->execdata = NULL;
}
}
int ntreeTexExecTree(
- bNodeTree *nodes,
+ bNodeTree *UNUSED(nodes),
TexResult *texres,
float co[3],
float dxt[3], float dyt[3],
@@ -331,7 +286,9 @@ int ntreeTexExecTree(
float *nor = texres->nor;
int retval = TEX_INT;
bNodeThreadStack *nts = NULL;
- bNodeTreeExec *exec = nodes->execdata;
+ bNodeTreeExec *exec = NULL;
+
+ return 0;
data.co = co;
data.dxt = dxt;
@@ -345,17 +302,7 @@ int ntreeTexExecTree(
data.cfra = cfra;
data.mtex = mtex;
data.shi = shi;
-
- /* ensure execdata is only initialized once */
- if (!exec) {
- BLI_lock_thread(LOCK_NODES);
- if (!nodes->execdata)
- ntreeTexBeginExecTree(nodes);
- BLI_unlock_thread(LOCK_NODES);
-
- exec = nodes->execdata;
- }
-
+
nts = ntreeGetThreadStack(exec, thread);
ntreeExecThreadNodes(exec, nts, &data, thread);
ntreeReleaseThreadStack(nts);
diff --git a/source/blender/nodes/texture/node_texture_util.c b/source/blender/nodes/texture/node_texture_util.c
index 42c684b8247..76e14c26b80 100644
--- a/source/blender/nodes/texture/node_texture_util.c
+++ b/source/blender/nodes/texture/node_texture_util.c
@@ -63,27 +63,12 @@ void tex_node_type_base(struct bNodeType *ntype, int type, const char *name, sho
ntype->update_internal_links = node_update_internal_links_default;
}
-
-static void tex_call_delegate(TexDelegate *dg, float *out, TexParams *params, short thread)
-{
- if (dg->node->need_exec) {
- dg->fn(out, params, dg->node, dg->in, thread);
-
- if (dg->cdata->do_preview)
- tex_do_preview(dg->preview, params->previewco, out, dg->cdata->do_manage);
- }
-}
-
static void tex_input(float *out, int sz, bNodeStack *in, TexParams *params, short thread)
{
- TexDelegate *dg = in->data;
- if (dg) {
- tex_call_delegate(dg, in->vec, params, thread);
-
- if (in->hasoutput && in->sockettype == SOCK_FLOAT)
- in->vec[1] = in->vec[2] = in->vec[0];
- }
- memcpy(out, in->vec, sz * sizeof(float));
+ (void) in;
+ (void) params;
+ (void) thread;
+ memset(out, 0, sz * sizeof(float));
}
void tex_input_vec(float *out, bNodeStack *in, TexParams *params, short thread)
@@ -139,27 +124,12 @@ void tex_do_preview(bNodePreview *preview, const float coord[2], const float col
void tex_output(bNode *node, bNodeExecData *execdata, bNodeStack **in, bNodeStack *out, TexFn texfn, TexCallData *cdata)
{
- TexDelegate *dg;
-
- if (node->flag & NODE_MUTED) {
- /* do not add a delegate if the node is muted */
- return;
- }
- else {
- if (!out->data)
- /* Freed in tex_end_exec (node.c) */
- dg = out->data = MEM_mallocN(sizeof(TexDelegate), "tex delegate");
- else
- dg = out->data;
- }
-
-
- dg->cdata = cdata;
- dg->fn = texfn;
- dg->node = node;
- dg->preview = execdata->preview;
- memcpy(dg->in, in, MAX_SOCKET * sizeof(bNodeStack *));
- dg->type = out->sockettype;
+ (void) node;
+ (void) execdata;
+ (void) in;
+ (void) out;
+ (void) texfn;
+ (void) cdata;
}
void ntreeTexCheckCyclics(struct bNodeTree *ntree)
diff --git a/source/blender/nodes/texture/node_texture_util.h b/source/blender/nodes/texture/node_texture_util.h
index eb81bcd6949..36885d34d00 100644
--- a/source/blender/nodes/texture/node_texture_util.h
+++ b/source/blender/nodes/texture/node_texture_util.h
@@ -109,16 +109,6 @@ typedef struct TexParams {
typedef void(*TexFn) (float *out, TexParams *params, bNode *node, bNodeStack **in, short thread);
-typedef struct TexDelegate {
- TexCallData *cdata;
- TexFn fn;
- bNode *node;
- bNodePreview *preview;
- bNodeStack *in[MAX_SOCKET];
- int type;
-} TexDelegate;
-
-
int tex_node_poll_default(struct bNodeType *ntype, struct bNodeTree *ntree);
void tex_node_type_base(struct bNodeType *ntype, int type, const char *name, short nclass, short flag);