diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-04-17 07:17:24 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-04-17 07:21:24 +0300 |
commit | e12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 (patch) | |
tree | 8cf3453d12edb177a218ef8009357518ec6cab6a /source/blender/nodes/shader/node_shader_util.c | |
parent | b3dabc200a4b0399ec6b81f2ff2730d07b44fcaa (diff) |
ClangFormat: apply to source, most of intern
Apply clang format as proposed in T53211.
For details on usage and instructions for migrating branches
without conflicts, see:
https://wiki.blender.org/wiki/Tools/ClangFormat
Diffstat (limited to 'source/blender/nodes/shader/node_shader_util.c')
-rw-r--r-- | source/blender/nodes/shader/node_shader_util.c | 389 |
1 files changed, 195 insertions, 194 deletions
diff --git a/source/blender/nodes/shader/node_shader_util.c b/source/blender/nodes/shader/node_shader_util.c index 19bfd755928..a29962843af 100644 --- a/source/blender/nodes/shader/node_shader_util.c +++ b/source/blender/nodes/shader/node_shader_util.c @@ -21,246 +21,247 @@ * \ingroup nodes */ - #include "DNA_node_types.h" #include "node_shader_util.h" #include "node_exec.h" - bool sh_node_poll_default(bNodeType *UNUSED(ntype), bNodeTree *ntree) { - return STREQ(ntree->idname, "ShaderNodeTree"); + return STREQ(ntree->idname, "ShaderNodeTree"); } -void sh_node_type_base(struct bNodeType *ntype, int type, const char *name, short nclass, short flag) +void sh_node_type_base( + struct bNodeType *ntype, int type, const char *name, short nclass, short flag) { - node_type_base(ntype, type, name, nclass, flag); + node_type_base(ntype, type, name, nclass, flag); - ntype->poll = sh_node_poll_default; - ntype->insert_link = node_insert_link_default; - ntype->update_internal_links = node_update_internal_links_default; + ntype->poll = sh_node_poll_default; + ntype->insert_link = node_insert_link_default; + ntype->update_internal_links = node_update_internal_links_default; } /* ****** */ void nodestack_get_vec(float *in, short type_in, bNodeStack *ns) { - const float *from = ns->vec; - - if (type_in == SOCK_FLOAT) { - if (ns->sockettype == SOCK_FLOAT) - *in = *from; - else - *in = (from[0] + from[1] + from[2]) / 3.0f; - } - else if (type_in == SOCK_VECTOR) { - if (ns->sockettype == SOCK_FLOAT) { - in[0] = from[0]; - in[1] = from[0]; - in[2] = from[0]; - } - else { - copy_v3_v3(in, from); - } - } - else { /* type_in==SOCK_RGBA */ - if (ns->sockettype == SOCK_RGBA) { - copy_v4_v4(in, from); - } - else if (ns->sockettype == SOCK_FLOAT) { - in[0] = from[0]; - in[1] = from[0]; - in[2] = from[0]; - in[3] = 1.0f; - } - else { - copy_v3_v3(in, from); - in[3] = 1.0f; - } - } + const float *from = ns->vec; + + if (type_in == SOCK_FLOAT) { + if (ns->sockettype == SOCK_FLOAT) + *in = *from; + else + *in = (from[0] + from[1] + from[2]) / 3.0f; + } + else if (type_in == SOCK_VECTOR) { + if (ns->sockettype == SOCK_FLOAT) { + in[0] = from[0]; + in[1] = from[0]; + in[2] = from[0]; + } + else { + copy_v3_v3(in, from); + } + } + else { /* type_in==SOCK_RGBA */ + if (ns->sockettype == SOCK_RGBA) { + copy_v4_v4(in, from); + } + else if (ns->sockettype == SOCK_FLOAT) { + in[0] = from[0]; + in[1] = from[0]; + in[2] = from[0]; + in[3] = 1.0f; + } + else { + copy_v3_v3(in, from); + in[3] = 1.0f; + } + } } - void node_gpu_stack_from_data(struct GPUNodeStack *gs, int type, bNodeStack *ns) { - memset(gs, 0, sizeof(*gs)); - - if (ns == NULL) { - /* node_get_stack() will generate NULL bNodeStack pointers for unknown/unsupported types of sockets... */ - zero_v4(gs->vec); - gs->link = NULL; - gs->type = GPU_NONE; - gs->hasinput = false; - gs->hasoutput = false; - gs->sockettype = type; - } - else { - nodestack_get_vec(gs->vec, type, ns); - gs->link = ns->data; - - if (type == SOCK_FLOAT) - gs->type = GPU_FLOAT; - else if (type == SOCK_INT) - gs->type = GPU_FLOAT; /* HACK: Support as float. */ - else if (type == SOCK_VECTOR) - gs->type = GPU_VEC3; - else if (type == SOCK_RGBA) - gs->type = GPU_VEC4; - else if (type == SOCK_SHADER) - gs->type = GPU_CLOSURE; - else - gs->type = GPU_NONE; - - gs->hasinput = ns->hasinput && ns->data; - /* XXX Commented out the ns->data check here, as it seems it's not always set, - * even though there *is* a valid connection/output... But that might need - * further investigation. - */ - gs->hasoutput = ns->hasoutput /*&& ns->data*/; - gs->sockettype = ns->sockettype; - } + memset(gs, 0, sizeof(*gs)); + + if (ns == NULL) { + /* node_get_stack() will generate NULL bNodeStack pointers for unknown/unsupported types of sockets... */ + zero_v4(gs->vec); + gs->link = NULL; + gs->type = GPU_NONE; + gs->hasinput = false; + gs->hasoutput = false; + gs->sockettype = type; + } + else { + nodestack_get_vec(gs->vec, type, ns); + gs->link = ns->data; + + if (type == SOCK_FLOAT) + gs->type = GPU_FLOAT; + else if (type == SOCK_INT) + gs->type = GPU_FLOAT; /* HACK: Support as float. */ + else if (type == SOCK_VECTOR) + gs->type = GPU_VEC3; + else if (type == SOCK_RGBA) + gs->type = GPU_VEC4; + else if (type == SOCK_SHADER) + gs->type = GPU_CLOSURE; + else + gs->type = GPU_NONE; + + gs->hasinput = ns->hasinput && ns->data; + /* XXX Commented out the ns->data check here, as it seems it's not always set, + * even though there *is* a valid connection/output... But that might need + * further investigation. + */ + gs->hasoutput = ns->hasoutput /*&& ns->data*/; + gs->sockettype = ns->sockettype; + } } void node_data_from_gpu_stack(bNodeStack *ns, GPUNodeStack *gs) { - copy_v4_v4(ns->vec, gs->vec); - ns->data = gs->link; - ns->sockettype = gs->sockettype; + copy_v4_v4(ns->vec, gs->vec); + ns->data = gs->link; + ns->sockettype = gs->sockettype; } static void gpu_stack_from_data_list(GPUNodeStack *gs, ListBase *sockets, bNodeStack **ns) { - bNodeSocket *sock; - int i; + bNodeSocket *sock; + int i; - for (sock = sockets->first, i = 0; sock; sock = sock->next, i++) - node_gpu_stack_from_data(&gs[i], sock->type, ns[i]); + for (sock = sockets->first, i = 0; sock; sock = sock->next, i++) + node_gpu_stack_from_data(&gs[i], sock->type, ns[i]); - gs[i].end = true; + gs[i].end = true; } static void data_from_gpu_stack_list(ListBase *sockets, bNodeStack **ns, GPUNodeStack *gs) { - bNodeSocket *sock; - int i; + bNodeSocket *sock; + int i; - for (sock = sockets->first, i = 0; sock; sock = sock->next, i++) - node_data_from_gpu_stack(ns[i], &gs[i]); + for (sock = sockets->first, i = 0; sock; sock = sock->next, i++) + node_data_from_gpu_stack(ns[i], &gs[i]); } bNode *nodeGetActiveTexture(bNodeTree *ntree) { - /* this is the node we texture paint and draw in textured draw */ - bNode *node, *tnode, *inactivenode = NULL, *activetexnode = NULL, *activegroup = NULL; - bool hasgroup = false; - - if (!ntree) - return NULL; - - for (node = ntree->nodes.first; node; node = node->next) { - if (node->flag & NODE_ACTIVE_TEXTURE) { - activetexnode = node; - /* if active we can return immediately */ - if (node->flag & NODE_ACTIVE) - return node; - } - else if (!inactivenode && node->typeinfo->nclass == NODE_CLASS_TEXTURE) - inactivenode = node; - else if (node->type == NODE_GROUP) { - if (node->flag & NODE_ACTIVE) - activegroup = node; - else - hasgroup = true; - } - } - - /* first, check active group for textures */ - if (activegroup) { - tnode = nodeGetActiveTexture((bNodeTree *)activegroup->id); - /* active node takes priority, so ignore any other possible nodes here */ - if (tnode) - return tnode; - } - - if (activetexnode) - return activetexnode; - - if (hasgroup) { - /* node active texture node in this tree, look inside groups */ - for (node = ntree->nodes.first; node; node = node->next) { - if (node->type == NODE_GROUP) { - tnode = nodeGetActiveTexture((bNodeTree *)node->id); - if (tnode && ((tnode->flag & NODE_ACTIVE_TEXTURE) || !inactivenode)) - return tnode; - } - } - } - - return inactivenode; + /* this is the node we texture paint and draw in textured draw */ + bNode *node, *tnode, *inactivenode = NULL, *activetexnode = NULL, *activegroup = NULL; + bool hasgroup = false; + + if (!ntree) + return NULL; + + for (node = ntree->nodes.first; node; node = node->next) { + if (node->flag & NODE_ACTIVE_TEXTURE) { + activetexnode = node; + /* if active we can return immediately */ + if (node->flag & NODE_ACTIVE) + return node; + } + else if (!inactivenode && node->typeinfo->nclass == NODE_CLASS_TEXTURE) + inactivenode = node; + else if (node->type == NODE_GROUP) { + if (node->flag & NODE_ACTIVE) + activegroup = node; + else + hasgroup = true; + } + } + + /* first, check active group for textures */ + if (activegroup) { + tnode = nodeGetActiveTexture((bNodeTree *)activegroup->id); + /* active node takes priority, so ignore any other possible nodes here */ + if (tnode) + return tnode; + } + + if (activetexnode) + return activetexnode; + + if (hasgroup) { + /* node active texture node in this tree, look inside groups */ + for (node = ntree->nodes.first; node; node = node->next) { + if (node->type == NODE_GROUP) { + tnode = nodeGetActiveTexture((bNodeTree *)node->id); + if (tnode && ((tnode->flag & NODE_ACTIVE_TEXTURE) || !inactivenode)) + return tnode; + } + } + } + + return inactivenode; } void ntreeExecGPUNodes(bNodeTreeExec *exec, GPUMaterial *mat, bNode *output_node) { - bNodeExec *nodeexec; - bNode *node; - int n; - bNodeStack *stack; - bNodeStack *nsin[MAX_SOCKET]; /* arbitrary... watch this */ - bNodeStack *nsout[MAX_SOCKET]; /* arbitrary... watch this */ - GPUNodeStack gpuin[MAX_SOCKET + 1], gpuout[MAX_SOCKET + 1]; - bool do_it; - - stack = exec->stack; - - for (n = 0, nodeexec = exec->nodeexec; n < exec->totnodes; ++n, ++nodeexec) { - node = nodeexec->node; - - do_it = false; - /* for groups, only execute outputs for edited group */ - if (node->typeinfo->nclass == NODE_CLASS_OUTPUT) { - if ((output_node != NULL) && (node == output_node)) - do_it = true; - } - else { - do_it = true; - } - - if (do_it) { - if (node->typeinfo->gpufunc) { - node_get_stack(node, stack, nsin, nsout); - gpu_stack_from_data_list(gpuin, &node->inputs, nsin); - gpu_stack_from_data_list(gpuout, &node->outputs, nsout); - if (node->typeinfo->gpufunc(mat, node, &nodeexec->data, gpuin, gpuout)) - data_from_gpu_stack_list(&node->outputs, nsout, gpuout); - } - } - } + bNodeExec *nodeexec; + bNode *node; + int n; + bNodeStack *stack; + bNodeStack *nsin[MAX_SOCKET]; /* arbitrary... watch this */ + bNodeStack *nsout[MAX_SOCKET]; /* arbitrary... watch this */ + GPUNodeStack gpuin[MAX_SOCKET + 1], gpuout[MAX_SOCKET + 1]; + bool do_it; + + stack = exec->stack; + + for (n = 0, nodeexec = exec->nodeexec; n < exec->totnodes; ++n, ++nodeexec) { + node = nodeexec->node; + + do_it = false; + /* for groups, only execute outputs for edited group */ + if (node->typeinfo->nclass == NODE_CLASS_OUTPUT) { + if ((output_node != NULL) && (node == output_node)) + do_it = true; + } + else { + do_it = true; + } + + if (do_it) { + if (node->typeinfo->gpufunc) { + node_get_stack(node, stack, nsin, nsout); + gpu_stack_from_data_list(gpuin, &node->inputs, nsin); + gpu_stack_from_data_list(gpuout, &node->outputs, nsout); + if (node->typeinfo->gpufunc(mat, node, &nodeexec->data, gpuin, gpuout)) + data_from_gpu_stack_list(&node->outputs, nsout, gpuout); + } + } + } } -void node_shader_gpu_tex_mapping(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *UNUSED(out)) +void node_shader_gpu_tex_mapping(GPUMaterial *mat, + bNode *node, + GPUNodeStack *in, + GPUNodeStack *UNUSED(out)) { - NodeTexBase *base = node->storage; - TexMapping *texmap = &base->tex_mapping; - float domin = (texmap->flag & TEXMAP_CLIP_MIN) != 0; - float domax = (texmap->flag & TEXMAP_CLIP_MAX) != 0; - - if (domin || domax || !(texmap->flag & TEXMAP_UNIT_MATRIX)) { - static float max[3] = { FLT_MAX, FLT_MAX, FLT_MAX}; - static float min[3] = {-FLT_MAX, -FLT_MAX, -FLT_MAX}; - GPUNodeLink *tmin, *tmax, *tmat0, *tmat1, *tmat2, *tmat3; - - tmin = GPU_uniform((domin) ? texmap->min : min); - tmax = GPU_uniform((domax) ? texmap->max : max); - tmat0 = GPU_uniform((float *)texmap->mat[0]); - tmat1 = GPU_uniform((float *)texmap->mat[1]); - tmat2 = GPU_uniform((float *)texmap->mat[2]); - tmat3 = GPU_uniform((float *)texmap->mat[3]); - - GPU_link(mat, "mapping", in[0].link, tmat0, tmat1, tmat2, tmat3, tmin, tmax, &in[0].link); - - if (texmap->type == TEXMAP_TYPE_NORMAL) - GPU_link(mat, "texco_norm", in[0].link, &in[0].link); - } + NodeTexBase *base = node->storage; + TexMapping *texmap = &base->tex_mapping; + float domin = (texmap->flag & TEXMAP_CLIP_MIN) != 0; + float domax = (texmap->flag & TEXMAP_CLIP_MAX) != 0; + + if (domin || domax || !(texmap->flag & TEXMAP_UNIT_MATRIX)) { + static float max[3] = {FLT_MAX, FLT_MAX, FLT_MAX}; + static float min[3] = {-FLT_MAX, -FLT_MAX, -FLT_MAX}; + GPUNodeLink *tmin, *tmax, *tmat0, *tmat1, *tmat2, *tmat3; + + tmin = GPU_uniform((domin) ? texmap->min : min); + tmax = GPU_uniform((domax) ? texmap->max : max); + tmat0 = GPU_uniform((float *)texmap->mat[0]); + tmat1 = GPU_uniform((float *)texmap->mat[1]); + tmat2 = GPU_uniform((float *)texmap->mat[2]); + tmat3 = GPU_uniform((float *)texmap->mat[3]); + + GPU_link(mat, "mapping", in[0].link, tmat0, tmat1, tmat2, tmat3, tmin, tmax, &in[0].link); + + if (texmap->type == TEXMAP_TYPE_NORMAL) + GPU_link(mat, "texco_norm", in[0].link, &in[0].link); + } } |