20 .description(
"Edges used to split faces into separate groups");
23 .
description(
"Index of the face group inside each boundary edge region");
29 for (
const int i :
indices.index_range().drop_back(1)) {
40 :
bke::MeshFieldInput(
CPPType::get<
int>(),
"Edges to Face Groups"),
41 non_boundary_edge_field_(std::move(
selection))
51 evaluator.
add(non_boundary_edge_field_);
60 faces, mesh.corner_edges(), mesh.edges_num, edge_to_face_offsets, edge_to_face_indices);
69 return mesh.attributes().adapt_domain(
75 return non_boundary_edge_field_.hash();
81 return other_field->non_boundary_edge_field_ == non_boundary_edge_field_;
88 return AttrDomain::Face;
98 Field<int>(std::make_shared<FaceSetFromBoundariesInput>(std::move(non_boundary_edges))));
#define GEO_NODE_EDGES_TO_FACE_GROUPS
#define NOD_REGISTER_NODE(REGISTER_FUNC)
int calc_reduced_ids(MutableSpan< int > result) const
static VArray ForContainer(ContainerT container)
int add(GField field, GVArray *varray_ptr)
IndexMask get_evaluated_as_mask(int field_index)
void foreach_index(Fn &&fn) const
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
GroupedSpan< int > build_edge_to_face_map(OffsetIndices< int > faces, Span< int > corner_edges, int edges_num, Array< int > &r_offsets, Array< int > &r_indices)
void node_register_type(bNodeType *ntype)
Field< bool > invert_boolean_field(const Field< bool > &field)
static void join_indices(AtomicDisjointSet &set, const Span< int > indices)
static void node_register()
static void geo_node_exec(GeoNodeExecParams params)
static void node_declare(NodeDeclarationBuilder &b)
void geo_node_type_base(blender::bke::bNodeType *ntype, int type, const char *name, short nclass)
GPU_SHADER_INTERFACE_INFO(overlay_edit_curve_handle_iface, "vert").flat(Type pos vertex_in(1, Type::UINT, "data") .vertex_out(overlay_edit_curve_handle_iface) .geometry_layout(PrimitiveIn Frequency::GEOMETRY storage_buf(1, Qualifier::READ, "uint", "data[]", Frequency::GEOMETRY) .push_constant(Type Frequency::GEOMETRY selection[]
unsigned __int64 uint64_t
NodeGeometryExecFunction geometry_node_execute
NodeDeclareFunction declare