[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