[Bf-blender-cvs] [25018dc061a] master: Cleanup: Nodes: Convert generic shader node files to c++

Aaron Carlisle noreply at git.blender.org
Tue Jan 4 17:42:47 CET 2022


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. @@



More information about the Bf-blender-cvs mailing list