Changeset View
Changeset View
Standalone View
Standalone View
source/blender/nodes/geometry/nodes/node_geo_curve_fill.cc
| Show First 20 Lines • Show All 148 Lines • ▼ Show 20 Lines | |||||
| static void geo_node_curve_fill_exec(GeoNodeExecParams params) | static void geo_node_curve_fill_exec(GeoNodeExecParams params) | ||||
| { | { | ||||
| GeometrySet geometry_set = params.extract_input<GeometrySet>("Curve"); | GeometrySet geometry_set = params.extract_input<GeometrySet>("Curve"); | ||||
| const NodeGeometryCurveFill &storage = *(const NodeGeometryCurveFill *)params.node().storage; | const NodeGeometryCurveFill &storage = *(const NodeGeometryCurveFill *)params.node().storage; | ||||
| const GeometryNodeCurveFillMode mode = (GeometryNodeCurveFillMode)storage.mode; | const GeometryNodeCurveFillMode mode = (GeometryNodeCurveFillMode)storage.mode; | ||||
| if (geometry_set.has_instances()) { | geometry_set.modify_geometry_sets( | ||||
| InstancesComponent &instances = geometry_set.get_component_for_write<InstancesComponent>(); | [&](GeometrySet &geometry_set) { curve_fill_calculate(geometry_set, mode); }); | ||||
| 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); | |||||
| params.set_output("Mesh", std::move(geometry_set)); | params.set_output("Mesh", std::move(geometry_set)); | ||||
| } | } | ||||
| } // namespace blender::nodes | } // namespace blender::nodes | ||||
| void register_node_type_geo_curve_fill() | void register_node_type_geo_curve_fill() | ||||
| { | { | ||||
| Show All 12 Lines | |||||