Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacques Lucke <jacques@blender.org>2021-09-27 18:35:26 +0300
committerJacques Lucke <jacques@blender.org>2021-09-27 18:35:45 +0300
commit0559971ab3772e3b5efb0fcad396735ea4ac22fe (patch)
treee373f64625d71d643e03f28a1383ee7c9b276d42 /source/blender/nodes
parent2189dfd6e25a7bb6b734116619d87bc2d2a535ff (diff)
Geometry Nodes: add utility to process all instances separately
This adds a new `GeometrySet::modify_geometry_sets` method that can be used to update each sub-geometry-set separately without making any instances real. Differential Revision: https://developer.blender.org/D12650
Diffstat (limited to 'source/blender/nodes')
-rw-r--r--source/blender/nodes/geometry/nodes/node_geo_curve_fill.cc16
1 files changed, 2 insertions, 14 deletions
diff --git a/source/blender/nodes/geometry/nodes/node_geo_curve_fill.cc b/source/blender/nodes/geometry/nodes/node_geo_curve_fill.cc
index fcafdf93197..c30741cf786 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_curve_fill.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_curve_fill.cc
@@ -154,20 +154,8 @@ static void geo_node_curve_fill_exec(GeoNodeExecParams params)
const NodeGeometryCurveFill &storage = *(const NodeGeometryCurveFill *)params.node().storage;
const GeometryNodeCurveFillMode mode = (GeometryNodeCurveFillMode)storage.mode;
- if (geometry_set.has_instances()) {
- InstancesComponent &instances = geometry_set.get_component_for_write<InstancesComponent>();
- instances.ensure_geometry_instances();
-
- threading::parallel_for(IndexRange(instances.references_amount()), 16, [&](IndexRange range) {
- for (int i : range) {
- GeometrySet &geometry_set = instances.geometry_set_from_reference(i);
- geometry_set = bke::geometry_set_realize_instances(geometry_set);
- curve_fill_calculate(geometry_set, mode);
- }
- });
- }
-
- curve_fill_calculate(geometry_set, mode);
+ geometry_set.modify_geometry_sets(
+ [&](GeometrySet &geometry_set) { curve_fill_calculate(geometry_set, mode); });
params.set_output("Mesh", std::move(geometry_set));
}