35 params.set_default_remaining_outputs();
40 const int layers_num = layers.
size();
47 const IndexMask layer_selection = evaluator.get_evaluated_selection_as_mask();
49 const int instances_num = layer_selection.
size();
50 if (instances_num == 0) {
51 params.set_default_remaining_outputs();
56 std::optional<int> empty_geometry_handle;
61 const float4x4 transform = layer.local_transform();
63 if (!empty_geometry_handle.has_value()) {
64 empty_geometry_handle = instances->add_reference(bke::InstanceReference());
66 instances->add_instance(*empty_geometry_handle, transform);
72 curves_id->
totcol = grease_pencil->material_array_num;
74 curves_geometry.
name = layer.name();
75 const int handle = instances->add_reference(std::move(curves_geometry));
76 instances->add_instance(handle, transform);
94 instances_attributes.
add(
99 *src_attribute.sharing_info});
102 if (!instances_attributes.
add(
118 AttrDomain::Instance);
119 layer_selection.
foreach_index([&](
const int layer_i,
const int instance_i) {
120 opacity_attribute.
span[instance_i] = grease_pencil->layer(layer_i).opacity;
122 opacity_attribute.
finish();
126 curves_geometry.
name = std::move(grease_pencil_geometry.
name);
128 const bool layers_as_instances =
params.get_input<
bool>(
"Layers as Instances");
129 if (!layers_as_instances) {
132 options.attribute_filter = attribute_filter;
136 params.set_output(
"Curves", std::move(curves_geometry));