Commit: 25018dc061af17e9074ff60bd29176518141b4cd Author: Aaron Carlisle Date: Tue Jan 4 11:41:10 2022 -0500 Branches: master https://developer.blender.org/rB25018dc061af17e9074ff60bd29176518141b4cd
Cleanup: Nodes: Convert generic shader node files to c++ Along with the general changes to CPP this commit does the following - Use static casts where possible - Use new CPP MEM library functions instead of cast - Use listbase macros where possible - Declare variables where initialized Reviewed By: HooglyBoogly, JacquesLucke Differential Revision: https://developer.blender.org/D13718 =================================================================== M source/blender/nodes/shader/CMakeLists.txt R083 source/blender/nodes/shader/node_shader_tree.c source/blender/nodes/shader/node_shader_tree.cc R079 source/blender/nodes/shader/nodes/node_shader_common.c source/blender/nodes/shader/nodes/node_shader_common.cc =================================================================== diff --git a/source/blender/nodes/shader/CMakeLists.txt b/source/blender/nodes/shader/CMakeLists.txt index a665aaee5b1..9480fab1f7d 100644 --- a/source/blender/nodes/shader/CMakeLists.txt +++ b/source/blender/nodes/shader/CMakeLists.txt @@ -63,7 +63,7 @@ set(SRC nodes/node_shader_camera.cc nodes/node_shader_clamp.cc nodes/node_shader_color_ramp.cc - nodes/node_shader_common.c + nodes/node_shader_common.cc nodes/node_shader_curves.cc nodes/node_shader_displacement.cc nodes/node_shader_eevee_specular.cc @@ -132,7 +132,7 @@ set(SRC nodes/node_shader_wavelength.cc nodes/node_shader_wireframe.cc - node_shader_tree.c + node_shader_tree.cc node_shader_util.cc node_shader_util.h diff --git a/source/blender/nodes/shader/node_shader_tree.c b/source/blender/nodes/shader/node_shader_tree.cc similarity index 83% rename from source/blender/nodes/shader/node_shader_tree.c rename to source/blender/nodes/shader/node_shader_tree.cc index 32086bb100b..63bff092513 100644 --- a/source/blender/nodes/shader/node_shader_tree.c +++ b/source/blender/nodes/shader/node_shader_tree.cc @@ -21,7 +21,7 @@ * \ingroup nodes */ -#include <string.h> +#include <cstring> #include "DNA_light_types.h" #include "DNA_linestyle_types.h" @@ -62,9 +62,9 @@ #include "node_shader_util.h" #include "node_util.h" -typedef struct nTreeTags { +struct nTreeTags { float ssr_id, sss_id; -} nTreeTags; +}; static void ntree_shader_tag_nodes(bNodeTree *ntree, bNode *output_node, nTreeTags *tags); @@ -94,7 +94,7 @@ static void shader_get_from_context(const bContext *C, if (ob) { *r_from = &ob->id; if (ob->type == OB_LAMP) { - *r_id = ob->data; + *r_id = static_cast<ID *>(ob->data); *r_ntree = ((Light *)ob->data)->nodetree; } else { @@ -110,7 +110,7 @@ static void shader_get_from_context(const bContext *C, else if (snode->shaderfrom == SNODE_SHADER_LINESTYLE) { FreestyleLineStyle *linestyle = BKE_linestyle_active_from_view_layer(view_layer); if (linestyle) { - *r_from = NULL; + *r_from = nullptr; *r_id = &linestyle->id; *r_ntree = linestyle->nodetree; } @@ -118,7 +118,7 @@ static void shader_get_from_context(const bContext *C, #endif else { /* SNODE_SHADER_WORLD */ if (scene->world) { - *r_from = NULL; + *r_from = nullptr; *r_id = &scene->world->id; *r_ntree = scene->world->nodetree; } @@ -177,10 +177,9 @@ static bool shader_node_tree_socket_type_valid(bNodeTreeType *UNUSED(ntreetype), bNodeTreeType *ntreeType_Shader; -void register_node_tree_type_sh(void) +void register_node_tree_type_sh() { - bNodeTreeType *tt = ntreeType_Shader = MEM_callocN(sizeof(bNodeTreeType), - "shader node tree type"); + bNodeTreeType *tt = ntreeType_Shader = MEM_cnew<bNodeTreeType>("shader node tree type"); tt->type = NTREE_SHADER; strcpy(tt->idname, "ShaderNodeTree"); @@ -210,7 +209,7 @@ bNode *ntreeShaderOutputNode(bNodeTree *ntree, int target) /* Find output node that matches type and target. If there are * multiple, we prefer exact target match and active nodes. */ - bNode *output_node = NULL; + bNode *output_node = nullptr; LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { if (!ELEM(node->type, SH_NODE_OUTPUT_MATERIAL, SH_NODE_OUTPUT_WORLD, SH_NODE_OUTPUT_LIGHT)) { @@ -218,7 +217,7 @@ bNode *ntreeShaderOutputNode(bNodeTree *ntree, int target) } if (node->custom1 == SHD_OUTPUT_ALL) { - if (output_node == NULL) { + if (output_node == nullptr) { output_node = node; } else if (output_node->custom1 == SHD_OUTPUT_ALL) { @@ -228,7 +227,7 @@ bNode *ntreeShaderOutputNode(bNodeTree *ntree, int target) } } else if (node->custom1 == target) { - if (output_node == NULL) { + if (output_node == nullptr) { output_node = node; } else if (output_node->custom1 == SHD_OUTPUT_ALL) { @@ -246,12 +245,12 @@ bNode *ntreeShaderOutputNode(bNodeTree *ntree, int target) /* Find socket with a specified identifier. */ static bNodeSocket *ntree_shader_node_find_socket(ListBase *sockets, const char *identifier) { - for (bNodeSocket *sock = sockets->first; sock != NULL; sock = sock->next) { + LISTBASE_FOREACH (bNodeSocket *, sock, sockets) { if (STREQ(sock->identifier, identifier)) { return sock; } } - return NULL; + return nullptr; } /* Find input socket with a specified identifier. */ @@ -280,37 +279,37 @@ static bool ntree_shader_expand_socket_default(bNodeTree *localtree, switch (socket->type) { case SOCK_VECTOR: - value_node = nodeAddStaticNode(NULL, localtree, SH_NODE_RGB); + value_node = nodeAddStaticNode(nullptr, localtree, SH_NODE_RGB); value_socket = ntree_shader_node_find_output(value_node, "Color"); - BLI_assert(value_socket != NULL); - src_vector = socket->default_value; - dst_rgba = value_socket->default_value; + BLI_assert(value_socket != nullptr); + src_vector = static_cast<bNodeSocketValueVector *>(socket->default_value); + dst_rgba = static_cast<bNodeSocketValueRGBA *>(value_socket->default_value); copy_v3_v3(dst_rgba->value, src_vector->value); dst_rgba->value[3] = 1.0f; /* should never be read */ break; case SOCK_RGBA: - value_node = nodeAddStaticNode(NULL, localtree, SH_NODE_RGB); + value_node = nodeAddStaticNode(nullptr, localtree, SH_NODE_RGB); value_socket = ntree_shader_node_find_output(value_node, "Color"); - BLI_assert(value_socket != NULL); - src_rgba = socket->default_value; - dst_rgba = value_socket->default_value; + BLI_assert(value_socket != nullptr); + src_rgba = static_cast<bNodeSocketValueRGBA *>(socket->default_value); + dst_rgba = static_cast<bNodeSocketValueRGBA *>(value_socket->default_value); copy_v4_v4(dst_rgba->value, src_rgba->value); break; case SOCK_INT: /* HACK: Support as float. */ - value_node = nodeAddStaticNode(NULL, localtree, SH_NODE_VALUE); + value_node = nodeAddStaticNode(nullptr, localtree, SH_NODE_VALUE); value_socket = ntree_shader_node_find_output(value_node, "Value"); - BLI_assert(value_socket != NULL); - src_int = socket->default_value; - dst_float = value_socket->default_value; + BLI_assert(value_socket != nullptr); + src_int = static_cast<bNodeSocketValueInt *>(socket->default_value); + dst_float = static_cast<bNodeSocketValueFloat *>(value_socket->default_value); dst_float->value = (float)(src_int->value); break; case SOCK_FLOAT: - value_node = nodeAddStaticNode(NULL, localtree, SH_NODE_VALUE); + value_node = nodeAddStaticNode(nullptr, localtree, SH_NODE_VALUE); value_socket = ntree_shader_node_find_output(value_node, "Value"); - BLI_assert(value_socket != NULL); - src_float = socket->default_value; - dst_float = value_socket->default_value; + BLI_assert(value_socket != nullptr); + src_float = static_cast<bNodeSocketValueFloat *>(socket->default_value); + dst_float = static_cast<bNodeSocketValueFloat *>(value_socket->default_value); dst_float->value = src_float->value; break; default: @@ -323,11 +322,10 @@ static bool ntree_shader_expand_socket_default(bNodeTree *localtree, static void ntree_shader_unlink_hidden_value_sockets(bNode *group_node, bNodeSocket *isock) { bNodeTree *group_ntree = (bNodeTree *)group_node->id; - bNode *node; bool removed_link = false; - for (node = group_ntree->nodes.first; node; node = node->next) { - const bool is_group = ELEM(node->type, NODE_GROUP, NODE_CUSTOM_GROUP) && (node->id != NULL); + LISTBASE_FOREACH (bNode *, node, &group_ntree->nodes) { + const bool is_group = ELEM(node->type, NODE_GROUP, NODE_CUSTOM_GROUP) && (node->id != nullptr); LISTBASE_FOREACH (bNodeSocket *, sock, &node->inputs) { if (!is_group && (sock->flag & SOCK_HIDE_VALUE) == 0) { @@ -350,7 +348,7 @@ static void ntree_shader_unlink_hidden_value_sockets(bNode *group_node, bNodeSoc } if (removed_link) { - BKE_ntree_update_main_tree(G.main, group_ntree, NULL); + BKE_ntree_update_main_tree(G.main, group_ntree, nullptr); } } @@ -361,7 +359,7 @@ static void ntree_shader_groups_expand_inputs(bNodeTree *localtree) bool link_added = false; LISTBASE_FOREACH (bNode *, node, &localtree->nodes) { - const bool is_group = ELEM(node->type, NODE_GROUP, NODE_CUSTOM_GROUP) && (node->id != NULL); + const bool is_group = ELEM(node->type, NODE_GROUP, NODE_CUSTOM_GROUP) && (node->id != nullptr); const bool is_group_output = node->type == NODE_GROUP_OUTPUT && (node->flag & NODE_DO_OUTPUT); if (is_group) { @@ -371,25 +369,32 @@ static void ntree_shader_groups_expand_inputs(bNodeTree *localtree) if (is_group || is_group_output) { LISTBASE_FOREACH (bNodeSocket *, socket, &node->inputs) { - if (socket->link != NULL && !(socket->link->flag & NODE_LINK_MUTED)) { + if (socket->link != nullptr && !(socket->link->flag & NODE_LINK_MUTED)) { bNodeLink *link = socket->link; /* Fix the case where the socket is actually converting the data. (see T71374) * We only do the case of lossy conversion to float. */ if ((socket->type == SOCK_FLOAT) && (link->fromsock->type != link->tosock->type)) { if (link->fromsock->type == SOCK_RGBA) { - bNode *tmp = nodeAddStaticNode(NULL, localtree, SH_NODE_RGBTOBW); - nodeAddLink(localtree, link->fromnode, link->fromsock, tmp, tmp->inputs.first); - nodeAddLink(localtree, tmp, tmp->outputs.first, node, socket); + bNode *tmp = nodeAddStaticNode(nullptr, localtree, SH_NODE_RGBTOBW); + nodeAddLink(localtree, + link->fromnode, + link->fromsock, + tmp, + static_cast<bNodeSocket *>(tmp->inputs.first)); + nodeAddLink( + localtree, tmp, static_cast<bNodeSocket *>(tmp->o @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list [email protected] List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs
