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:
authorCampbell Barton <ideasman42@gmail.com>2019-04-17 07:17:24 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-04-17 07:21:24 +0300
commite12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 (patch)
tree8cf3453d12edb177a218ef8009357518ec6cab6a /source/blender/nodes/shader/node_shader_util.c
parentb3dabc200a4b0399ec6b81f2ff2730d07b44fcaa (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.c389
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);
+ }
}