[Bf-blender-cvs] [c596e6b277d] temp-geometry-nodes-expandable-geometry-socket-prototype: workaround for attribute inputs: use string sockets

Jacques Lucke noreply at git.blender.org
Fri Aug 6 13:29:05 CEST 2021


Commit: c596e6b277da484c0ffdc3eddf157c4ce9ef6b20
Author: Jacques Lucke
Date:   Fri Aug 6 11:36:28 2021 +0200
Branches: temp-geometry-nodes-expandable-geometry-socket-prototype
https://developer.blender.org/rBc596e6b277da484c0ffdc3eddf157c4ce9ef6b20

workaround for attribute inputs: use string sockets

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

M	source/blender/editors/space_node/node_edit.cc
M	source/blender/nodes/NOD_geometry_exec.hh
M	source/blender/nodes/geometry/nodes/node_geo_geometry_expander.cc
M	source/blender/nodes/geometry/nodes/node_geo_point_distribute.cc

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

diff --git a/source/blender/editors/space_node/node_edit.cc b/source/blender/editors/space_node/node_edit.cc
index f35318f2ad1..7572dbcace1 100644
--- a/source/blender/editors/space_node/node_edit.cc
+++ b/source/blender/editors/space_node/node_edit.cc
@@ -2996,12 +2996,12 @@ static void foreach_available_attribute(
     FunctionRef<void(const GeometryExpanderOutput &attribute)> callback)
 {
   LISTBASE_FOREACH (bNodeSocket *, group_input, &ntree->inputs) {
-    if (ELEM(group_input->type, SOCK_INT, SOCK_FLOAT, SOCK_VECTOR, SOCK_RGBA, SOCK_BOOLEAN)) {
+    if (group_input->type == SOCK_STRING) {
       GeometryExpanderOutput attribute;
       attribute.type = GEOMETRY_EXPANDER_OUTPUT_TYPE_INPUT;
       attribute.array_source = GEOMETRY_EXPANDER_ARRAY_SOURCE_MESH_VERTICES;
-      attribute.socket_type = (eNodeSocketDatatype)group_input->type;
       STRNCPY(attribute.input_identifier, group_input->identifier);
+      attribute.socket_type = SOCK_FLOAT;
       callback(attribute);
     }
   }
diff --git a/source/blender/nodes/NOD_geometry_exec.hh b/source/blender/nodes/NOD_geometry_exec.hh
index 6748d538e6a..156595a1583 100644
--- a/source/blender/nodes/NOD_geometry_exec.hh
+++ b/source/blender/nodes/NOD_geometry_exec.hh
@@ -340,6 +340,11 @@ class GeoNodeExecParams {
                                                     const GeometryComponent &component,
                                                     const AttributeDomain default_domain) const;
 
+  std::string get_group_input_attribute_name(const StringRef UNUSED(input_identifier)) const
+  {
+    return "Group";
+  }
+
  private:
   /* Utilities for detecting common errors at when using this class. */
   void check_input_access(StringRef identifier, const CPPType *requested_type = nullptr) const;
diff --git a/source/blender/nodes/geometry/nodes/node_geo_geometry_expander.cc b/source/blender/nodes/geometry/nodes/node_geo_geometry_expander.cc
index b2d175ea0ae..b945fb37b29 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_geometry_expander.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_geometry_expander.cc
@@ -160,8 +160,8 @@ static void geo_node_geometry_expander_exec(GeoNodeExecParams params)
           break;
         }
         case GEOMETRY_EXPANDER_OUTPUT_TYPE_INPUT: {
-          const std::string attribute_name = get_input_attribute_name(
-              ntree.id.name, expander_output->input_identifier);
+          const std::string attribute_name = params.get_group_input_attribute_name(
+              expander_output->input_identifier);
           GVArrayPtr attribute = component->attribute_try_get_for_read(
               attribute_name, domain, data_type);
           if (attribute) {
diff --git a/source/blender/nodes/geometry/nodes/node_geo_point_distribute.cc b/source/blender/nodes/geometry/nodes/node_geo_point_distribute.cc
index 4f76dd11f7a..d63814092d9 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_point_distribute.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_point_distribute.cc
@@ -351,7 +351,6 @@ struct SpecialAttributeOutputs {
 
 BLI_NOINLINE static void compute_special_attributes(Span<GeometryInstanceGroup> sets,
                                                     Span<int> instance_start_offsets,
-                                                    GeometryComponent &component,
                                                     Span<Vector<float3>> bary_coords_array,
                                                     Span<Vector<int>> looptri_indices_array,
                                                     SpecialAttributeOutputs &r_special_attributes)
@@ -365,8 +364,6 @@ BLI_NOINLINE static void compute_special_attributes(Span<GeometryInstanceGroup>
                                   BKE_mesh_runtime_looptri_len(&mesh)};
 
     for (const float4x4 &transform : set_group.transforms) {
-      const int offset = instance_start_offsets[i_instance];
-
       Span<float3> bary_coords = bary_coords_array[i_instance];
       Span<int> looptri_indices = looptri_indices_array[i_instance];
 
@@ -416,7 +413,6 @@ BLI_NOINLINE static void add_remaining_point_attributes(
                                   looptri_indices_array);
   compute_special_attributes(set_groups,
                              instance_start_offsets,
-                             component,
                              bary_coords_array,
                              looptri_indices_array,
                              r_special_attributes);



More information about the Bf-blender-cvs mailing list