Cleanup: Avoid assigning constructed VArray to reference
This is clearer about what is actually happening (VArray is small enough to be a by-value type and is constructed on demand, while only the generic virtual array is stored).
This commit is contained in:
parent
95055af668
commit
a69e5c2348
|
@ -223,8 +223,8 @@ template<typename T> class AccumulateFieldInput final : public GeometryFieldInpu
|
|||
evaluator.add(input_);
|
||||
evaluator.add(group_index_);
|
||||
evaluator.evaluate();
|
||||
const VArray<T> &values = evaluator.get_evaluated<T>(0);
|
||||
const VArray<int> &group_indices = evaluator.get_evaluated<int>(1);
|
||||
const VArray<T> values = evaluator.get_evaluated<T>(0);
|
||||
const VArray<int> group_indices = evaluator.get_evaluated<int>(1);
|
||||
|
||||
Array<T> accumulations_out(domain_num);
|
||||
|
||||
|
@ -309,8 +309,8 @@ template<typename T> class TotalFieldInput final : public GeometryFieldInput {
|
|||
evaluator.add(input_);
|
||||
evaluator.add(group_index_);
|
||||
evaluator.evaluate();
|
||||
const VArray<T> &values = evaluator.get_evaluated<T>(0);
|
||||
const VArray<int> &group_indices = evaluator.get_evaluated<int>(1);
|
||||
const VArray<T> values = evaluator.get_evaluated<T>(0);
|
||||
const VArray<int> group_indices = evaluator.get_evaluated<int>(1);
|
||||
|
||||
if (group_indices.is_single()) {
|
||||
T accumulation = T();
|
||||
|
|
|
@ -203,7 +203,7 @@ static void node_geo_exec(GeoNodeExecParams params)
|
|||
data_evaluator.add(input_field);
|
||||
data_evaluator.set_selection(selection_field);
|
||||
data_evaluator.evaluate();
|
||||
const VArray<float> &component_data = data_evaluator.get_evaluated<float>(0);
|
||||
const VArray<float> component_data = data_evaluator.get_evaluated<float>(0);
|
||||
const IndexMask selection = data_evaluator.get_evaluated_selection_as_mask();
|
||||
|
||||
const int next_data_index = data.size();
|
||||
|
@ -281,7 +281,7 @@ static void node_geo_exec(GeoNodeExecParams params)
|
|||
data_evaluator.add(input_field);
|
||||
data_evaluator.set_selection(selection_field);
|
||||
data_evaluator.evaluate();
|
||||
const VArray<float3> &component_data = data_evaluator.get_evaluated<float3>(0);
|
||||
const VArray<float3> component_data = data_evaluator.get_evaluated<float3>(0);
|
||||
const IndexMask selection = data_evaluator.get_evaluated_selection_as_mask();
|
||||
|
||||
const int next_data_index = data.size();
|
||||
|
|
|
@ -64,8 +64,8 @@ class EndpointFieldInput final : public GeometryFieldInput {
|
|||
evaluator.add(start_size_);
|
||||
evaluator.add(end_size_);
|
||||
evaluator.evaluate();
|
||||
const VArray<int> &start_size = evaluator.get_evaluated<int>(0);
|
||||
const VArray<int> &end_size = evaluator.get_evaluated<int>(1);
|
||||
const VArray<int> start_size = evaluator.get_evaluated<int>(0);
|
||||
const VArray<int> end_size = evaluator.get_evaluated<int>(1);
|
||||
|
||||
Array<bool> selection(curves.points_num(), false);
|
||||
MutableSpan<bool> selection_span = selection.as_mutable_span();
|
||||
|
|
|
@ -512,8 +512,8 @@ static void geometry_set_curve_trim(GeometrySet &geometry_set,
|
|||
evaluator.add(start_field);
|
||||
evaluator.add(end_field);
|
||||
evaluator.evaluate();
|
||||
const blender::VArray<float> &starts = evaluator.get_evaluated<float>(0);
|
||||
const blender::VArray<float> &ends = evaluator.get_evaluated<float>(1);
|
||||
const VArray<float> starts = evaluator.get_evaluated<float>(0);
|
||||
const VArray<float> ends = evaluator.get_evaluated<float>(1);
|
||||
|
||||
std::unique_ptr<CurveEval> curve = curves_to_curve_eval(*geometry_set.get_curves_for_read());
|
||||
MutableSpan<SplinePtr> splines = curve->splines();
|
||||
|
|
|
@ -424,7 +424,7 @@ static void extrude_mesh_edges(MeshComponent &component,
|
|||
edge_evaluator.add(offset_field);
|
||||
edge_evaluator.evaluate();
|
||||
const IndexMask edge_selection = edge_evaluator.get_evaluated_selection_as_mask();
|
||||
const VArray<float3> &edge_offsets = edge_evaluator.get_evaluated<float3>(0);
|
||||
const VArray<float3> edge_offsets = edge_evaluator.get_evaluated<float3>(0);
|
||||
if (edge_selection.is_empty()) {
|
||||
return;
|
||||
}
|
||||
|
@ -686,7 +686,7 @@ static void extrude_mesh_face_regions(MeshComponent &component,
|
|||
poly_evaluator.add(offset_field);
|
||||
poly_evaluator.evaluate();
|
||||
const IndexMask poly_selection = poly_evaluator.get_evaluated_selection_as_mask();
|
||||
const VArray<float3> &poly_offsets = poly_evaluator.get_evaluated<float3>(0);
|
||||
const VArray<float3> poly_offsets = poly_evaluator.get_evaluated<float3>(0);
|
||||
if (poly_selection.is_empty()) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -100,7 +100,7 @@ class FieldAtIndex final : public GeometryFieldInput {
|
|||
FieldEvaluator index_evaluator{index_field_context, &mask};
|
||||
index_evaluator.add(index_field_);
|
||||
index_evaluator.evaluate();
|
||||
const VArray<int> &indices = index_evaluator.get_evaluated<int>(0);
|
||||
const VArray<int> indices = index_evaluator.get_evaluated<int>(0);
|
||||
|
||||
GVArray output_array;
|
||||
attribute_math::convert_to_static_type(*type_, [&](auto dummy) {
|
||||
|
|
|
@ -37,7 +37,7 @@ class HandlePositionFieldInput final : public GeometryFieldInput {
|
|||
fn::FieldEvaluator evaluator(field_context, &mask);
|
||||
evaluator.add(relative_);
|
||||
evaluator.evaluate();
|
||||
const VArray<bool> &relative = evaluator.get_evaluated<bool>(0);
|
||||
const VArray<bool> relative = evaluator.get_evaluated<bool>(0);
|
||||
|
||||
VArray<float3> positions = component.attribute_get_for_read<float3>(
|
||||
"position", ATTR_DOMAIN_POINT, {0, 0, 0});
|
||||
|
|
|
@ -51,7 +51,7 @@ class PlanarFieldInput final : public GeometryFieldInput {
|
|||
fn::FieldEvaluator evaluator{context, mesh->totpoly};
|
||||
evaluator.add(threshold_);
|
||||
evaluator.evaluate();
|
||||
const VArray<float> &thresholds = evaluator.get_evaluated<float>(0);
|
||||
const VArray<float> thresholds = evaluator.get_evaluated<float>(0);
|
||||
|
||||
Span<float3> poly_normals{(float3 *)BKE_mesh_poly_normals_ensure(mesh), mesh->totpoly};
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ static void convert_instances_to_points(GeometrySet &geometry_set,
|
|||
|
||||
const VArray<float3> &positions = evaluator.get_evaluated<float3>(0);
|
||||
copy_attribute_to_points(positions, selection, {(float3 *)pointcloud->co, pointcloud->totpoint});
|
||||
const VArray<float> &radii = evaluator.get_evaluated<float>(1);
|
||||
const VArray<float> radii = evaluator.get_evaluated<float>(1);
|
||||
copy_attribute_to_points(radii, selection, {pointcloud->radius, pointcloud->totpoint});
|
||||
|
||||
Map<AttributeIDRef, AttributeKind> attributes_to_propagate;
|
||||
|
|
|
@ -29,9 +29,9 @@ static void rotate_instances(GeoNodeExecParams ¶ms, InstancesComponent &inst
|
|||
evaluator.evaluate();
|
||||
|
||||
const IndexMask selection = evaluator.get_evaluated_selection_as_mask();
|
||||
const VArray<float3> &rotations = evaluator.get_evaluated<float3>(0);
|
||||
const VArray<float3> &pivots = evaluator.get_evaluated<float3>(1);
|
||||
const VArray<bool> &local_spaces = evaluator.get_evaluated<bool>(2);
|
||||
const VArray<float3> rotations = evaluator.get_evaluated<float3>(0);
|
||||
const VArray<float3> pivots = evaluator.get_evaluated<float3>(1);
|
||||
const VArray<bool> local_spaces = evaluator.get_evaluated<bool>(2);
|
||||
|
||||
MutableSpan<float4x4> instance_transforms = instances_component.instance_transforms();
|
||||
|
||||
|
|
|
@ -31,9 +31,9 @@ static void scale_instances(GeoNodeExecParams ¶ms, InstancesComponent &insta
|
|||
evaluator.evaluate();
|
||||
|
||||
const IndexMask selection = evaluator.get_evaluated_selection_as_mask();
|
||||
const VArray<float3> &scales = evaluator.get_evaluated<float3>(0);
|
||||
const VArray<float3> &pivots = evaluator.get_evaluated<float3>(1);
|
||||
const VArray<bool> &local_spaces = evaluator.get_evaluated<bool>(2);
|
||||
const VArray<float3> scales = evaluator.get_evaluated<float3>(0);
|
||||
const VArray<float3> pivots = evaluator.get_evaluated<float3>(1);
|
||||
const VArray<bool> local_spaces = evaluator.get_evaluated<bool>(2);
|
||||
|
||||
MutableSpan<float4x4> instance_transforms = instances_component.instance_transforms();
|
||||
|
||||
|
|
|
@ -86,8 +86,8 @@ static void set_position_in_component(CurveComponent &component,
|
|||
evaluator.add(offset_field);
|
||||
evaluator.evaluate();
|
||||
const IndexMask selection = evaluator.get_evaluated_selection_as_mask();
|
||||
const VArray<float3> &new_positions = evaluator.get_evaluated<float3>(0);
|
||||
const VArray<float3> &new_offsets = evaluator.get_evaluated<float3>(1);
|
||||
const VArray<float3> new_positions = evaluator.get_evaluated<float3>(0);
|
||||
const VArray<float3> new_offsets = evaluator.get_evaluated<float3>(1);
|
||||
|
||||
Curves &curves_id = *component.get_for_write();
|
||||
bke::CurvesGeometry &curves = bke::CurvesGeometry::wrap(curves_id.geometry);
|
||||
|
|
|
@ -42,7 +42,7 @@ static void set_id_in_component(GeometryComponent &component,
|
|||
evaluator.add(id_field);
|
||||
evaluator.evaluate();
|
||||
const IndexMask selection = evaluator.get_evaluated_selection_as_mask();
|
||||
const VArray<int> &result_ids = evaluator.get_evaluated<int>(0);
|
||||
const VArray<int> result_ids = evaluator.get_evaluated<int>(0);
|
||||
OutputAttribute_Typed<int> id_attribute = component.attribute_try_get_for_output_only<int>(
|
||||
"id", domain);
|
||||
result_ids.materialize(selection, id_attribute.as_span());
|
||||
|
|
|
@ -154,8 +154,8 @@ static void set_position_in_component(GeometryComponent &component,
|
|||
evaluator.evaluate();
|
||||
|
||||
const IndexMask selection = evaluator.get_evaluated_selection_as_mask();
|
||||
const VArray<float3> &positions_input = evaluator.get_evaluated<float3>(0);
|
||||
const VArray<float3> &offsets_input = evaluator.get_evaluated<float3>(1);
|
||||
const VArray<float3> positions_input = evaluator.get_evaluated<float3>(0);
|
||||
const VArray<float3> offsets_input = evaluator.get_evaluated<float3>(1);
|
||||
set_computed_position_and_offset(component, positions_input, offsets_input, domain, selection);
|
||||
}
|
||||
|
||||
|
|
|
@ -26,8 +26,8 @@ static void translate_instances(GeoNodeExecParams ¶ms, InstancesComponent &i
|
|||
evaluator.evaluate();
|
||||
|
||||
const IndexMask selection = evaluator.get_evaluated_selection_as_mask();
|
||||
const VArray<float3> &translations = evaluator.get_evaluated<float3>(0);
|
||||
const VArray<bool> &local_spaces = evaluator.get_evaluated<bool>(1);
|
||||
const VArray<float3> translations = evaluator.get_evaluated<float3>(0);
|
||||
const VArray<bool> local_spaces = evaluator.get_evaluated<bool>(1);
|
||||
|
||||
MutableSpan<float4x4> instance_transforms = instances_component.instance_transforms();
|
||||
|
||||
|
|
Loading…
Reference in New Issue