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:
authorAaron Carlisle <carlisle.b3d@gmail.com>2022-01-26 23:28:05 +0300
committerAaron Carlisle <carlisle.b3d@gmail.com>2022-01-26 23:29:31 +0300
commit710e46cb2d966d4a05064e3284aefe71e1bc99b2 (patch)
tree9f5c4c4054db296123ff06a32639c64b7f8613ca
parentcab1f1d9a2347c52a07697d2305f4416ff0de84d (diff)
Cleanup: Move specific node tree execution functions into respective module
`node_exec` had some code that was specific to texture/shader nodes. These functions arent used outside there module so limit there declarations. Also make a function static that is only used in `node_exec.c` Reviewed By: JacquesLucke Differential Revision: https://developer.blender.org/D13899
-rw-r--r--source/blender/nodes/intern/node_exec.cc59
-rw-r--r--source/blender/nodes/intern/node_exec.h20
-rw-r--r--source/blender/nodes/shader/node_shader_util.hh5
-rw-r--r--source/blender/nodes/texture/node_texture_tree.c57
-rw-r--r--source/blender/nodes/texture/node_texture_util.h12
5 files changed, 75 insertions, 78 deletions
diff --git a/source/blender/nodes/intern/node_exec.cc b/source/blender/nodes/intern/node_exec.cc
index 4ff662036c3..788d938ca6f 100644
--- a/source/blender/nodes/intern/node_exec.cc
+++ b/source/blender/nodes/intern/node_exec.cc
@@ -35,7 +35,7 @@
#include "node_exec.h"
#include "node_util.h"
-int node_exec_socket_use_stack(bNodeSocket *sock)
+static int node_exec_socket_use_stack(bNodeSocket *sock)
{
/* NOTE: INT supported as FLOAT. Only for EEVEE. */
return ELEM(sock->type, SOCK_INT, SOCK_FLOAT, SOCK_VECTOR, SOCK_RGBA, SOCK_SHADER);
@@ -276,60 +276,3 @@ void ntree_exec_end(bNodeTreeExec *exec)
MEM_freeN(exec);
}
-
-/**** Material/Texture trees ****/
-
-bNodeThreadStack *ntreeGetThreadStack(bNodeTreeExec *exec, int thread)
-{
- ListBase *lb = &exec->threadstack[thread];
- bNodeThreadStack *nts;
-
- for (nts = (bNodeThreadStack *)lb->first; nts; nts = nts->next) {
- if (!nts->used) {
- nts->used = true;
- break;
- }
- }
-
- if (!nts) {
- nts = MEM_cnew<bNodeThreadStack>("bNodeThreadStack");
- nts->stack = (bNodeStack *)MEM_dupallocN(exec->stack);
- nts->used = true;
- BLI_addtail(lb, nts);
- }
-
- return nts;
-}
-
-void ntreeReleaseThreadStack(bNodeThreadStack *nts)
-{
- nts->used = false;
-}
-
-bool ntreeExecThreadNodes(bNodeTreeExec *exec, bNodeThreadStack *nts, void *callerdata, int thread)
-{
- bNodeStack *nsin[MAX_SOCKET] = {nullptr}; /* arbitrary... watch this */
- bNodeStack *nsout[MAX_SOCKET] = {nullptr}; /* arbitrary... watch this */
- bNodeExec *nodeexec;
- bNode *node;
- int n;
-
- /* nodes are presorted, so exec is in order of list */
-
- for (n = 0, nodeexec = exec->nodeexec; n < exec->totnodes; n++, nodeexec++) {
- node = nodeexec->node;
- if (node->need_exec) {
- node_get_stack(node, nts->stack, nsin, nsout);
- /* Handle muted nodes...
- * If the mute func is not set, assume the node should never be muted,
- * and hence execute it!
- */
- if (node->typeinfo->exec_fn && !(node->flag & NODE_MUTED)) {
- node->typeinfo->exec_fn(callerdata, thread, node, &nodeexec->data, nsin, nsout);
- }
- }
- }
-
- /* signal to that all went OK, for render */
- return true;
-}
diff --git a/source/blender/nodes/intern/node_exec.h b/source/blender/nodes/intern/node_exec.h
index b2e1c6564b6..115389afd67 100644
--- a/source/blender/nodes/intern/node_exec.h
+++ b/source/blender/nodes/intern/node_exec.h
@@ -71,9 +71,6 @@ typedef struct bNodeThreadStack {
bool used;
} bNodeThreadStack;
-/** Supported socket types in old nodes. */
-int node_exec_socket_use_stack(struct bNodeSocket *sock);
-
/** For a given socket, find the actual stack entry. */
struct bNodeStack *node_get_socket_stack(struct bNodeStack *stack, struct bNodeSocket *sock);
void node_get_stack(struct bNode *node,
@@ -86,23 +83,6 @@ struct bNodeTreeExec *ntree_exec_begin(struct bNodeExecContext *context,
bNodeInstanceKey parent_key);
void ntree_exec_end(struct bNodeTreeExec *exec);
-struct bNodeThreadStack *ntreeGetThreadStack(struct bNodeTreeExec *exec, int thread);
-void ntreeReleaseThreadStack(struct bNodeThreadStack *nts);
-bool ntreeExecThreadNodes(struct bNodeTreeExec *exec,
- struct bNodeThreadStack *nts,
- void *callerdata,
- int thread);
-
-struct bNodeTreeExec *ntreeShaderBeginExecTree_internal(struct bNodeExecContext *context,
- struct bNodeTree *ntree,
- bNodeInstanceKey parent_key);
-void ntreeShaderEndExecTree_internal(struct bNodeTreeExec *exec);
-
-struct bNodeTreeExec *ntreeTexBeginExecTree_internal(struct bNodeExecContext *context,
- struct bNodeTree *ntree,
- bNodeInstanceKey parent_key);
-void ntreeTexEndExecTree_internal(struct bNodeTreeExec *exec);
-
#ifdef __cplusplus
}
#endif
diff --git a/source/blender/nodes/shader/node_shader_util.hh b/source/blender/nodes/shader/node_shader_util.hh
index 5a5b4f613f3..31229c8693b 100644
--- a/source/blender/nodes/shader/node_shader_util.hh
+++ b/source/blender/nodes/shader/node_shader_util.hh
@@ -101,6 +101,11 @@ void node_shader_gpu_tex_mapping(struct GPUMaterial *mat,
struct GPUNodeStack *in,
struct GPUNodeStack *out);
+struct bNodeTreeExec *ntreeShaderBeginExecTree_internal(struct bNodeExecContext *context,
+ struct bNodeTree *ntree,
+ bNodeInstanceKey parent_key);
+void ntreeShaderEndExecTree_internal(struct bNodeTreeExec *exec);
+
void ntreeExecGPUNodes(struct bNodeTreeExec *exec,
struct GPUMaterial *mat,
struct bNode *output_node);
diff --git a/source/blender/nodes/texture/node_texture_tree.c b/source/blender/nodes/texture/node_texture_tree.c
index 3d914d486c3..82ed43be779 100644
--- a/source/blender/nodes/texture/node_texture_tree.c
+++ b/source/blender/nodes/texture/node_texture_tree.c
@@ -170,6 +170,63 @@ void register_node_tree_type_tex(void)
ntreeTypeAdd(tt);
}
+/**** Material/Texture trees ****/
+
+bNodeThreadStack *ntreeGetThreadStack(bNodeTreeExec *exec, int thread)
+{
+ ListBase *lb = &exec->threadstack[thread];
+ bNodeThreadStack *nts;
+
+ for (nts = (bNodeThreadStack *)lb->first; nts; nts = nts->next) {
+ if (!nts->used) {
+ nts->used = true;
+ break;
+ }
+ }
+
+ if (!nts) {
+ nts = MEM_callocN(sizeof(bNodeThreadStack), "bNodeThreadStack");
+ nts->stack = (bNodeStack *)MEM_dupallocN(exec->stack);
+ nts->used = true;
+ BLI_addtail(lb, nts);
+ }
+
+ return nts;
+}
+
+void ntreeReleaseThreadStack(bNodeThreadStack *nts)
+{
+ nts->used = false;
+}
+
+bool ntreeExecThreadNodes(bNodeTreeExec *exec, bNodeThreadStack *nts, void *callerdata, int thread)
+{
+ bNodeStack *nsin[MAX_SOCKET] = {NULL}; /* arbitrary... watch this */
+ bNodeStack *nsout[MAX_SOCKET] = {NULL}; /* arbitrary... watch this */
+ bNodeExec *nodeexec;
+ bNode *node;
+ int n;
+
+ /* nodes are presorted, so exec is in order of list */
+
+ for (n = 0, nodeexec = exec->nodeexec; n < exec->totnodes; n++, nodeexec++) {
+ node = nodeexec->node;
+ if (node->need_exec) {
+ node_get_stack(node, nts->stack, nsin, nsout);
+ /* Handle muted nodes...
+ * If the mute func is not set, assume the node should never be muted,
+ * and hence execute it!
+ */
+ if (node->typeinfo->exec_fn && !(node->flag & NODE_MUTED)) {
+ node->typeinfo->exec_fn(callerdata, thread, node, &nodeexec->data, nsin, nsout);
+ }
+ }
+ }
+
+ /* signal to that all went OK, for render */
+ return true;
+}
+
bNodeTreeExec *ntreeTexBeginExecTree_internal(bNodeExecContext *context,
bNodeTree *ntree,
bNodeInstanceKey parent_key)
diff --git a/source/blender/nodes/texture/node_texture_util.h b/source/blender/nodes/texture/node_texture_util.h
index d53000058a3..7c8e39925bc 100644
--- a/source/blender/nodes/texture/node_texture_util.h
+++ b/source/blender/nodes/texture/node_texture_util.h
@@ -123,6 +123,18 @@ void tex_output(bNode *node,
void params_from_cdata(TexParams *out, TexCallData *in);
+struct bNodeThreadStack *ntreeGetThreadStack(struct bNodeTreeExec *exec, int thread);
+void ntreeReleaseThreadStack(struct bNodeThreadStack *nts);
+bool ntreeExecThreadNodes(struct bNodeTreeExec *exec,
+ struct bNodeThreadStack *nts,
+ void *callerdata,
+ int thread);
+
+struct bNodeTreeExec *ntreeTexBeginExecTree_internal(struct bNodeExecContext *context,
+ struct bNodeTree *ntree,
+ bNodeInstanceKey parent_key);
+void ntreeTexEndExecTree_internal(struct bNodeTreeExec *exec);
+
#ifdef __cplusplus
}
#endif