[Bf-blender-cvs] [7d3f3c6fd76] temp-geometry-nodes-evaluator-refactor: fixes

Jacques Lucke noreply at git.blender.org
Wed Aug 31 16:08:08 CEST 2022


Commit: 7d3f3c6fd762ee14b6ac526b657cfff0d3ed0cff
Author: Jacques Lucke
Date:   Wed Aug 31 13:02:54 2022 +0200
Branches: temp-geometry-nodes-evaluator-refactor
https://developer.blender.org/rB7d3f3c6fd762ee14b6ac526b657cfff0d3ed0cff

fixes

===================================================================

M	source/blender/modifiers/intern/MOD_nodes.cc
M	source/blender/nodes/NOD_geometry_exec.hh
M	source/blender/nodes/NOD_geometry_nodes_to_lazy_function_graph.hh
M	source/blender/nodes/NOD_multi_function.hh
M	source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc
M	source/blender/nodes/intern/node_geometry_exec.cc
M	source/blender/nodes/intern/node_multi_function.cc

===================================================================

diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc
index ef5808c2477..909b2c7b0f8 100644
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@ -767,7 +767,7 @@ static void initialize_group_input(NodesModifierData &nmd,
                                    const bNodeSocket &socket,
                                    void *r_value)
 {
-  const bNodeSocketType &socket_type = *socket.typeinfo();
+  const bNodeSocketType &socket_type = *socket.typeinfo;
   const eNodeSocketDatatype socket_data_type = static_cast<eNodeSocketDatatype>(socket.type);
   if (nmd.settings.properties == nullptr) {
     socket_type.get_geometry_nodes_cpp_value(socket, r_value);
@@ -776,11 +776,11 @@ static void initialize_group_input(NodesModifierData &nmd,
   const IDProperty *property = IDP_GetPropertyFromGroup(nmd.settings.properties,
                                                         socket.identifier);
   if (property == nullptr) {
-    socket_type.get_geometry_nodes_cpp_value(bsocket, r_value);
+    socket_type.get_geometry_nodes_cpp_value(socket, r_value);
     return;
   }
-  if (!id_property_type_matches_socket(bsocket, *property)) {
-    socket_type.get_geometry_nodes_cpp_value(bsocket, r_value);
+  if (!id_property_type_matches_socket(socket, *property)) {
+    socket_type.get_geometry_nodes_cpp_value(socket, r_value);
     return;
   }
 
@@ -1144,7 +1144,7 @@ static GeometrySet compute_geometry(const bNodeTree &tree_ref,
     const CPPType *type = interface_socket->typeinfo->geometry_nodes_cpp_type;
     BLI_assert(type != nullptr); /* Todo */
     void *value = allocator.allocate(type->size(), type->alignment());
-    initialize_group_input(*nmd, *interface_socket, input_index, value);
+    initialize_group_input(*nmd, *interface_socket, value);
     param_inputs[input_index] = {type, value};
     inputs_to_destruct.append({type, value});
   }
@@ -1288,7 +1288,7 @@ static void modifyGeometry(ModifierData *md,
     use_orig_index_polys = CustomData_has_layer(&mesh.pdata, CD_ORIGINDEX);
   }
 
-  geometry_set = compute_geometry(tree_ref, output_node, std::move(geometry_set), nmd, ctx);
+  geometry_set = compute_geometry(tree, output_node, std::move(geometry_set), nmd, ctx);
 
   if (geometry_set.has_mesh()) {
     /* Add #CD_ORIGINDEX layers if they don't exist already. This is required because the
diff --git a/source/blender/nodes/NOD_geometry_exec.hh b/source/blender/nodes/NOD_geometry_exec.hh
index 382a8c74cde..7f8b0a276ae 100644
--- a/source/blender/nodes/NOD_geometry_exec.hh
+++ b/source/blender/nodes/NOD_geometry_exec.hh
@@ -45,10 +45,13 @@ using geo_eval_log::NodeWarningType;
 
 class GeoNodeExecParams {
  private:
-  GeoNodeExecParamsProvider *provider_;
+  const bNode &node_;
+  lf::Params &params_;
+  const lf::Context &lf_context_;
 
  public:
-  GeoNodeExecParams(GeoNodeExecParamsProvider &provider) : provider_(&provider)
+  GeoNodeExecParams(const bNode &node, lf::Params &params, const lf::Context &lf_context)
+      : node_(node), params_(params), lf_context_(lf_context)
   {
   }
 
@@ -138,10 +141,10 @@ class GeoNodeExecParams {
         this->check_output_geometry_set(value);
       }
       const int index = this->get_output_index(identifier);
-      const bNodeSocket *socket = node_.output_by_identifier(identifier).bsocket();
+      const bNodeSocket &socket = node_.output_by_identifier(identifier);
 
       geo_eval_log::GeoTreeLogger &logger = this->get_local_tree_logger();
-      logger.log_value(*node_.bnode(), *socket, {&value});
+      logger.log_value(node_, socket, {&value});
       params_.set_output(index, std::forward<T>(value));
     }
   }
@@ -254,11 +257,11 @@ class GeoNodeExecParams {
   int get_input_index(const StringRef identifier) const
   {
     int counter = 0;
-    for (const InputSocketRef *socket : node_.inputs()) {
+    for (const bNodeSocket *socket : node_.input_sockets()) {
       if (!socket->is_available()) {
         continue;
       }
-      if (socket->identifier() == identifier) {
+      if (socket->identifier == identifier) {
         return counter;
       }
       counter++;
@@ -270,11 +273,11 @@ class GeoNodeExecParams {
   int get_output_index(const StringRef identifier) const
   {
     int counter = 0;
-    for (const OutputSocketRef *socket : node_.outputs()) {
+    for (const bNodeSocket *socket : node_.output_sockets()) {
       if (!socket->is_available()) {
         continue;
       }
-      if (socket->identifier() == identifier) {
+      if (socket->identifier == identifier) {
         return counter;
       }
       counter++;
diff --git a/source/blender/nodes/NOD_geometry_nodes_to_lazy_function_graph.hh b/source/blender/nodes/NOD_geometry_nodes_to_lazy_function_graph.hh
index ca4018df554..a3d6e3f21f7 100644
--- a/source/blender/nodes/NOD_geometry_nodes_to_lazy_function_graph.hh
+++ b/source/blender/nodes/NOD_geometry_nodes_to_lazy_function_graph.hh
@@ -6,7 +6,6 @@
 
 #include "NOD_geometry_nodes_log.hh"
 #include "NOD_multi_function.hh"
-#include "NOD_node_tree_ref.hh"
 
 #include "BLI_context_stack.hh"
 
@@ -81,7 +80,7 @@ struct GeoNodesLFUserData : public lf::UserData {
 };
 
 struct GeometryNodeLazyFunctionMapping {
-  Map<const SocketRef *, lf::Socket *> dummy_socket_map;
+  Map<const bNodeSocket *, lf::Socket *> dummy_socket_map;
   Vector<lf::OutputSocket *> group_input_sockets;
 };
 
@@ -90,7 +89,6 @@ struct GeometryNodesLazyFunctionResources {
   Vector<std::unique_ptr<LazyFunction>> functions;
   Vector<GMutablePointer> values_to_destruct;
   Vector<std::unique_ptr<NodeMultiFunctions>> node_multi_functions;
-  Vector<std::unique_ptr<NodeTreeRef>> sub_tree_refs;
 
   ~GeometryNodesLazyFunctionResources()
   {
@@ -100,7 +98,7 @@ struct GeometryNodesLazyFunctionResources {
   }
 };
 
-void geometry_nodes_to_lazy_function_graph(const NodeTreeRef &tree,
+void geometry_nodes_to_lazy_function_graph(const bNodeTree &tree,
                                            LazyFunctionGraph &graph,
                                            GeometryNodesLazyFunctionResources &resources,
                                            GeometryNodeLazyFunctionMapping &mapping);
diff --git a/source/blender/nodes/NOD_multi_function.hh b/source/blender/nodes/NOD_multi_function.hh
index a113e7a00ed..676bf03927e 100644
--- a/source/blender/nodes/NOD_multi_function.hh
+++ b/source/blender/nodes/NOD_multi_function.hh
@@ -6,8 +6,6 @@
 
 #include "DNA_node_types.h"
 
-#include "NOD_node_tree_ref.hh"
-
 namespace blender::nodes {
 
 using namespace fn::multi_function_types;
@@ -60,9 +58,9 @@ class NodeMultiFunctions {
   Map<const bNode *, Item> map_;
 
  public:
-  NodeMultiFunctions(const NodeTreeRef &tree);
+  NodeMultiFunctions(const bNodeTree &tree);
 
-  const Item &try_get(const NodeRef &node) const;
+  const Item &try_get(const bNode &node) const;
 };
 
 /* -------------------------------------------------------------------- */
@@ -107,10 +105,10 @@ inline void NodeMultiFunctionBuilder::construct_and_set_matching_fn(Args &&...ar
 /** \name #NodeMultiFunctions Inline Methods
  * \{ */
 
-inline const NodeMultiFunctions::Item &NodeMultiFunctions::try_get(const NodeRef &node) const
+inline const NodeMultiFunctions::Item &NodeMultiFunctions::try_get(const bNode &node) const
 {
   static Item empty_item;
-  const Item *item = map_.lookup_ptr(node.bnode());
+  const Item *item = map_.lookup_ptr(&node);
   if (item == nullptr) {
     return empty_item;
   }
diff --git a/source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc b/source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc
index aaeaa7eb2bd..36f4007f794 100644
--- a/source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc
+++ b/source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc
@@ -34,9 +34,9 @@ static const CPPType *get_socket_cpp_type(const bNodeSocketType &typeinfo)
   return type;
 }
 
-static const CPPType *get_socket_cpp_type(const SocketRef &socket)
+static const CPPType *get_socket_cpp_type(const bNodeSocket &socket)
 {
-  return get_socket_cpp_type(*socket.bsocket()->typeinfo);
+  return get_socket_cpp_type(*socket.typeinfo);
 }
 
 static const CPPType *get_vector_type(const CPPType &type)
@@ -50,18 +50,18 @@ static const CPPType *get_vector_type(const CPPType &type)
   return nullptr;
 }
 
-static void lazy_function_interface_from_node(const NodeRef &node,
-                                              Vector<const InputSocketRef *> &r_used_inputs,
-                                              Vector<const OutputSocketRef *> &r_used_outputs,
+static void lazy_function_interface_from_node(const bNode &node,
+                                              Vector<const bNodeSocket *> &r_used_inputs,
+                                              Vector<const bNodeSocket *> &r_used_outputs,
                                               Vector<lf::Input> &r_inputs,
                                               Vector<lf::Output> &r_outputs)
 {
   const bool is_muted = node.is_muted();
-  const bool supports_lazyness = node.bnode()->typeinfo->geometry_node_execute_supports_laziness ||
-                                 node.bnode()->type == NODE_GROUP;
+  const bool supports_lazyness = node.typeinfo->geometry_node_execute_supports_laziness ||
+                                 node.is_group();
   const lf::ValueUsage input_usage = supports_lazyness ? lf::ValueUsage::Maybe :
                                                          lf::ValueUsage::Used;
-  for (const InputSocketRef *socket : node.inputs()) {
+  for (const bNodeSocket *socket : node.input_sockets()) {
     if (!socket->is_available()) {
       continue;
     }
@@ -69,14 +69,14 @@ static void lazy_function_interface_from_node(const NodeRef &node,
     if (type == nullptr) {
       continue;
     }
-    if (socket->is_multi_input_socket() && !is_muted) {
+    if (socket->is_multi_input() && !is_muted) {
       type = get_vector_type(*type);
     }
     /* TODO: Name may not be static. */
-    r_inputs.append({socket->identifier().c_str(), *type, input_usage});
+    r_inputs.append({socket->identifier, *type, input_usage});
    

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list