37 operator bool()
const;
60 return (
a.domain ==
b.domain) && (
a.data_type ==
b.data_type);
183 if (this->tag_modified_fn) {
211 :
span(
std::move(other.varray), copy_values_to_span),
219 return span.varray();
230 if (this->tag_modified_fn) {
269 if (this->tag_modified_fn) {
291 :
span(
std::move(other.varray), copy_values_to_span),
305 if (this->tag_modified_fn) {
428 const std::optional<eAttrDomain> domain,
429 const std::optional<eCustomDataType> data_type)
const;
437 return this->
lookup(attribute_id, domain, std::nullopt);
446 return this->
lookup(attribute_id, std::nullopt, data_type);
455 const std::optional<eAttrDomain> domain = std::nullopt)
const
457 const CPPType &cpp_type = CPPType::get<T>();
459 return this->
lookup(attribute_id, domain, data_type).
typed<
T>();
471 const void *default_value =
nullptr)
const;
479 const T &default_value)
const
481 if (
VArray<T> varray = this->lookup<T>(attribute_id, domain)) {
568 return fn_->
add(
owner_, attribute_id, domain, data_type, initializer);
602 const CPPType &cpp_type = CPPType::get<T>();
617 attribute_id, domain, initializer);
726 const void *default_value)
const;
780 : anonymous_id_(anonymous_id)
786 return a.anonymous_id_ ==
b.anonymous_id_ &&
a.name_ ==
b.name_;
789 inline AttributeIDRef::operator
bool()
const
791 return this->is_named() || this->is_anonymous();
806 return anonymous_id_ !=
nullptr;
818 return *anonymous_id_;
bool BKE_anonymous_attribute_id_has_strong_references(const AnonymousAttributeID *anonymous_id)
Generic geometry attributes built on CustomData.
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between and object coordinate space Combine Create a color from its and value channels Color Retrieve a color attribute
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
const GVMutableArray & varray() const
VArray< T > typed() const
VMutableArray< T > typed() const
constexpr bool is_empty() const
static VArray ForSingle(T value, const int64_t size)
bool is_builtin(const AttributeIDRef &attribute_id) const
GVArray lookup(const AttributeIDRef &attribute_id, const eAttrDomain domain) const
GVArray adapt_domain(const GVArray &varray, const eAttrDomain from_domain, const eAttrDomain to_domain) const
VArray< T > lookup_or_default(const AttributeIDRef &attribute_id, const eAttrDomain domain, const T &default_value) const
int domain_size(const eAttrDomain domain) const
VArray< T > adapt_domain(const VArray< T > &varray, const eAttrDomain from_domain, const eAttrDomain to_domain) const
VArray< T > lookup(const AttributeIDRef &attribute_id, const std::optional< eAttrDomain > domain=std::nullopt) const
Set< AttributeIDRef > all_ids() const
bool contains(const AttributeIDRef &attribute_id) const
std::optional< AttributeMetaData > lookup_meta_data(const AttributeIDRef &attribute_id) const
AttributeAccessor(const void *owner, const AttributeAccessorFunctions &fn)
GVArray lookup(const AttributeIDRef &attribute_id, const eCustomDataType data_type) const
GAttributeReader lookup(const AttributeIDRef &attribute_id) const
GVArray lookup_or_default(const AttributeIDRef &attribute_id, const eAttrDomain domain, const eCustomDataType data_type, const void *default_value=nullptr) const
bool domain_supported(const eAttrDomain domain) const
bool for_all(const AttributeForeachCallback fn) const
const AttributeAccessorFunctions * fn_
bool should_be_kept() const
bool is_anonymous() const
friend std::ostream & operator<<(std::ostream &stream, const AttributeIDRef &attribute_id)
friend bool operator==(const AttributeIDRef &a, const AttributeIDRef &b)
const AnonymousAttributeID & anonymous_id() const
std::optional< blender::GSpan > get_for_read(const AttributeIDRef &attribute_id) const
bool create(const AttributeIDRef &attribute_id, eCustomDataType data_type)
blender::VArray< T > get_for_read(const AttributeIDRef &attribute_id, const T &default_value) const
CustomDataAttributes & operator=(const CustomDataAttributes &other)
std::optional< blender::GMutableSpan > get_for_write(const AttributeIDRef &attribute_id)
void reallocate(int size)
bool create_by_move(const AttributeIDRef &attribute_id, eCustomDataType data_type, void *buffer)
void reorder(Span< AttributeIDRef > new_order)
bool foreach_attribute(const AttributeForeachCallback callback, eAttrDomain domain) const
bool remove(const AttributeIDRef &attribute_id)
bool add(const AttributeIDRef &attribute_id, const eAttrDomain domain, const eCustomDataType data_type, const AttributeInit &initializer)
GAttributeWriter lookup_for_write(const AttributeIDRef &attribute_id)
AttributeWriter< T > lookup_or_add_for_write(const AttributeIDRef &attribute_id, const eAttrDomain domain, const AttributeInit &initializer=AttributeInitDefault())
GSpanAttributeWriter lookup_or_add_for_write_only_span(const AttributeIDRef &attribute_id, const eAttrDomain domain, const eCustomDataType data_type)
SpanAttributeWriter< T > lookup_or_add_for_write_only_span(const AttributeIDRef &attribute_id, const eAttrDomain domain)
bool remove(const AttributeIDRef &attribute_id)
GAttributeWriter lookup_or_add_for_write(const AttributeIDRef &attribute_id, const eAttrDomain domain, const eCustomDataType data_type, const AttributeInit &initializer=AttributeInitDefault())
AttributeWriter< T > lookup_for_write(const AttributeIDRef &attribute_id)
GSpanAttributeWriter lookup_or_add_for_write_span(const AttributeIDRef &attribute_id, const eAttrDomain domain, const eCustomDataType data_type, const AttributeInit &initializer=AttributeInitDefault())
MutableAttributeAccessor(void *owner, const AttributeAccessorFunctions &fn)
SpanAttributeWriter< T > lookup_or_add_for_write_span(const AttributeIDRef &attribute_id, const eAttrDomain domain, const AttributeInit &initializer=AttributeInitDefault())
DEGForeachIDComponentCallback callback
SyclQueue void void size_t num_bytes void
ccl_global float * buffer
Vector< AttributeTransferData > retrieve_attributes_for_transfer(const bke::AttributeAccessor src_attributes, bke::MutableAttributeAccessor dst_attributes, eAttrDomainMask domain_mask, const Set< std::string > &skip={})
eAttrDomain attribute_domain_highest_priority(Span< eAttrDomain > domains)
bool allow_procedural_attribute_access(StringRef attribute_name)
const char * no_procedural_access_message
AttributeAccessor pointcloud_attributes(const PointCloud &pointcloud)
eCustomDataType attribute_data_type_highest_complexity(Span< eCustomDataType > data_types)
MutableAttributeAccessor pointcloud_attributes_for_write(PointCloud &pointcloud)
AttributeAccessor mesh_attributes(const Mesh &mesh)
bool operator==(const AttributeIDRef &a, const AttributeIDRef &b)
eCustomDataType cpp_type_to_custom_data_type(const blender::CPPType &type)
MutableAttributeAccessor mesh_attributes_for_write(Mesh &mesh)
uint64_t get_default_hash_2(const T1 &v1, const T2 &v2)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
unsigned __int64 uint64_t
bool(* contains)(const void *owner, const AttributeIDRef &attribute_id)
bool(* is_builtin)(const void *owner, const AttributeIDRef &attribute_id)
std::optional< AttributeMetaData >(* lookup_meta_data)(const void *owner, const AttributeIDRef &attribute_id)
bool(* remove)(void *owner, const AttributeIDRef &attribute_id)
bool(* add)(void *owner, const AttributeIDRef &attribute_id, eAttrDomain domain, eCustomDataType data_type, const AttributeInit &initializer)
bool(* domain_supported)(const void *owner, eAttrDomain domain)
GVArray(* adapt_domain)(const void *owner, const GVArray &varray, eAttrDomain from_domain, eAttrDomain to_domain)
GAttributeWriter(* lookup_for_write)(void *owner, const AttributeIDRef &attribute_id)
int(* domain_size)(const void *owner, eAttrDomain domain)
bool(* for_all)(const void *owner, FunctionRef< bool(const AttributeIDRef &, const AttributeMetaData &)> fn)
GAttributeReader(* lookup)(const void *owner, const AttributeIDRef &attribute_id)
AttributeInitMove(void *data)
AttributeInitVArray(blender::GVArray varray)
AttributeInit(const Type type)
eCustomDataType data_type
bke::GSpanAttributeWriter dst
AttributeMetaData meta_data
std::function< void()> tag_modified_fn
VMutableArray< T > varray
AttributeReader< T > typed() const
AttributeWriter< T > typed() const
std::function< void()> tag_modified_fn
GSpanAttributeWriter(GAttributeWriter &&other, const bool copy_values_to_span)
GSpanAttributeWriter()=default
std::function< void()> tag_modified_fn
SpanAttributeWriter(AttributeWriter< T > &&other, const bool copy_values_to_span)
SpanAttributeWriter()=default
MutableVArraySpan< T > span
std::function< void()> tag_modified_fn