47 for (
const int i :
data.index_range()) {
49 out_data[offset] =
data[i];
75 using T = decltype(dummy);
76 Span<T> span = attribute->get_span<
T>();
138 const std::string mask_attribute_name =
params.extract_input<std::string>(
"Mask");
@ GEO_COMPONENT_TYPE_MESH
@ GEO_COMPONENT_TYPE_POINT_CLOUD
struct Mesh * BKE_mesh_new_nomain(int verts_len, int edges_len, int tessface_len, int loops_len, int polys_len)
#define GEO_NODE_POINT_SEPARATE
void node_type_socket_templates(struct bNodeType *ntype, struct bNodeSocketTemplate *inputs, struct bNodeSocketTemplate *outputs)
#define NODE_CLASS_GEOMETRY
void nodeRegisterType(struct bNodeType *ntype)
General operations for point-clouds.
struct PointCloud * BKE_pointcloud_new_nomain(const int totpoint)
static uint8 component(Color32 c, uint i)
virtual int attribute_domain_size(const AttributeDomain domain) const
blender::Set< std::string > attribute_names() const
blender::bke::ReadAttributePtr attribute_try_get_for_read(const blender::StringRef attribute_name) const
OutputAttributePtr attribute_try_get_for_output(const blender::StringRef attribute_name, const AttributeDomain domain, const CustomDataType data_type, const void *default_value=nullptr)
blender::bke::ReadAttributePtr attribute_get_for_read(const blender::StringRef attribute_name, const AttributeDomain domain, const CustomDataType data_type, const void *default_value) const
bool attribute_domain_supported(const AttributeDomain domain) const
void apply_span_and_save()
constexpr int64_t count(const T &value) const
fn::GMutableSpan get_span_for_write_only()
void convert_to_static_type(const CustomDataType data_type, const Func &func)
GeometrySet geometry_set_realize_instances(const GeometrySet &geometry_set)
TypedReadAttribute< bool > BooleanReadAttribute
std::unique_ptr< ReadAttribute > ReadAttributePtr
static void create_component_points(GeometryComponent &component, const int total)
static void geo_node_point_separate_exec(GeoNodeExecParams params)
static GeometrySet separate_geometry_set(const GeometrySet &set_in, const StringRef mask_name, const bool invert)
static void separate_points_from_component(const GeometryComponent &in_component, GeometryComponent &out_component, const StringRef mask_name, const bool invert)
static void copy_data_based_on_mask(Span< T > data, Span< bool > masks, const bool invert, MutableSpan< T > out_data)
static void copy_attributes_based_on_mask(const GeometryComponent &in_component, GeometryComponent &result_component, Span< bool > masks, const bool invert)
static bNodeSocketTemplate geo_node_point_instance_out[]
void register_node_type_geo_point_separate()
static bNodeSocketTemplate geo_node_point_instance_in[]
void geo_node_type_base(bNodeType *ntype, int type, const char *name, short nclass, short flag)
GeometryComponent & get_component_for_write(GeometryComponentType component_type)
blender::Vector< const GeometryComponent * > get_components_for_read() const
Compact definition of a node socket.
NodeGeometryExecFunction geometry_node_execute
CCL_NAMESPACE_BEGIN ccl_device float invert(float color, float factor)