19 "The index of the each vertex's island. Indices are based on the "
20 "lowest vertex index contained in each island");
34 const AttrDomain domain,
41 for (const int2 &edge : edges.slice(range)) {
42 islands.join(edge[0], edge[1]);
47 islands.calc_reduced_ids(output);
49 return mesh.attributes().adapt_domain<
int>(
66 return AttrDomain::Point;
74 category_ = Category::Generated;
78 const AttrDomain domain,
84 threading::parallel_for(edges.index_range(), 1024, [&](
const IndexRange range) {
85 for (const int2 &edge : edges.slice(range)) {
86 islands.join(edge[0], edge[1]);
90 const int islands_num = islands.count_sets();
107 return AttrDomain::Point;
113 if (
params.output_is_required(
"Island Index")) {
114 Field<int> field{std::make_shared<IslandFieldInput>()};
115 params.set_output(
"Island Index", std::move(field));
117 if (
params.output_is_required(
"Island Count")) {
118 Field<int> field{std::make_shared<IslandCountFieldInput>()};
119 params.set_output(
"Island Count", std::move(field));
#define NOD_REGISTER_NODE(REGISTER_FUNC)
static VArray ForContainer(ContainerT container)
local_group_size(16, 16) .push_constant(Type b
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
void node_register_type(bNodeType *ntype)
void parallel_for(const IndexRange range, const int64_t grain_size, const Function &function, const TaskSizeHints &size_hints=detail::TaskSizeHints_Static(1))
void geo_node_type_base(blender::bke::bNodeType *ntype, int type, const char *name, short nclass)
unsigned __int64 uint64_t
NodeGeometryExecFunction geometry_node_execute
NodeDeclareFunction declare