Blender V5.0
blender::bke Namespace Reference

Namespaces

namespace  id
namespace  animdata
namespace  attribute_math
namespace  bake
namespace  blendfile
namespace  brush
namespace  compositor
namespace  greasepencil
namespace  crazyspace
namespace  cryptomatte
namespace  curves
namespace  compare_geometry
namespace  id_hash
namespace  idprop
namespace  image
namespace  liboverride
namespace  library
namespace  mesh
namespace  mesh_surface_sample
namespace  subdiv
namespace  nla
namespace  node_tree_reference_lifetimes
namespace  node_tree_runtime
namespace  node_field_inferencing
namespace  node_structure_type_inferencing
namespace  node_interface
namespace  outliner
namespace  pbvh
namespace  object
namespace  path_templates
namespace  preferences
namespace  shrinkwrap
namespace  ccg
namespace  volume_grid
namespace  tests
namespace  attribute_accessor_functions
namespace  calc_edges
namespace  forward_compat
namespace  versioning_internal
namespace  paint

Classes

class  ProcessAllAttributeExceptAnonymous
struct  SelectedBonesResult
struct  AttributeDomainAndType
struct  AttributeInit
struct  AttributeInitConstruct
struct  AttributeInitDefaultValue
struct  AttributeInitVArray
struct  AttributeInitMoveArray
struct  AttributeInitShared
struct  AttributeReader
struct  AttributeValidator
struct  AttributeWriter
struct  SpanAttributeWriter
struct  GAttributeReader
struct  GAttributeWriter
struct  GSpanAttributeWriter
class  AttributeIter
struct  AttributeAccessorFunctions
class  AttributeAccessor
class  MutableAttributeAccessor
struct  AttributeTransferData
struct  AttributeFilter
struct  AttributeFilterFromFunc
class  Attribute
class  AttributeStorageRuntime
class  AttributeStorage
struct  BVHTreeFromMesh
struct  BVHTreeFromPointCloud
struct  CollectionRuntime
class  ComputeContextCache
class  ModifierComputeContext
class  NodeComputeContext
class  GroupNodeComputeContext
class  SimulationZoneComputeContext
class  RepeatZoneComputeContext
class  ForeachGeometryElementZoneComputeContext
class  EvaluateClosureComputeContext
class  OperatorComputeContext
class  ShaderComputeContext
class  CurvesGeometryRuntime
class  CurvesGeometry
class  CurvesEditHints
struct  CurvesSurfaceTransforms
struct  EditMeshData
struct  FileHandlerType
class  MeshFieldContext
class  CurvesFieldContext
class  PointCloudFieldContext
class  GreasePencilFieldContext
class  GreasePencilLayerFieldContext
class  InstancesFieldContext
class  GeometryFieldContext
class  GeometryFieldInput
class  MeshFieldInput
class  CurvesFieldInput
class  PointCloudFieldInput
class  InstancesFieldInput
class  AttributeFieldInput
class  AttributeExistsFieldInput
class  NamedLayerSelectionFieldInput
class  IDAttributeFieldInput
class  NormalFieldInput
class  CurveLengthFieldInput
class  EvaluateAtIndexInput
class  EvaluateOnDomainInput
struct  NodeGizmoID
struct  GizmoEditHints
class  GeometryNodesReferenceSet
class  GeometryComponent
struct  GeometrySet
class  MeshComponent
class  PointCloudComponent
class  CurveComponent
class  InstancesComponent
class  VolumeComponent
class  GeometryComponentEditData
class  GreasePencilComponent
class  GreasePencilRuntime
class  GreasePencilDrawingEditHints
class  GreasePencilEditHints
struct  ImageRuntime
class  InstanceReference
class  Instances
class  MeshTopologyState
struct  LooseGeomCache
struct  LooseEdgeCache
struct  LooseVertCache
class  NormalsCache
struct  TrianglesCache
struct  MeshGroup
struct  MeshRuntime
class  ScopedModifierTimer
struct  bNodeSocketTemplate
 Compact definition of a node socket. More...
struct  bNodeSocketType
 Defines a socket type. More...
struct  NodeInsertLinkParams
struct  bNodeType
 Defines a node type. More...
struct  bNodeTreeType
struct  NodeTreeIterStore
struct  bNodePreview
class  bNodeZoneType
struct  RuntimeNodeEnumItem
struct  RuntimeNodeEnumItems
struct  NodeIDGetter
struct  NodeLinkError
struct  NodeLinkKey
struct  LoggedZoneGraphs
class  bNodeTreeRuntime
class  bNodeSocketRuntime
struct  bNodePanelExtent
class  bNodePanelRuntime
class  bNodeRuntime
class  SocketValueVariant
class  bNodeTreeToDotOptions
class  bNodeTreeInterfaceRuntime
class  bNodeTreeZone
class  bNodeTreeZones
struct  ObjectRuntime
struct  PaintRuntime
struct  PointCloudRuntime
struct  PreviewImageRuntime
class  CompositorRuntime
class  SequencerRuntime
class  SceneRuntime
struct  ARegionRuntime
struct  ConversionFunctions
class  DataTypeConversions
struct  VolumeRuntime
struct  VolumeToMeshResolution
struct  WindowManagerRuntime
struct  WindowRuntime
struct  WorkSpaceStatusItem
struct  WorkSpaceRuntime
struct  BoneDeformLinearMixer
struct  BoneDeformDualQuaternionMixer
struct  ArmatureDeformParams
struct  ArmatureEditMeshUserdata
struct  FinishCallChecker
struct  CustomDataAccessInfo
class  BuiltinAttributeProvider
class  DynamicAttributesProvider
class  CustomDataAttributeProvider
class  BuiltinCustomDataLayerProvider
class  GeometryAttributeProviders
struct  CustomDataAndSize
struct  CustomDataAndSizeMutable
class  ArrayDataImplicitSharing
struct  AttrBuiltinInfo
struct  CurvesInfo
struct  ResultOffsets
struct  CombinationInfo
struct  EvalData
class  VArrayImpl_For_VertexWeights
struct  NonContiguousGroup
class  MeshVertexGroupsAttributeProvider
struct  MappedUserData
struct  NodeStructIDNameGetter
struct  NodeTreeRelations
struct  TreeUpdateResult
class  NodeTreeMainUpdater
struct  ZoneRelation
struct  PreviewDeferredLoadingData
class  GVArray_For_ConvertedGVArray
class  GVMutableArray_For_ConvertedGVMutableArray
class  VolumeGrid

Typedefs

using FoundFCurveCallback = blender::FunctionRef<void(FCurve *fcurve, const char *bone_name)>
using FoundFCurveCallbackConst
using SelectedBoneCallback = blender::FunctionRef<void(Bone *bone)>
using BoneNameSet = blender::Set<std::string>
using AttributeForeachCallback
using GeometryComponentPtr = ImplicitSharingPtr<GeometryComponent>
using NodeIDVectorSet = CustomIDVectorSet<bNode *, NodeIDGetter>
using AttrUpdateOnChange = void (*)(void *owner)
using Clock = std::chrono::high_resolution_clock
using TreeNodePair = std::pair<bNodeTree *, bNode *>
using ObjectModifierPair = std::pair<Object *, ModifierData *>
using NodeSocketPair = std::pair<bNode *, bNodeSocket *>

Enumerations

enum class  AttrStorageType : int8_t { Array , Single }
enum class  AttrType : int16_t {
  Bool , Int8 , Int16_2D , Int32 ,
  Int32_2D , Float , Float2 , Float3 ,
  Float4x4 , ColorByte , ColorFloat , Quaternion ,
  String
}
enum class  AttrDomain : int8_t {
  Auto = -1 , Point = 0 , Edge = 1 , Face = 2 ,
  Corner = 3 , Curve = 4 , Instance = 5 , Layer = 6
}
enum class  GeometryOwnershipType { Owned = 0 , Editable = 1 , ReadOnly = 2 }
enum class  MeshNormalDomain : int8_t { Face = 0 , Point = 1 , Corner = 2 }
enum  NodeSocketValueMenuRuntimeFlag { NODE_MENU_ITEMS_CONFLICT = (1 << 0) }
enum class  FieldSocketState : int8_t { RequiresSingle , CanBeField , IsField }

Functions

void BKE_action_find_fcurves_with_bones (bAction *action, blender::animrig::slot_handle_t slot_handle, FoundFCurveCallback callback)
void BKE_action_find_fcurves_with_bones (const bAction *action, blender::animrig::slot_handle_t slot_handle, FoundFCurveCallbackConst callback)
bool attribute_name_is_anonymous (const StringRef name)
template<typename... Args>
std::string hash_to_anonymous_attribute_name (Args &&...args)
SelectedBonesResult BKE_armature_find_selected_bones (const bArmature *armature, SelectedBoneCallback callback)
BoneNameSet BKE_armature_find_selected_bone_names (const bArmature *armature)
BoneNameSet BKE_pose_channel_find_selected_names (const Object *object)
IDasset_edit_id_from_weak_reference (Main &global_main, ID_Type id_type, const AssetWeakReference &weak_ref)
std::optional< AssetWeakReferenceasset_edit_weak_reference_from_id (const ID &id)
bool asset_edit_id_is_editable (const ID &id)
bool asset_edit_id_is_writable (const ID &id)
std::optional< std::string > asset_edit_id_save_as (Main &global_main, const ID &id, StringRefNull name, const bUserAssetLibrary &user_library, AssetWeakReference &r_weak_ref, ReportList &reports)
bool asset_edit_id_save (Main &global_main, const ID &id, ReportList &reports)
IDasset_edit_id_revert (Main &global_main, ID &id, ReportList &reports)
bool asset_edit_id_delete (Main &global_main, ID &id, ReportList &reports)
IDasset_edit_id_find_local (Main &global_main, ID &id)
IDasset_edit_id_ensure_local (Main &global_main, ID &id)
const CPPTypeattribute_type_to_cpp_type (AttrType type)
AttrType cpp_type_to_attribute_type (const CPPType &type)
const CPPTypecustom_data_type_to_cpp_type (eCustomDataType type)
eCustomDataType cpp_type_to_custom_data_type (const CPPType &type)
bool allow_procedural_attribute_access (StringRef attribute_name)
AttrType attribute_data_type_highest_complexity (Span< AttrType > data_types)
AttrDomain attribute_domain_highest_priority (Span< AttrDomain > domains)
void gather_attributes (AttributeAccessor src_attributes, AttrDomain src_domain, AttrDomain dst_domain, const AttributeFilter &attribute_filter, const IndexMask &selection, MutableAttributeAccessor dst_attributes)
void gather_attributes (AttributeAccessor src_attributes, AttrDomain src_domain, AttrDomain dst_domain, const AttributeFilter &attribute_filter, Span< int > indices, MutableAttributeAccessor dst_attributes)
void gather_attributes_group_to_group (AttributeAccessor src_attributes, AttrDomain src_domain, AttrDomain dst_domain, const AttributeFilter &attribute_filter, OffsetIndices< int > src_offsets, OffsetIndices< int > dst_offsets, const IndexMask &selection, MutableAttributeAccessor dst_attributes)
void gather_attributes_to_groups (AttributeAccessor src_attributes, AttrDomain src_domain, AttrDomain dst_domain, const AttributeFilter &attribute_filter, OffsetIndices< int > dst_offsets, const IndexMask &src_selection, MutableAttributeAccessor dst_attributes)
void copy_attributes (const AttributeAccessor src_attributes, AttrDomain src_domain, AttrDomain dst_domain, const AttributeFilter &attribute_filter, MutableAttributeAccessor dst_attributes)
void copy_attributes_group_to_group (AttributeAccessor src_attributes, AttrDomain src_domain, AttrDomain dst_domain, const AttributeFilter &attribute_filter, OffsetIndices< int > src_offsets, OffsetIndices< int > dst_offsets, const IndexMask &selection, MutableAttributeAccessor dst_attributes)
void fill_attribute_range_default (MutableAttributeAccessor dst_attributes, AttrDomain domain, const AttributeFilter &attribute_filter, IndexRange range)
void transform_custom_normal_attribute (const float4x4 &transform, MutableAttributeAccessor &attributes)
auto attribute_filter_with_skip_ref (AttributeFilter filter, const Span< StringRef > skip)
template<typename StringT>
auto attribute_filter_with_skip_ref (AttributeFilter filter, const Set< StringT > &skip)
auto attribute_filter_from_skip_ref (const Span< StringRef > skip)
template<typename StringT>
auto attribute_filter_from_skip_ref (const Set< StringT > &skip)
std::optional< AttrTypecustom_data_type_to_attr_type (eCustomDataType data_type)
std::optional< eCustomDataTypeattr_type_to_custom_data_type (AttrType attr_type)
void mesh_convert_storage_to_customdata (Mesh &mesh)
void mesh_convert_customdata_to_storage (Mesh &mesh)
void curves_convert_customdata_to_storage (CurvesGeometry &curves)
void pointcloud_convert_customdata_to_storage (PointCloud &pointcloud)
void grease_pencil_convert_customdata_to_storage (GreasePencil &grease_pencil)
void attribute_storage_blend_write_prepare (AttributeStorage &data, AttributeStorage::BlendWriteData &write_data)
BVHTreeFromMesh bvhtree_from_mesh_tris_init (const Mesh &mesh, const IndexMask &faces_mask)
BVHTreeFromMesh bvhtree_from_mesh_edges_init (const Mesh &mesh, const IndexMask &edges_mask)
BVHTreeFromMesh bvhtree_from_mesh_verts_init (const Mesh &mesh, const IndexMask &verts_mask)
Curvescurve_legacy_to_curves (const Curve &curve_legacy)
Curvescurve_legacy_to_curves (const Curve &curve_legacy, const ListBase &nurbs_list)
KnotsMode knots_mode_from_legacy (short flag)
Meshcurve_to_mesh_sweep (const CurvesGeometry &main, const CurvesGeometry &profile, const VArray< float > &scales, bool fill_caps, const bke::AttributeFilter &attribute_filter={})
Meshcurve_to_wire_mesh (const CurvesGeometry &curve, const bke::AttributeFilter &attribute_filter={})
void curves_normals_point_domain_calc (const CurvesGeometry &curves, MutableSpan< float3 > normals)
Curvescurves_new_nomain (int points_num, int curves_num)
Curvescurves_new_nomain (CurvesGeometry curves)
Curvescurves_new_nomain_single (int points_num, CurveType type)
void curves_copy_parameters (const Curves &src, Curves &dst)
VArray< floatvarray_for_deform_verts (Span< MDeformVert > dverts, int defgroup_index)
VMutableArray< floatvarray_for_mutable_deform_verts (MutableSpan< MDeformVert > dverts, int defgroup_index)
void remove_defgroup_index (MutableSpan< MDeformVert > dverts, int defgroup_index)
void gather_deform_verts (Span< MDeformVert > src, Span< int > indices, MutableSpan< MDeformVert > dst)
void gather_deform_verts (Span< MDeformVert > src, const IndexMask &indices, MutableSpan< MDeformVert > dst)
void file_handler_add (std::unique_ptr< FileHandlerType > file_handler)
FileHandlerTypefile_handler_find (StringRef idname)
void file_handler_remove (FileHandlerType *file_handler)
Span< std::unique_ptr< FileHandlerType > > file_handlers ()
blender::Vector< FileHandlerType * > file_handlers_poll_file_drop (const bContext *C, const blender::Span< std::string > paths)
void copy_with_checked_indices (const GVArray &src, const VArray< int > &indices, const IndexMask &mask, GMutableSpan dst)
bool try_capture_fields_on_geometry (MutableAttributeAccessor attributes, const fn::FieldContext &field_context, Span< StringRef > attribute_ids, AttrDomain domain, const fn::Field< bool > &selection, Span< fn::GField > fields)
bool try_capture_field_on_geometry (MutableAttributeAccessor attributes, const fn::FieldContext &field_context, const StringRef attribute_id, AttrDomain domain, const fn::Field< bool > &selection, const fn::GField &field)
bool try_capture_fields_on_geometry (GeometryComponent &component, Span< StringRef > attribute_ids, AttrDomain domain, Span< fn::GField > fields)
bool try_capture_field_on_geometry (GeometryComponent &component, const StringRef attribute_id, AttrDomain domain, const fn::GField &field)
bool try_capture_fields_on_geometry (GeometryComponent &component, Span< StringRef > attribute_ids, AttrDomain domain, const fn::Field< bool > &selection, Span< fn::GField > fields)
bool try_capture_field_on_geometry (GeometryComponent &component, const StringRef attribute_id, AttrDomain domain, const fn::Field< bool > &selection, const fn::GField &field)
std::optional< AttrDomaintry_detect_field_domain (const GeometryComponent &component, const fn::GField &field)
GeometrySet object_get_evaluated_geometry_set (const Object &object, bool apply_subdiv=true)
VArray< float3instance_position_varray (const Instances &instances)
VMutableArray< float3instance_position_varray_for_write (Instances &instances)
const AttributeAccessorFunctionsinstance_attribute_accessor_functions ()
void mesh_set_custom_normals (Mesh &mesh, MutableSpan< float3 > corner_normals)
void mesh_set_custom_normals_normalized (Mesh &mesh, MutableSpan< float3 > corner_normals)
void mesh_set_custom_normals_from_verts (Mesh &mesh, MutableSpan< float3 > vert_normals)
void mesh_set_custom_normals_from_verts_normalized (Mesh &mesh, MutableSpan< float3 > vert_normals)
void mesh_uv_select_to_single_attribute (Mesh &mesh)
void mesh_custom_normals_to_generic (Mesh &mesh)
void mesh_sculpt_mask_to_generic (Mesh &mesh)
void mesh_freestyle_marks_to_generic (Mesh &mesh)
void mesh_freestyle_marks_to_legacy (AttributeStorage::BlendWriteData &attr_write_data, CustomData &edge_data, CustomData &face_data, Vector< CustomDataLayer, 16 > &edge_layers, Vector< CustomDataLayer, 16 > &face_layers)
void mesh_remesh_reproject_attributes (const Mesh &src, Mesh &dst)
void mesh_get_mapped_verts_coords (Mesh *mesh_eval, MutableSpan< float3 > r_cos)
Mesheditbmesh_get_eval_cage (Depsgraph *depsgraph, const Scene *scene, Object *obedit, BMEditMesh *em, const CustomData_MeshMasks *dataMask)
Mesheditbmesh_get_eval_cage_from_orig (Depsgraph *depsgraph, const Scene *scene, Object *obedit, const CustomData_MeshMasks *dataMask)
bool editbmesh_modifier_is_enabled (const Scene *scene, const Object *ob, ModifierData *md, bool has_prev_mesh)
Meshmesh_get_eval_deform (Depsgraph *depsgraph, const Scene *scene, Object *ob, const CustomData_MeshMasks *dataMask)
Meshmesh_create_eval_final (Depsgraph *depsgraph, const Scene *scene, Object *ob, const CustomData_MeshMasks *dataMask)
Meshmesh_create_eval_no_deform (Depsgraph *depsgraph, const Scene *scene, Object *ob, const CustomData_MeshMasks *dataMask)
Meshmesh_create_eval_no_deform_render (Depsgraph *depsgraph, const Scene *scene, Object *ob, const CustomData_MeshMasks *dataMask)
std::string node_tree_to_dot (const bNodeTree &tree, const bNodeTreeToDotOptions &options=bNodeTreeToDotOptions())
const bNodeTreeZonesget_tree_zones (const bNodeTree &tree)
PointCloudpointcloud_new_no_attributes (int totpoint)
const AttributeAccessorFunctionspointcloud_attribute_accessor_functions ()
const DataTypeConversionsget_implicit_type_conversions ()
static void action_init_data (ID *action_id)
static void action_copy_data (Main *, std::optional< Library * >, ID *id_dst, const ID *id_src, const int flag)
static void action_free_data (ID *id)
static void action_foreach_id (ID *id, LibraryForeachIDData *data)
static void write_channelbag (BlendWriter *writer, animrig::Channelbag &channelbag)
static void write_strip_keyframe_data (BlendWriter *writer, animrig::StripKeyframeData &strip_keyframe_data)
static void write_strip_keyframe_data_array (BlendWriter *writer, Span< animrig::StripKeyframeData * > strip_keyframe_data_array)
static void write_strips (BlendWriter *writer, Span< animrig::Strip * > strips)
static void write_layers (BlendWriter *writer, Span< animrig::Layer * > layers)
static void write_slots (BlendWriter *writer, Span< animrig::Slot * > slots)
static void action_blend_write_make_legacy_channel_groups_listbase (ListBase &listbase, const Span< bActionGroup * > channel_groups)
static void action_blend_write_clear_legacy_channel_groups_listbase (ListBase &listbase)
static void action_blend_write_make_legacy_fcurves_listbase (ListBase &listbase, const Span< FCurve * > fcurves)
static void action_blend_write_clear_legacy_fcurves_listbase (ListBase &listbase)
static void action_blend_write (BlendWriter *writer, ID *id, const void *id_address)
static void read_channelbag (BlendDataReader *reader, animrig::Channelbag &channelbag)
static void read_strip_keyframe_data (BlendDataReader *reader, animrig::StripKeyframeData &strip_keyframe_data)
static void read_strip_keyframe_data_array (BlendDataReader *reader, animrig::Action &action)
static void read_layers (BlendDataReader *reader, animrig::Action &action)
static void read_slots (BlendDataReader *reader, animrig::Action &action)
static void action_blend_read_data (BlendDataReader *reader, ID *id)
static IDPropertyaction_asset_type_property (const bAction *action)
static void action_asset_metadata_ensure (void *asset_ptr, AssetMetaData *asset_data)
template<typename MixerT>
static void b_bone_deform (const bPoseChannel &pchan, const float3 &co, const float weight, MixerT &mixer)
template<typename MixerT>
static float dist_bone_deform (const bPoseChannel &pchan, const float3 &co, MixerT &mixer)
template<typename MixerT>
static float pchan_bone_deform (const bPoseChannel &pchan, const float weight, const float3 &co, MixerT &mixer)
static ArmatureDeformParams get_armature_deform_params (const Object &ob_arm, const Object &ob_target, const ListBase *defbase, MutableSpan< float3 > vert_coords, std::optional< Span< float3 > > vert_coords_prev, std::optional< MutableSpan< float3x3 > > vert_deform_mats, const int deformflag, blender::StringRefNull defgrp_name, const bool try_use_dverts)
template<typename MixerT>
static void armature_vert_task_with_mixer (const ArmatureDeformParams &params, const int i, const MDeformVert *dvert, MixerT &mixer)
static void armature_vert_task_with_dvert (const ArmatureDeformParams &deform_params, const int i, const MDeformVert *dvert, const bool use_quaternion)
static void armature_deform_coords (const Object &ob_arm, const Object &ob_target, const ListBase *defbase, const MutableSpan< float3 > vert_coords, const std::optional< MutableSpan< float3x3 > > vert_deform_mats, const int deformflag, const std::optional< Span< float3 > > vert_coords_prev, blender::StringRefNull defgrp_name, const std::optional< Span< MDeformVert > > dverts, const Mesh *me_target)
template<bool use_dvert>
static void armature_vert_task_editmesh (void *__restrict userdata, MempoolIterData *iter, const TaskParallelTLS *__restrict)
static void armature_deform_editmesh (const Object &ob_arm, const Object &ob_target, const ListBase *defbase, const MutableSpan< float3 > vert_coords, const std::optional< MutableSpan< float3x3 > > vert_deform_mats, const int deformflag, const std::optional< Span< float3 > > vert_coords_prev, blender::StringRefNull defgrp_name, const BMEditMesh &em_target, const int cd_dvert_offset)
static bool verify_armature_deform_valid (const Object &ob_arm)
static IDasset_link_id (Main &global_main, const ID_Type id_type, const char *filepath, const char *asset_name, ReportList *reports=nullptr)
static std::string asset_root_path_for_save (const bUserAssetLibrary &user_library, const ID_Type id_type)
static std::string asset_blendfile_path_for_save (const bUserAssetLibrary &user_library, const StringRef base_name, const ID_Type id_type, ReportList &reports)
static bool asset_write_in_library (Main &bmain, const ID &id_const, const StringRef name, const StringRefNull filepath, std::string &final_full_file_path, ReportList &reports)
static IDasset_reload (Main &global_main, ID &id, ReportList *reports)
static AssetWeakReference asset_weak_reference_for_user_library (const bUserAssetLibrary &user_library, const short idcode, const char *idname, const char *filepath)
static AssetWeakReference asset_weak_reference_for_essentials (const short idcode, const char *idname, const char *filepath)
static int attribute_data_type_complexity (const AttrType data_type)
static int attribute_domain_priority (const AttrDomain domain)
static void * add_generic_custom_data_layer (CustomData &custom_data, const eCustomDataType data_type, const eCDAllocType alloctype, const int domain_size, const StringRef attribute_id)
static const void * add_generic_custom_data_layer_with_existing_data (CustomData &custom_data, const eCustomDataType data_type, const StringRef attribute_id, const int domain_size, void *layer_data, const ImplicitSharingInfo *sharing_info)
static bool add_custom_data_layer_from_attribute_init (const StringRef attribute_id, CustomData &custom_data, const eCustomDataType data_type, const int domain_num, const AttributeInit &initializer, const GPointer custom_default_value_ptr)
static void attribute_legacy_convert_customdata_to_storage (const Map< AttrDomain, CustomDataAndSize > &domains, AttributeStorage &storage)
static void convert_storage_to_customdata (AttributeStorage &storage, const Map< AttrDomain, CustomDataAndSizeMutable > &custom_data_domains)
static void read_array_data (BlendDataReader &reader, const int8_t dna_attr_type, const int64_t size, void **data)
static void read_shared_array (BlendDataReader &reader, const int8_t dna_attr_type, const int64_t size, void **data, const ImplicitSharingInfo **sharing_info)
static std::optional< Attribute::DataVariantread_attr_data (BlendDataReader &reader, const int8_t dna_storage_type, const int8_t dna_attr_type, ::Attribute &dna_attr)
static std::optional< AttrDomainread_attr_domain (const int8_t dna_domain)
static void write_array_data (BlendWriter &writer, const AttrType data_type, const void *data, const int64_t size)
static void write_shared_array (BlendWriter &writer, const AttrType data_type, const void *data, const int64_t size, const ImplicitSharingInfo *sharing_info)
GAttributeReader attribute_to_reader (const Attribute &attribute, const AttrDomain domain, const int64_t domain_size)
GAttributeWriter attribute_to_writer (void *owner, const Map< StringRef, AttrUpdateOnChange > &changed_tags, const int64_t domain_size, Attribute &attribute)
Attribute::DataVariant attribute_init_to_data (const bke::AttrType data_type, const int64_t domain_size, const AttributeInit &initializer)
GVArray get_varray_attribute (const AttributeStorage &storage, AttrDomain domain, const CPPType &cpp_type, StringRef name, int64_t domain_size, const void *default_value)
std::optional< GSpanget_span_attribute (const AttributeStorage &storage, const AttrDomain domain, const CPPType &cpp_type, const StringRef name, const int64_t domain_size)
GMutableSpan get_mutable_attribute (AttributeStorage &storage, const AttrDomain domain, const CPPType &cpp_type, const StringRef name, const int64_t domain_size, const void *custom_default_value)
template<typename T>
VArray< Tget_varray_attribute (const AttributeStorage &storage, const AttrDomain domain, const StringRef name, const int64_t domain_size, const T &default_value)
template<typename T>
std::optional< Span< T > > get_span_attribute (const AttributeStorage &storage, const AttrDomain domain, const StringRef name, const int64_t domain_size)
template<typename T>
MutableSpan< Tget_mutable_attribute (AttributeStorage &storage, const AttrDomain domain, const StringRef name, const int64_t domain_size, const T &default_value=T())
static CurveType curve_type_from_legacy (const short type)
static HandleType handle_type_from_legacy (const uint8_t handle_type_legacy)
static NormalMode normal_mode_from_legacy (const short twist_mode)
static int segments_num_no_duplicate_edge (const int points_num, const bool cyclic)
static bool has_caps (const bool main_cyclic, const bool profile_cyclic, const int profile_segment_num)
static void fill_mesh_topology (const int vert_offset, const int edge_offset, const int face_offset, const int loop_offset, const int main_point_num, const int profile_point_num, const bool main_cyclic, const bool profile_cyclic, const bool fill_caps, MutableSpan< int2 > edges, MutableSpan< int > corner_verts, MutableSpan< int > corner_edges, MutableSpan< int > face_offsets)
static void mark_bezier_vector_edges_sharp (const int profile_point_num, const int main_segment_num, const Span< int > control_point_offsets, const Span< int8_t > handle_types_left, const Span< int8_t > handle_types_right, MutableSpan< bool > sharp_edges)
static float4x4 build_point_matrix (const float3 &location, const float3 &tangent, const float3 &normal)
static void fill_mesh_positions (const int main_point_num, const int profile_point_num, const Span< float3 > main_positions, const Span< float3 > profile_positions, const Span< float3 > tangents, const Span< float3 > normals, const Span< float > scales, MutableSpan< float3 > mesh_positions)
static CurvesInfo get_curves_info (const CurvesGeometry &main, const CurvesGeometry &profile)
static bool offsets_contain_single_point (const OffsetIndices< int > offsets)
static ResultOffsets calculate_result_offsets (const CurvesInfo &info, const bool fill_caps)
static AttrDomain get_attribute_domain_for_mesh (const AttributeAccessor &mesh_attributes, const StringRef attribute_id)
static bool should_add_attribute_to_mesh (const AttributeAccessor &curve_attributes, const AttributeAccessor &mesh_attributes, const StringRef id, const AttributeMetaData &meta_data, const AttributeFilter &attribute_filter)
static GSpan evaluate_attribute (const GVArray &src, const CurvesGeometry &curves, Vector< std::byte > &buffer)
template<typename Fn>
static void foreach_curve_combination (const CurvesInfo &info, const ResultOffsets &offsets, const Fn &fn)
static void build_mesh_positions (const CurvesInfo &curves_info, const ResultOffsets &offsets, const VArray< float > &scales, Vector< std::byte > &eval_buffer, Mesh &mesh)
template<typename T>
static void copy_main_point_data_to_mesh_verts (const Span< T > src, const int profile_point_num, MutableSpan< T > dst)
template<typename T>
static void copy_main_point_data_to_mesh_edges (const Span< T > src, const int profile_point_num, const int main_segment_num, const int profile_segment_num, MutableSpan< T > dst)
template<typename T>
static void copy_main_point_data_to_mesh_faces (const Span< T > src, const int main_segment_num, const int profile_segment_num, MutableSpan< T > dst)
static bool try_sharing_point_data (const CurvesGeometry &main, const StringRef id, const GAttributeReader &src, MutableAttributeAccessor mesh_attributes)
static bool try_direct_evaluate_point_data (const CurvesGeometry &main, const GAttributeReader &src, GMutableSpan dst)
static void copy_main_point_domain_attribute_to_mesh (const CurvesInfo &curves_info, const StringRef id, const ResultOffsets &offsets, const AttrDomain dst_domain, const GAttributeReader &src_attribute, Vector< std::byte > &eval_buffer, MutableAttributeAccessor mesh_attributes)
template<typename T>
static void copy_profile_point_data_to_mesh_verts (const Span< T > src, const int main_point_num, MutableSpan< T > dst)
template<typename T>
static void copy_profile_point_data_to_mesh_edges (const Span< T > src, const int main_segment_num, MutableSpan< T > dst)
template<typename T>
static void copy_profile_point_data_to_mesh_faces (const Span< T > src, const int main_segment_num, const int profile_segment_num, MutableSpan< T > dst)
static void copy_profile_point_domain_attribute_to_mesh (const CurvesInfo &curves_info, const ResultOffsets &offsets, const AttrDomain dst_domain, const GSpan src_all, GMutableSpan dst_all)
template<typename T>
static void copy_indices_to_offset_ranges (const VArray< T > &src, const Span< int > curve_indices, const OffsetIndices< int > mesh_offsets, MutableSpan< T > dst)
static void copy_curve_domain_attribute_to_mesh (const ResultOffsets &mesh_offsets, const Span< int > curve_indices, const AttrDomain dst_domain, const GVArray &src, GMutableSpan dst)
static void write_sharp_bezier_edges (const CurvesInfo &curves_info, const ResultOffsets &offsets, MutableAttributeAccessor mesh_attributes, SpanAttributeWriter< bool > &sharp_edges)
static CurvesGeometry get_curve_single_vert ()
static Vector< std::unique_ptr< FileHandlerType > > & file_handlers_vector ()
static ImplicitSharingPtrAndData save_shared_attribute (const GAttributeReader &attribute)
static void remember_deformed_curve_positions_if_necessary (const Curves *curves_id, GeometryComponentEditData &edit_component)
static void remember_deformed_grease_pencil_if_necessary (const GreasePencil *grease_pencil, GeometryComponentEditData &edit_component)
static StringRef get_random_id_attribute_name (const AttrDomain domain)
template<typename T>
void copy_with_checked_indices (const VArray< T > &src, const VArray< int > &indices, const IndexMask &mask, MutableSpan< T > dst)
static std::optional< StringRefNulltry_get_field_direct_attribute_id (const fn::GField &any_field)
static bool attribute_kind_matches (const AttributeMetaData meta_data, const AttrDomain domain, const bke::AttrType data_type)
static bool try_add_shared_field_attribute (MutableAttributeAccessor attributes, const StringRef id_to_create, const AttrDomain domain, const fn::GField &field)
static bool attribute_data_matches_varray (const GAttributeReader &attribute, const GVArray &varray)
static void initialize_new_data (MutableAttributeAccessor &attributes, const AttrDomain domain, const int domain_size, const StringRef name, const CPPType &type, const bke::AttrType data_type, void *buffer)
static void add_final_mesh_as_geometry_component (const Object &object, GeometrySet &geometry_set, const bool apply_subdiv)
static void convert_collection_to_instances (const Collection &collection, bke::Instances &instances)
bool operator== (const InstanceReference &a, const InstanceReference &b)
static Array< int > generate_unique_instance_ids (Span< int > original_ids)
static float3 get_transform_position (const float4x4 &transform)
static void set_transform_position (float4x4 &transform, const float3 position)
static void tag_component_reference_index_changed (void *owner)
static const auto & changed_tags ()
static const auto & builtin_attributes ()
static constexpr AttributeAccessorFunctions get_instances_accessor_functions ()
static bool meta_data_matches (const std::optional< bke::AttributeMetaData > meta_data, const AttrDomainMask domains, const eCustomDataMask types)
static Bounds< float3merge_bounds (const Bounds< float3 > &a, const Bounds< float3 > &b)
static Bounds< float3negative_bounds ()
static void partition_faces_recursively (const Span< float3 > face_centers, MutableSpan< int > face_indices, Vector< NonContiguousGroup > &groups, int node_index, int depth, const std::optional< Bounds< float3 > > &bounds_precalc, const Span< int > material_indices, int target_group_size)
static void build_vertex_groups_for_leaves (const int verts_num, const OffsetIndices< int > faces, const Span< int > corner_verts, Vector< NonContiguousGroup > &groups)
static Vector< NonContiguousGroupcompute_local_mesh_groups (Mesh &mesh)
static void translate_positions (MutableSpan< float3 > positions, const float3 &translation)
template<typename T>
static void adapt_mesh_domain_corner_to_point_impl (const Mesh &mesh, const VArray< T > &src, MutableSpan< T > r_dst)
template<>
void adapt_mesh_domain_corner_to_point_impl (const Mesh &mesh, const VArray< bool > &src, MutableSpan< bool > r_dst)
static GVArray adapt_mesh_domain_corner_to_point (const Mesh &mesh, const GVArray &varray)
static GVArray adapt_mesh_domain_point_to_corner (const Mesh &mesh, const GVArray &varray)
static GVArray adapt_mesh_domain_corner_to_face (const Mesh &mesh, const GVArray &varray)
template<typename T>
static void adapt_mesh_domain_corner_to_edge_impl (const Mesh &mesh, const VArray< T > &old_values, MutableSpan< T > r_values)
template<>
void adapt_mesh_domain_corner_to_edge_impl (const Mesh &mesh, const VArray< bool > &old_values, MutableSpan< bool > r_values)
static GVArray adapt_mesh_domain_corner_to_edge (const Mesh &mesh, const GVArray &varray)
static GVArray adapt_mesh_domain_face_to_point (const Mesh &mesh, const GVArray &varray)
template<typename T>
void adapt_mesh_domain_face_to_corner_impl (const Mesh &mesh, const VArray< T > &old_values, MutableSpan< T > r_values)
static GVArray adapt_mesh_domain_face_to_corner (const Mesh &mesh, const GVArray &varray)
template<typename T>
void adapt_mesh_domain_face_to_edge_impl (const Mesh &mesh, const VArray< T > &old_values, MutableSpan< T > r_values)
template<>
void adapt_mesh_domain_face_to_edge_impl (const Mesh &mesh, const VArray< bool > &old_values, MutableSpan< bool > r_values)
static GVArray adapt_mesh_domain_face_to_edge (const Mesh &mesh, const GVArray &varray)
static GVArray adapt_mesh_domain_point_to_face (const Mesh &mesh, const GVArray &varray)
static GVArray adapt_mesh_domain_point_to_edge (const Mesh &mesh, const GVArray &varray)
template<typename T>
void adapt_mesh_domain_edge_to_corner_impl (const Mesh &mesh, const VArray< T > &old_values, MutableSpan< T > r_values)
template<>
void adapt_mesh_domain_edge_to_corner_impl (const Mesh &mesh, const VArray< bool > &old_values, MutableSpan< bool > r_values)
static GVArray adapt_mesh_domain_edge_to_corner (const Mesh &mesh, const GVArray &varray)
template<typename T>
static void adapt_mesh_domain_edge_to_point_impl (const Mesh &mesh, const VArray< T > &old_values, MutableSpan< T > r_values)
template<>
void adapt_mesh_domain_edge_to_point_impl (const Mesh &mesh, const VArray< bool > &old_values, MutableSpan< bool > r_values)
static GVArray adapt_mesh_domain_edge_to_point (const Mesh &mesh, const GVArray &varray)
static GVArray adapt_mesh_domain_edge_to_face (const Mesh &mesh, const GVArray &varray)
static bool can_simple_adapt_for_single (const Mesh &mesh, const AttrDomain from_domain, const AttrDomain to_domain)
static GVArray adapt_mesh_attribute_domain (const Mesh &mesh, const GVArray &varray, const AttrDomain from_domain, const AttrDomain to_domain)
static void tag_component_positions_changed (void *owner)
static void tag_component_sharpness_changed (void *owner)
static void tag_material_index_changed (void *owner)
static std::function< void()> get_tag_modified_function (void *owner, const StringRef name)
static GeometryAttributeProviders create_attribute_providers_for_mesh ()
static AttributeAccessorFunctions get_mesh_accessor_functions ()
static void mesh_init_origspace (Mesh &mesh)
static void mesh_set_only_copy (Mesh *mesh, const CustomData_MeshMasks *mask)
static Span< float3get_orco_coords (const Object &ob, const BMEditMesh *em, eCustomDataType layer_type, Array< float3 > &storage)
static Meshcreate_orco_mesh (const Object &ob, const Mesh &mesh, const BMEditMesh *em, eCustomDataType layer)
static MutableSpan< float3orco_coord_layer_ensure (Mesh &mesh, const eCustomDataType layer)
static void add_orco_mesh (Object &ob, const BMEditMesh *em, Mesh &mesh, const Mesh *mesh_orco, const eCustomDataType layer)
static void mesh_calc_finalize (const Mesh &mesh_input, Mesh &mesh_eval)
static Meshmodifier_modify_mesh_and_geometry_set (ModifierData *md, const ModifierEvalContext &mectx, Mesh *input_mesh, GeometrySet &geometry_set)
static void set_rest_position (Mesh &mesh)
static void mesh_calc_modifiers (Depsgraph &depsgraph, const Scene &scene, Object &ob, const bool use_deform, const bool need_mapping, const CustomData_MeshMasks &dataMask, const bool use_cache, const bool allow_shared_mesh, Mesh **r_deform, Mesh **r_final, GeometrySet **r_geometry_set)
static MutableSpan< float3mesh_wrapper_vert_coords_ensure_for_write (Mesh *mesh)
static void editbmesh_calc_modifiers (Depsgraph &depsgraph, const Scene &scene, Object &ob, const CustomData_MeshMasks &dataMask, Mesh **r_cage, Mesh **r_final, GeometrySet **r_geometry_set)
static void mesh_build_extra_data (const Depsgraph &depsgraph, const Object &ob, const Mesh &mesh_eval)
static void mesh_build_data (Depsgraph &depsgraph, const Scene &scene, Object &ob, const CustomData_MeshMasks &dataMask, const bool need_mapping)
static void editbmesh_build_data (Depsgraph &depsgraph, const Scene &scene, Object &obedit, CustomData_MeshMasks &dataMask)
static void object_get_datamask (const Depsgraph &depsgraph, Object &ob, CustomData_MeshMasks &r_mask, bool *r_need_mapping)
static void make_vertexcos__mapFunc (void *user_data, int index, const float co[3], const float[3])
template<typename T>
static void flip_corner_data (const OffsetIndices< int > faces, const IndexMask &face_selection, MutableSpan< T > data)
template<typename T>
static void flip_custom_data_type (const OffsetIndices< int > faces, CustomData &corner_data, const IndexMask &face_selection, const eCustomDataType data_type)
static bNodeTreeadd_auto_smooth_node_tree (Main &bmain, Library *owner_library)
static VectorSet< const bNodeSocket * > build_socket_indices (const Span< const bNode * > nodes)
static bool is_auto_smooth_node_tree (const bNodeTree &group)
static ModifierDatacreate_auto_smooth_modifier (Object &object, const FunctionRef< bNodeTree *(Library *owner_library)> get_node_group, const float angle)
static void normalize_vecs (MutableSpan< float3 > normals)
static void calc_edge_centers (const Span< float3 > positions, const Span< int2 > edges, MutableSpan< float3 > edge_centers)
static void calc_face_centers (const Span< float3 > positions, const OffsetIndices< int > faces, const Span< int > corner_verts, MutableSpan< float3 > face_centers)
static void find_nearest_tris (const Span< float3 > positions, BVHTreeFromMesh &bvhtree, MutableSpan< int > tris)
static void find_nearest_tris_parallel (const Span< float3 > positions, BVHTreeFromMesh &bvhtree, MutableSpan< int > tris)
static void find_nearest_verts (const Span< float3 > positions, const Span< int > corner_verts, const Span< int3 > src_corner_tris, const Span< float3 > dst_positions, const Span< int > nearest_vert_tris, MutableSpan< int > nearest_verts)
static void find_nearest_faces (const Span< int > src_tri_faces, const Span< float3 > dst_positions, const OffsetIndices< int > dst_faces, const Span< int > dst_corner_verts, BVHTreeFromMesh &bvhtree, MutableSpan< int > nearest_faces)
static void find_nearest_corners (const Span< float3 > src_positions, const OffsetIndices< int > src_faces, const Span< int > src_corner_verts, const Span< int > src_tri_faces, const Span< float3 > dst_positions, const Span< int > dst_corner_verts, const Span< int > nearest_vert_tris, MutableSpan< int > nearest_corners)
static void find_nearest_edges (const Span< float3 > src_positions, const Span< int2 > src_edges, const OffsetIndices< int > src_faces, const Span< int > src_corner_edges, const Span< int > src_tri_faces, const Span< float3 > dst_positions, const Span< int2 > dst_edges, BVHTreeFromMesh &bvhtree, MutableSpan< int > nearest_edges)
static void gather_attributes (const Span< StringRef > ids, const AttributeAccessor src_attributes, const AttrDomain domain, const Span< int > index_map, MutableAttributeAccessor dst_attributes)
static void free_mesh_eval (MeshRuntime &mesh_runtime)
static void free_batch_cache (MeshRuntime &mesh_runtime)
static void free_bvh_caches (MeshRuntime &mesh_runtime)
static int reset_bits_and_count (MutableBitSpan bits, const Span< int > indices_to_reset)
static void bit_vector_with_reset_bits_or_empty (const Span< int > indices_to_reset, const int indexed_elems_num, BitVector<> &r_bits, int &r_count)
static void try_tag_verts_no_face_none (const Mesh &mesh)
template<typename T>
ArrayState< Tattribute_reader_to_array_state (const AttributeReader< T > &attr)
template<typename T>
bool attribute_reader_matches_array_state (const ArrayState< T > &array_state, const AttributeReader< T > &attr)
static double get_current_time_in_seconds ()
static void write_node_socket_default_value (BlendWriter *writer, const bNodeSocket *sock)
static void ntree_set_typeinfo (bNodeTree *ntree, bNodeTreeType *typeinfo)
static void node_socket_set_typeinfo (bNodeTree *ntree, bNodeSocket *sock, bNodeSocketType *typeinfo)
static void node_socket_copy (bNodeSocket *sock_dst, const bNodeSocket *sock_src, const int flag)
static void free_localized_node_groups (bNodeTree *ntree)
static bool socket_id_user_decrement (bNodeSocket *sock)
static void ntree_init_data (ID *id)
static void ntree_copy_data (Main *, std::optional< Library * >, ID *id_dst, const ID *id_src, const int flag)
static void ntree_free_data (ID *id)
static void library_foreach_node_socket (bNodeSocket *sock, LibraryForeachIDData *data)
static void node_foreach_id (ID *id, LibraryForeachIDData *data)
static void node_foreach_cache (ID *id, IDTypeForeachCacheFunctionCallback function_callback, void *user_data)
static void node_foreach_path (ID *id, BPathForeachPathData *bpath_data)
static void node_foreach_working_space_color (ID *id, const IDTypeForeachColorFunctionCallback &fn)
static ID ** node_owner_pointer_get (ID *id, const bool debug_relationship_assert)
static void write_node_socket (BlendWriter *writer, const bNodeSocket *sock)
static void node_blend_write_storage (BlendWriter *writer, bNodeTree *ntree, bNode *node)
static void ntree_blend_write (BlendWriter *writer, ID *id, const void *id_address)
static bool is_node_socket_supported (const bNodeSocket *sock)
static void direct_link_node_socket_default_value (BlendDataReader *reader, bNodeSocket *sock)
static void direct_link_node_socket_storage (BlendDataReader *reader, const bNode *node, bNodeSocket *sock)
static void direct_link_node_socket (BlendDataReader *reader, const bNode *node, bNodeSocket *sock)
static void remove_unsupported_sockets (ListBase *sockets, ListBase *links)
static void node_blend_read_data_storage (BlendDataReader *reader, bNodeTree *ntree, bNode *node)
static void node_update_idname_from_experimental (bNode &node)
static void ntree_blend_read_data (BlendDataReader *reader, ID *id)
static void ntree_blend_read_after_liblink (BlendLibReader *reader, ID *id)
static void node_tree_asset_pre_save (void *asset_ptr, AssetMetaData *)
static void node_tree_asset_on_mark_asset (void *asset_ptr, AssetMetaData *asset_data)
static void node_tree_asset_on_clear_asset (void *asset_ptr, AssetMetaData *asset_data)
static void node_add_sockets_from_type (bNodeTree *ntree, bNode *node, bNodeType *ntype)
static void node_init (const bContext *C, bNodeTree *ntree, bNode *node)
static void node_set_typeinfo (const bContext *C, bNodeTree *ntree, bNode *node, bNodeType *typeinfo)
static void update_typeinfo (Main *bmain, bNodeTreeType *treetype, bNodeType *nodetype, bNodeSocketType *socktype, const bool unregister)
static auto & get_node_tree_type_map ()
static auto & get_node_type_map ()
static auto & get_node_type_alias_map ()
static auto & get_socket_type_map ()
static void defer_free_tree_type (bNodeTreeType *tree_type)
static void defer_free_node_type (bNodeType *ntype)
static void defer_free_socket_type (bNodeSocketType *stype)
static void ntree_free_type (void *treetype_v)
static void node_free_type (void *nodetype_v)
static void node_free_socket_type (void *socktype_v)
static bNodeSocketmake_socket (bNodeTree *ntree, bNode *, const int in_out, ListBase *lb, const StringRefNull idname, const StringRefNull identifier, const StringRefNull name)
static void socket_id_user_increment (bNodeSocket *sock)
static void node_socket_free (bNodeSocket *sock, const bool do_id_user)
static void iter_backwards_ex (const bNodeTree *ntree, bNode *node_start, bool(*callback)(bNode *, bNode *, void *), void *userdata, const char recursion_mask)
static void * node_static_value_storage_for (bNode &node, const bNodeSocket &socket)
static void * socket_value_storage (bNodeSocket &socket)
static int node_count_links (const bNodeTree *ntree, const bNodeSocket *socket)
static void adjust_multi_input_indices_after_removed_link (bNodeTree *ntree, const bNodeSocket *sock, const int deleted_index)
static bNodeTreenode_tree_add_tree_do (Main *bmain, std::optional< Library * > owner_library, ID *owner_id, const bool is_embedded, const StringRef name, const StringRef idname)
static void node_preview_init_tree_recursive (Map< bNodeInstanceKey, bNodePreview > &previews, bNodeTree *ntree, bNodeInstanceKey parent_key, const int xsize, const int ysize)
static void collect_used_previews (Map< bNodeInstanceKey, bNodePreview > &previews, bNodeTree *ntree, bNodeInstanceKey parent_key, Set< bNodeInstanceKey > &used)
static bool ntree_contains_tree_exec (const bNodeTree &tree_to_search_in, const bNodeTree &tree_to_search_for, Set< const bNodeTree * > &already_passed)
static void update_socket_declarations (ListBase *sockets, Span< nodes::SocketDeclaration * > declarations)
static void reset_socket_declarations (ListBase *sockets)
static bNodeInstanceKey node_hash_int_str (bNodeInstanceKey hash, const char *str)
static Set< int > get_known_node_types_set ()
static bool can_read_node_type (const bNode &node)
static void node_replace_undefined_types (bNode *node)
static void node_type_base_defaults (bNodeType &ntype)
static bool node_poll_default (const bNodeType *, const bNodeTree *, const char **)
static bool node_poll_instance_default (const bNode *node, const bNodeTree *ntree, const char **r_disabled_hint)
static int16_t get_next_auto_legacy_type ()
static const CPPTypeslow_socket_type_to_geo_nodes_base_cpp_type (const eNodeSocketDatatype type)
static void unique_socket_template_identifier (bNodeSocketTemplate *list, bNodeSocketTemplate *ntemp, const char defname[], const char delim)
template<typename T>
static std::optional< eNodeSocketDatatypestatic_type_to_socket_type ()
template<typename T>
static bool static_type_is_base_socket_type (const eNodeSocketDatatype socket_type)
std::ostream & operator<< (std::ostream &stream, const SocketValueVariant &value_variant)
static int get_internal_link_type_priority (const bNodeSocketType *from, const bNodeSocketType *to)
static bool is_tree_changed (const bNodeTree &tree)
static void update_zone_depths (bNodeTreeZone &zone)
static Vector< std::unique_ptr< bNodeTreeZone > > find_zone_nodes (const bNodeTree &tree, bNodeTreeZones &owner, Map< const bNode *, bNodeTreeZone * > &r_zone_by_inout_node)
static std::optional< Vector< ZoneRelation > > get_direct_zone_relations (const Span< bNodeTreeZone * > all_zones, const BitGroupVector<> &depend_on_input_flag_array)
static bool update_zone_per_node (const Span< const bNode * > all_nodes, const Span< bNodeTreeZone * > all_zones, const BitGroupVector<> &depend_on_input_flag_array, const Map< const bNode *, bNodeTreeZone * > &zone_by_inout_node, Map< int, int > &r_zone_by_node_id, Vector< int > &r_node_outside_zones)
static void update_zone_border_links (const bNodeTree &tree, bNodeTreeZones &tree_zones)
static std::unique_ptr< bNodeTreeZonesdiscover_tree_zones (const bNodeTree &tree)
static Vector< const bNodeZoneType * > & get_zone_types_vector ()
static Vector< const bNode * > node_ids_to_vector (const bNodeTree &tree, const Vector< int > &node_ids)
std::ostream & operator<< (std::ostream &stream, const bNodeTreeZones &zones)
std::ostream & operator<< (std::ostream &stream, const bNodeTreeZone &zone)
static std::unique_ptr< pbvh::Treebuild_pbvh_for_dynamic_topology (Object *ob)
static std::unique_ptr< pbvh::Treebuild_pbvh_from_regular_mesh (Object *ob, const Mesh *me_eval_deform)
static std::unique_ptr< pbvh::Treebuild_pbvh_from_ccg (Object *ob, SubdivCCG &subdiv_ccg)
static void tag_position_changed (void *owner)
static void tag_radius_changed (void *owner)
static const auto & changed_tags ()
static const auto & builtin_attributes ()
static constexpr AttributeAccessorFunctions get_pointcloud_accessor_functions ()
template<typename From, typename To, To(*)(const From &) ConversionF>
static void add_implicit_conversion (DataTypeConversions &conversions)
static float2 float_to_float2 (const float &a)
static float3 float_to_float3 (const float &a)
static float4 float_to_float4 (const float &a)
static int32_t float_to_int (const float &a)
static short2 float_to_short2 (const float &a)
static int2 float_to_int2 (const float &a)
static bool float_to_bool (const float &a)
static int8_t float_to_int8 (const float &a)
static ColorGeometry4f float_to_color (const float &a)
static ColorGeometry4b float_to_byte_color (const float &a)
static math::Quaternion float_to_quaternion (const float &a)
static float3 float2_to_float3 (const float2 &a)
static float4 float2_to_float4 (const float2 &a)
static float float2_to_float (const float2 &a)
static int float2_to_int (const float2 &a)
static short2 float2_to_short2 (const float2 &a)
static int2 float2_to_int2 (const float2 &a)
static bool float2_to_bool (const float2 &a)
static int8_t float2_to_int8 (const float2 &a)
static ColorGeometry4f float2_to_color (const float2 &a)
static ColorGeometry4b float2_to_byte_color (const float2 &a)
static bool float3_to_bool (const float3 &a)
static int8_t float3_to_int8 (const float3 &a)
static float float3_to_float (const float3 &a)
static int float3_to_int (const float3 &a)
static short2 float3_to_short2 (const float3 &a)
static int2 float3_to_int2 (const float3 &a)
static float2 float3_to_float2 (const float3 &a)
static float4 float3_to_float4 (const float3 &a)
static ColorGeometry4f float3_to_color (const float3 &a)
static ColorGeometry4b float3_to_byte_color (const float3 &a)
static math::Quaternion float3_to_quaternion (const float3 &a)
static bool float4_to_bool (const float4 &a)
static int8_t float4_to_int8 (const float4 &a)
static float float4_to_float (const float4 &a)
static int float4_to_int (const float4 &a)
static short2 float4_to_short2 (const float4 &a)
static int2 float4_to_int2 (const float4 &a)
static float2 float4_to_float2 (const float4 &a)
static float3 float4_to_float3 (const float4 &a)
static ColorGeometry4f float4_to_color (const float4 &a)
static ColorGeometry4b float4_to_byte_color (const float4 &a)
static math::Quaternion float4_to_quaternion (const float4 &a)
static bool int_to_bool (const int32_t &a)
static int8_t int_to_int8 (const int32_t &a)
static short2 int_to_short2 (const int32_t &a)
static int2 int_to_int2 (const int32_t &a)
static float int_to_float (const int32_t &a)
static float2 int_to_float2 (const int32_t &a)
static float3 int_to_float3 (const int32_t &a)
static float4 int_to_float4 (const int32_t &a)
static ColorGeometry4f int_to_color (const int32_t &a)
static ColorGeometry4b int_to_byte_color (const int32_t &a)
static bool short2_to_bool (const short2 &a)
static float2 short2_to_float2 (const short2 &a)
static int short2_to_int (const short2 &a)
static int2 short2_to_int2 (const short2 &a)
static int8_t short2_to_int8 (const short2 &a)
static float short2_to_float (const short2 &a)
static float3 short2_to_float3 (const short2 &a)
static float4 short2_to_float4 (const short2 &a)
static ColorGeometry4f short2_to_color (const short2 &a)
static ColorGeometry4b short2_to_byte_color (const short2 &a)
static bool int2_to_bool (const int2 &a)
static float2 int2_to_float2 (const int2 &a)
static int int2_to_int (const int2 &a)
static short2 int2_to_short2 (const int2 &a)
static int8_t int2_to_int8 (const int2 &a)
static float int2_to_float (const int2 &a)
static float3 int2_to_float3 (const int2 &a)
static float4 int2_to_float4 (const int2 &a)
static ColorGeometry4f int2_to_color (const int2 &a)
static ColorGeometry4b int2_to_byte_color (const int2 &a)
static bool int8_to_bool (const int8_t &a)
static int int8_to_int (const int8_t &a)
static short2 int8_to_short2 (const int8_t &a)
static int2 int8_to_int2 (const int8_t &a)
static float int8_to_float (const int8_t &a)
static float2 int8_to_float2 (const int8_t &a)
static float3 int8_to_float3 (const int8_t &a)
static float4 int8_to_float4 (const int8_t &a)
static ColorGeometry4f int8_to_color (const int8_t &a)
static ColorGeometry4b int8_to_byte_color (const int8_t &a)
static float bool_to_float (const bool &a)
static int8_t bool_to_int8 (const bool &a)
static int32_t bool_to_int (const bool &a)
static short2 bool_to_short2 (const bool &a)
static int2 bool_to_int2 (const bool &a)
static float2 bool_to_float2 (const bool &a)
static float3 bool_to_float3 (const bool &a)
static float4 bool_to_float4 (const bool &a)
static ColorGeometry4f bool_to_color (const bool &a)
static ColorGeometry4b bool_to_byte_color (const bool &a)
static bool color_to_bool (const ColorGeometry4f &a)
static float color_to_float (const ColorGeometry4f &a)
static int32_t color_to_int (const ColorGeometry4f &a)
static short2 color_to_short2 (const ColorGeometry4f &a)
static int2 color_to_int2 (const ColorGeometry4f &a)
static int8_t color_to_int8 (const ColorGeometry4f &a)
static float2 color_to_float2 (const ColorGeometry4f &a)
static float3 color_to_float3 (const ColorGeometry4f &a)
static float4 color_to_float4 (const ColorGeometry4f &a)
static ColorGeometry4b color_to_byte_color (const ColorGeometry4f &a)
static bool byte_color_to_bool (const ColorGeometry4b &a)
static float byte_color_to_float (const ColorGeometry4b &a)
static int32_t byte_color_to_int (const ColorGeometry4b &a)
static short2 byte_color_to_short2 (const ColorGeometry4b &a)
static int2 byte_color_to_int2 (const ColorGeometry4b &a)
static int8_t byte_color_to_int8 (const ColorGeometry4b &a)
static float2 byte_color_to_float2 (const ColorGeometry4b &a)
static float3 byte_color_to_float3 (const ColorGeometry4b &a)
static float4 byte_color_to_float4 (const ColorGeometry4b &a)
static ColorGeometry4f byte_color_to_color (const ColorGeometry4b &a)
static math::Quaternion float4x4_to_quaternion (const float4x4 &a)
static float3 quaternion_to_float3 (const math::Quaternion &a)
static float4 quaternion_to_float4 (const math::Quaternion &a)
static float4x4 quaternion_to_float4x4 (const math::Quaternion &a)
static DataTypeConversions create_implicit_conversions ()
static void call_convert_to_uninitialized_fn (const GVArray &from, const mf::MultiFunction &fn, const IndexMask &mask, GMutableSpan to)
static void call_convert_to_uninitialized_fn (const GVArray &from, const mf::MultiFunction &fn, GMutableSpan to)
Attribute API
Vector< AttributeTransferDataretrieve_attributes_for_transfer (const AttributeAccessor src_attributes, MutableAttributeAccessor dst_attributes, AttrDomainMask domain_mask, const AttributeFilter &attribute_filter={})
static GVArray try_adapt_data_type (GVArray varray, const CPPType &to_type)
static GAttributeReader adapt_domain_and_type_if_necessary (GAttributeReader attribute, const std::optional< AttrDomain > domain, const std::optional< AttrType > data_type, const AttributeAccessor &accessor)
Common Utils
BVHTreeFromMesh bvhtree_from_mesh_verts_ex (Span< float3 > vert_positions, const IndexMask &verts_mask)
BVHTreeFromMesh bvhtree_from_mesh_edges_ex (Span< float3 > vert_positions, Span< int2 > edges, const IndexMask &edges_mask)
BVHTreeFromMesh bvhtree_from_mesh_corner_tris_ex (Span< float3 > vert_positions, OffsetIndices< int > faces, Span< int > corner_verts, Span< int3 > corner_tris, const IndexMask &faces_mask)
static BVHTreeFromMesh create_verts_tree_data (const BVHTree *tree, const Span< float3 > positions)
static BVHTreeFromMesh create_verts_tree_data (std::unique_ptr< BVHTree, BVHTreeDeleter > tree, const Span< float3 > positions)
static BVHTreeFromMesh create_edges_tree_data (const BVHTree *tree, const Span< float3 > positions, const Span< int2 > edges)
static BVHTreeFromMesh create_edges_tree_data (std::unique_ptr< BVHTree, BVHTreeDeleter > tree, const Span< float3 > positions, const Span< int2 > edges)
static BVHTreeFromMesh create_legacy_faces_tree_data (const BVHTree *tree, const Span< float3 > positions, const MFace *face)
static BVHTreeFromMesh create_tris_tree_data (const BVHTree *tree, const Span< float3 > positions, const Span< int > corner_verts, const Span< int3 > corner_tris)
static BVHTreeFromMesh create_tris_tree_data (std::unique_ptr< BVHTree, BVHTreeDeleter > tree, const Span< float3 > positions, const Span< int > corner_verts, const Span< int3 > corner_tris)
static std::unique_ptr< BVHTree, BVHTreeDeleterbvhtree_new_common (int elems_num)
static std::unique_ptr< BVHTree, BVHTreeDeletercreate_tree_from_verts (const Span< float3 > positions, const IndexMask &verts_mask)
static std::unique_ptr< BVHTree, BVHTreeDeletercreate_tree_from_edges (const Span< float3 > positions, const Span< int2 > edges, const IndexMask &edges_mask)
static std::unique_ptr< BVHTree, BVHTreeDeletercreate_tree_from_legacy_faces (const Span< float3 > positions, const Span< MFace > faces)
static std::unique_ptr< BVHTree, BVHTreeDeletercreate_tree_from_tris (const Span< float3 > positions, const Span< int > corner_verts, const Span< int3 > corner_tris)
static std::unique_ptr< BVHTree, BVHTreeDeletercreate_tree_from_tris (const Span< float3 > positions, const OffsetIndices< int > faces, const Span< int > corner_verts, const Span< int3 > corner_tris, const IndexMask &faces_mask)
static BitVector loose_verts_no_hidden_mask_get (const Mesh &mesh)
static BitVector loose_edges_no_hidden_mask_get (const Mesh &mesh)
Local Callbacks
float bvhtree_ray_tri_intersection (const BVHTreeRay *ray, float m_dist, const float v0[3], const float v1[3], const float v2[3])
float bvhtree_sphereray_tri_intersection (const BVHTreeRay *ray, float radius, float m_dist, const float v0[3], const float v1[3], const float v2[3])
static void mesh_faces_nearest_point (void *userdata, int index, const float co[3], BVHTreeNearest *nearest)
static void mesh_corner_tris_nearest_point (void *userdata, int index, const float co[3], BVHTreeNearest *nearest)
static void mesh_faces_spherecast (void *userdata, int index, const BVHTreeRay *ray, BVHTreeRayHit *hit)
static void mesh_corner_tris_spherecast (void *userdata, int index, const BVHTreeRay *ray, BVHTreeRayHit *hit)
static void mesh_edges_nearest_point (void *userdata, int index, const float co[3], BVHTreeNearest *nearest)
static void mesh_verts_spherecast_do (int index, const float v[3], const BVHTreeRay *ray, BVHTreeRayHit *hit)
static void mesh_verts_spherecast (void *userdata, int index, const BVHTreeRay *ray, BVHTreeRayHit *hit)
static void mesh_edges_spherecast (void *userdata, int index, const BVHTreeRay *ray, BVHTreeRayHit *hit)
Point Cloud BVH Building
BVHTreeFromPointCloud bvhtree_from_pointcloud_get (const PointCloud &pointcloud, const IndexMask &points_mask)
static BVHTreeFromPointCloud create_points_tree_data (const BVHTree *tree, const Span< float3 > positions)
static BVHTreeFromPointCloud create_pointcloud_tree_data (const BVHTree *tree, const Span< float3 > positions)
static BVHTreeFromPointCloud create_pointcloud_tree_data (std::unique_ptr< BVHTree, BVHTreeDeleter > tree, const Span< float3 > positions)
Operations
CurvesGeometry curves_copy_point_selection (const CurvesGeometry &curves, const IndexMask &points_to_copy, const AttributeFilter &attribute_filter)
CurvesGeometry curves_copy_curve_selection (const CurvesGeometry &curves, const IndexMask &curves_to_copy, const AttributeFilter &attribute_filter)
CurvesGeometry curves_new_no_attributes (int point_num, int curve_num)
static void translate_positions (MutableSpan< float3 > positions, const float3 &translation)
static void copy_point_selection_custom_knots (const CurvesGeometry &curves, const IndexMask &points_to_copy, const Span< int > curve_point_counts, CurvesGeometry &dst_curves)
static void copy_curve_selection_custom_knots (const CurvesGeometry &curves, const IndexMask &curves_to_copy, CurvesGeometry &dst_curves)
static void reverse_custom_knots (MutableSpan< float > custom_knots)
template<typename T>
static void reverse_curve_point_data (const CurvesGeometry &curves, const IndexMask &curve_selection, MutableSpan< T > data)
template<typename T>
static void reverse_swap_curve_point_data (const CurvesGeometry &curves, const IndexMask &curve_selection, MutableSpan< T > data_a, MutableSpan< T > data_b)
Accessors
std::array< int, CURVE_TYPES_NUMcalculate_type_counts (const VArray< int8_t > &types)
Custom Data C++ API
std::optional< VolumeGridTypecustom_data_type_to_volume_grid_type (eCustomDataType type)
std::optional< eCustomDataTypevolume_grid_type_to_custom_data_type (VolumeGridType type)
Curve Normals Access
VArray< float3curve_normals_varray (const CurvesGeometry &curves, AttrDomain domain)
static Array< float3curve_normal_point_domain (const CurvesGeometry &curves)
Mesh Normals Field Input
VArray< float3mesh_normals_varray (const Mesh &mesh, const IndexMask &mask, AttrDomain domain, bool no_corner_normals=false, bool true_normals=false)
Geometry Set
bool attribute_is_builtin_on_component_type (const GeometryComponent::Type type, StringRef name)
bool object_has_geometry_set_instances (const Object &object)
std::ostream & operator<< (std::ostream &stream, const GeometrySet &geometry_set)
static void gather_component_types_recursive (const GeometrySet &geometry_set, const bool include_instances, const bool ignore_empty, Vector< GeometryComponent::Type > &r_types)
Topology Queries
Meshmesh_new_no_attributes (int verts_num, int edges_num, int faces_num, int corners_num)
void mesh_calc_edges (Mesh &mesh, bool keep_existing_edges, bool select_new_edges)
void mesh_calc_edges (Mesh &mesh, bool keep_existing_edges, bool select_new_edges, const AttributeFilter &attribute_filter)
void mesh_translate (Mesh &mesh, const float3 &translation, bool do_shape_keys)
void mesh_transform (Mesh &mesh, const float4x4 &transform, bool do_shape_keys)
void mesh_flip_faces (Mesh &mesh, const IndexMask &selection)
void mesh_ensure_required_data_layers (Mesh &mesh)
void mesh_vert_normals_assign (Mesh &mesh, Span< float3 > vert_normals)
void mesh_vert_normals_assign (Mesh &mesh, Vector< float3 > vert_normals)
void mesh_smooth_set (Mesh &mesh, bool use_smooth, bool keep_sharp_edges=false)
void mesh_sharp_edges_set_from_angle (Mesh &mesh, float angle, bool keep_sharp_edges=false)
void mesh_edge_hide_from_vert (Span< int2 > edges, Span< bool > hide_vert, MutableSpan< bool > hide_edge)
void mesh_face_hide_from_vert (OffsetIndices< int > faces, Span< int > corner_verts, Span< bool > hide_vert, MutableSpan< bool > hide_poly)
void mesh_hide_vert_flush (Mesh &mesh)
void mesh_hide_face_flush (Mesh &mesh)
void mesh_select_vert_flush (Mesh &mesh)
void mesh_select_edge_flush (Mesh &mesh)
void mesh_select_face_flush (Mesh &mesh)
void mesh_ensure_default_color_attribute_on_add (Mesh &mesh, StringRef id, AttrDomain domain, bke::AttrType data_type)
void mesh_data_update (Depsgraph &depsgraph, const Scene &scene, Object &ob, const CustomData_MeshMasks &dataMask)
void mesh_remove_invalid_attribute_strings (Mesh &mesh)
void mesh_apply_spatial_organization (Mesh &mesh)
const AttributeAccessorFunctionsmesh_attribute_accessor_functions ()
Generic API, Trees
bNodeTreeTypenode_tree_type_find (StringRef idname)
void node_tree_type_add (bNodeTreeType &nt)
void node_tree_type_free_link (const bNodeTreeType &nt)
bool node_tree_is_registered (const bNodeTree &ntree)
Span< bNodeTreeType * > node_tree_types_get ()
void node_tree_set_type (bNodeTree &ntree)
bNodeTreenode_tree_add_tree (Main *bmain, StringRef name, StringRef idname)
bNodeTreenode_tree_add_in_lib (Main *bmain, Library *owner_library, StringRefNull name, StringRefNull idname)
void node_tree_free_embedded_tree (bNodeTree *ntree)
bNodeTree ** node_tree_ptr_from_id (ID *id)
bNodeTreenode_tree_from_id (ID *id)
bool node_tree_contains_tree (const bNodeTree &tree_to_search_in, const bNodeTree &tree_to_search_for)
void node_tree_update_all_users (Main *main, ID *id)
void node_tree_set_output (bNodeTree &ntree)
bNodeTreenode_tree_localize (bNodeTree *ntree, std::optional< ID * > new_owner_id)
void node_tree_blend_write (BlendWriter *writer, bNodeTree *ntree)
Node Tree Iterator

Utility macro for visiting every node tree in the library data, including local bNodeTree blocks in other IDs. This avoids the need for callback functions and allows executing code in a single inner code block.

Variables:

  • nodetree: The actual bNodeTree data block. Check nodetree->idname or nodetree->typeinfo to use only specific types.
  • id: The owner of the bNodeTree data block. Same as nodetree if it's a linkable node tree from the library.

Examples:

FOREACH_NODETREE_BEGIN(bmain, nodetree, id) {
if (id == nodetree)
printf("This is a linkable node tree");
FOREACH_NODETREE_BEGIN(bmain, nodetree, id) {
if (nodetree->idname == "ShaderNodeTree")
printf("This is a shader node tree);
if (GS(id) == ID_MA)
printf(" and it's owned by a material");
} FOREACH_NODETREE_END;
#define FOREACH_NODETREE_END
Definition BKE_node.hh:881
#define FOREACH_NODETREE_BEGIN(bmain, _nodetree, _id)
Definition BKE_node.hh:871
#define printf(...)
void node_tree_iterator_init (NodeTreeIterStore *ntreeiter, Main *bmain)
bool node_tree_iterator_step (NodeTreeIterStore *ntreeiter, bNodeTree **r_nodetree, ID **r_id)
Node Tree
void node_tree_remove_layer_n (bNodeTree *ntree, Scene *scene, int layer_index)
void node_system_init ()
void node_system_exit ()
bNodeTreenode_tree_add_tree_embedded (Main *bmain, ID *owner_id, StringRefNull name, StringRefNull idname)
void node_tree_free_tree (bNodeTree &ntree)
bNodeTreenode_tree_copy_tree_ex (const bNodeTree &ntree, Main *bmain, bool do_id_user)
bNodeTreenode_tree_copy_tree (Main *bmain, const bNodeTree &ntree)
void node_tree_free_local_node (bNodeTree &ntree, bNode &node)
void node_tree_update_all_new (Main &main)
void node_update_asset_metadata (bNodeTree &node_tree)
void node_tree_node_flag_set (bNodeTree &ntree, int flag, bool enable)
void node_tree_local_merge (Main *bmain, bNodeTree *localtree, bNodeTree *ntree)
void node_tree_blend_read_data (BlendDataReader *reader, ID *owner_id, bNodeTree *ntree)
bool node_is_static_socket_type (const bNodeSocketType &stype)
StringRefNull node_socket_sub_type_label (int subtype)
void node_remove_socket_ex (bNodeTree &ntree, bNode &node, bNodeSocket &sock, bool do_id_user)
void node_modify_socket_type (bNodeTree &ntree, bNode &node, bNodeSocket &sock, StringRefNull idname)
void node_unlink_node (bNodeTree &ntree, bNode &node)
void node_unlink_attached (bNodeTree *ntree, const bNode *parent)
void node_rebuild_id_vector (bNodeTree &node_tree)
bNodenode_copy_with_mapping (bNodeTree *dst_tree, const bNode &node_src, int flag, std::optional< StringRefNull > dst_unique_name, std::optional< int > dst_unique_identifier, Map< const bNodeSocket *, bNodeSocket * > &new_socket_map, bool allow_duplicate_names=false)
void node_socket_move_default_value (Main &bmain, bNodeTree &tree, bNodeSocket &src, bNodeSocket &dst)
void node_free_node (bNodeTree *tree, bNode &node)
void node_node_foreach_id (bNode *node, LibraryForeachIDData *data)
void node_link_set_mute (bNodeTree &ntree, bNodeLink &link, const bool muted)
bool node_link_is_selected (const bNodeLink &link)
void node_internal_relink (bNodeTree &ntree, bNode &node)
void node_position_relative (bNode &from_node, const bNode &to_node, const bNodeSocket *from_sock, const bNodeSocket &to_sock)
void node_position_propagate (bNode &node)
bNodenode_find_root_parent (bNode &node)
void node_chain_iterator (const bNodeTree *ntree, const bNode *node_start, bool(*callback)(bNode *, bNode *, void *, const bool), void *userdata, bool reversed)
void node_chain_iterator_backwards (const bNodeTree *ntree, bNode *node_start, bool(*callback)(bNode *, bNode *, void *), void *userdata, int recursion_lvl)
void node_parents_iterator (bNode *node, bool(*callback)(bNode *, void *), void *userdata)
bool node_is_dangling_reroute (const bNodeTree &ntree, const bNode &node)
bNodenode_get_active_paint_canvas (bNodeTree &ntree)
bool node_supports_active_flag (const bNode &node, int sub_activity)
 Does the given node supports the sub active flag.
void node_set_socket_availability (bNodeTree &ntree, bNodeSocket &sock, bool is_available)
bool node_declaration_ensure (bNodeTree &ntree, bNode &node)
bool node_declaration_ensure_on_outdated_node (bNodeTree &ntree, bNode &node)
void node_socket_declarations_update (bNode *node)
bool node_preview_used (const bNode &node)
bNodePreviewnode_preview_verify (Map< bNodeInstanceKey, bNodePreview > &previews, bNodeInstanceKey key, int xsize, int ysize, bool create)
void node_preview_init_tree (bNodeTree *ntree, int xsize, int ysize)
void node_preview_remove_unused (bNodeTree *ntree)
void node_preview_merge_tree (bNodeTree *to_ntree, bNodeTree *from_ntree, bool remove_old)
Evaluation
template<typename CountFn>
void build_offsets (MutableSpan< int > offsets, const CountFn &count_fn)
static void calculate_evaluated_offsets (const CurvesGeometry &curves, MutableSpan< int > offsets, MutableSpan< int > all_bezier_offsets)
static void rotate_directions_around_axes (MutableSpan< float3 > directions, const Span< float3 > axes, const Span< float > angles)
static void normalize_span (MutableSpan< float3 > data)
static void evaluate_generic_data_for_curve (const EvalData &eval_data, const int curve_index, const GSpan src, GMutableSpan dst)
Domain Interpolation
template<typename T>
static void adapt_curve_domain_point_to_curve_impl (const CurvesGeometry &curves, const VArray< T > &old_values, MutableSpan< T > r_values)
template<>
void adapt_curve_domain_point_to_curve_impl (const CurvesGeometry &curves, const VArray< bool > &old_values, MutableSpan< bool > r_values)
static GVArray adapt_curve_domain_point_to_curve (const CurvesGeometry &curves, const GVArray &varray)
template<typename T>
static void adapt_curve_domain_curve_to_point_impl (const CurvesGeometry &curves, const VArray< T > &old_values, MutableSpan< T > r_values)
static GVArray adapt_curve_domain_curve_to_point (const CurvesGeometry &curves, const GVArray &varray)
Curve Length Field Input
static VArray< floatconstruct_curve_length_gvarray (const CurvesGeometry &curves, const AttrDomain domain)

Variables

const char * no_procedural_access_message
template<typename T>
constexpr bool is_geometry_component_v = std::is_base_of_v<GeometryComponent, T>
static AssetTypeInfo AssetType_AC
constexpr StringRef ATTR_POSITION = "position"
constexpr StringRef ATTR_RADIUS = "radius"
constexpr StringRef ATTR_TILT = "tilt"
constexpr StringRef ATTR_CURVE_TYPE = "curve_type"
constexpr StringRef ATTR_CYCLIC = "cyclic"
constexpr StringRef ATTR_RESOLUTION = "resolution"
constexpr StringRef ATTR_NORMAL_MODE = "normal_mode"
constexpr StringRef ATTR_HANDLE_TYPE_LEFT = "handle_type_left"
constexpr StringRef ATTR_HANDLE_TYPE_RIGHT = "handle_type_right"
constexpr StringRef ATTR_HANDLE_POSITION_LEFT = "handle_left"
constexpr StringRef ATTR_HANDLE_POSITION_RIGHT = "handle_right"
constexpr StringRef ATTR_NURBS_ORDER = "nurbs_order"
constexpr StringRef ATTR_NURBS_WEIGHT = "nurbs_weight"
constexpr StringRef ATTR_NURBS_KNOTS_MODE = "knots_mode"
constexpr StringRef ATTR_SURFACE_UV_COORDINATE = "surface_uv_coordinate"
template<typename T, typename U>
static constexpr bool is_single_or_field_or_grid_v
template<typename T>
static constexpr bool is_VolumeGrid_v

Node Type Definitions

enum class  NodeColorTag {
  None = 0 , Attribute = 1 , Color = 2 , Converter = 3 ,
  Distort = 4 , Filter = 5 , Geometry = 6 , Input = 7 ,
  Matte = 8 , Output = 9 , Script = 10 , Shader = 11 ,
  Texture = 12 , Vector = 13 , Pattern = 14 , Interface = 15 ,
  Group = 16
}
using NodeMultiFunctionBuildFunction = void (*)(blender::nodes::NodeMultiFunctionBuilder &builder)
using NodeGeometryExecFunction = void (*)(blender::nodes::GeoNodeExecParams params)
using NodeDeclareFunction = void (*)(blender::nodes::NodeDeclarationBuilder &builder)
using NodeDeclareDynamicFunction
using SocketGetCPPValueFunction = void (*)(const void *socket_value, void *r_value)
using SocketGetGeometryNodesCPPValueFunction = SocketValueVariant (*)(const void *socket_value)
using NodeGatherSocketLinkOperationsFunction
using NodeGatherAddOperationsFunction
using NodeGetCompositorOperationFunction
using NodeExtraInfoFunction = void (*)(blender::nodes::NodeExtraInfoParams &params)
using NodeInverseElemEvalFunction
using NodeElemEvalFunction = void (*)(blender::nodes::value_elem::ElemEvalParams &params)
using NodeInverseEvalFunction = void (*)(blender::nodes::inverse_eval::InverseEvalParams &params)
using NodeInternallyLinkedInputFunction
using NodeBlendWriteFunction
using NodeBlendDataReadFunction = void (*)(bNodeTree &tree, bNode &node, BlendDataReader &reader)
using NodeInitExecFunction
using NodeFreeExecFunction = void (*)(void *nodedata)
using NodeExecFunction
using NodeGPUExecFunction
using NodeMaterialXFunction = void (*)(void *data, bNode *node, bNodeSocket *out)
using bNodeClassCallback = void (*)(void *calldata, int nclass, StringRefNull name)

Node Type Access

enum class  eNodeSizePreset : int8_t { Default , Small , Middle , Large }
bool node_group_poll (const bNodeTree *nodetree, const bNodeTree *grouptree, const char **r_disabled_hint)
void node_type_base_custom (bNodeType &ntype, StringRefNull idname, StringRefNull name, StringRefNull enum_name, short nclass)
void node_type_storage (bNodeType &ntype, std::optional< StringRefNull > storagename, void(*freefunc)(bNode *node), void(*copyfunc)(bNodeTree *dest_ntree, bNode *dest_node, const bNode *src_node))
std::string node_label (const bNodeTree &ntree, const bNode &node)
StringRefNull node_socket_label (const bNodeSocket &sock)
std::optional< StringRefNullnode_socket_short_label (const bNodeSocket &sock)
const char * node_socket_translation_context (const bNodeSocket &sock)
NodeColorTag node_color_tag (const bNode &node)
void node_type_base (bNodeType &ntype, std::string idname, std::optional< int16_t > legacy_type=std::nullopt)
void node_type_socket_templates (bNodeType *ntype, bNodeSocketTemplate *inputs, bNodeSocketTemplate *outputs)
void node_type_size (bNodeType &ntype, int width, int minwidth, int maxwidth)
void node_type_size_preset (bNodeType &ntype, eNodeSizePreset size)

Generic API, Nodes

const bNodeInstanceKey NODE_INSTANCE_KEY_BASE = {5381}
const bNodeInstanceKey NODE_INSTANCE_KEY_NONE = {0}
bNodeTypenode_type_find (StringRef idname)
StringRefNull node_type_find_alias (StringRefNull alias)
void node_register_type (bNodeType &ntype)
void node_unregister_type (bNodeType &ntype)
void node_register_alias (bNodeType &nt, StringRef alias)
Span< bNodeType * > node_types_get ()
bNodeSocketTypenode_socket_type_find (StringRef idname)
bNodeSocketTypenode_socket_type_find_static (int type, int subtype=0)
void node_register_socket_type (bNodeSocketType &stype)
void node_unregister_socket_type (bNodeSocketType &stype)
bool node_socket_is_registered (const bNodeSocket &sock)
StringRefNull node_socket_type_label (const bNodeSocketType &stype)
std::optional< StringRefNullnode_static_socket_type (int type, int subtype, std::optional< int > dimensions=std::nullopt)
std::optional< StringRefNullnode_static_socket_interface_type_new (int type, int subtype, std::optional< int > dimensions=std::nullopt)
std::optional< StringRefNullnode_static_socket_label (int type, int subtype)
Span< bNodeSocketType * > node_socket_types_get ()
bNodeSocketnode_find_socket (bNode &node, eNodeSocketInOut in_out, StringRef identifier)
const bNodeSocketnode_find_socket (const bNode &node, eNodeSocketInOut in_out, StringRef identifier)
bNodeSocketnode_add_socket (bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out, StringRefNull idname, StringRefNull identifier, StringRefNull name)
bNodeSocketnode_add_static_socket (bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out, int type, int subtype, StringRefNull identifier, StringRefNull name)
void node_remove_socket (bNodeTree &ntree, bNode &node, bNodeSocket &sock)
void node_modify_socket_type_static (bNodeTree *ntree, bNode *node, bNodeSocket *sock, int type, int subtype)
bNodenode_add_node (const bContext *C, bNodeTree &ntree, StringRef idname, std::optional< int > unique_identifier=std::nullopt)
bNodenode_add_static_node (const bContext *C, bNodeTree &ntree, int type)
void node_unique_name (bNodeTree &ntree, bNode &node)
void node_unique_id (bNodeTree &ntree, bNode &node)
void node_remove_node (Main *bmain, bNodeTree &ntree, bNode &node, bool do_id_user, bool remove_animation=true)
float2 node_dimensions_get (const bNode &node)
void node_tag_update_id (bNode &node)
void node_internal_links (bNode &node, bNodeLink **r_links, int *r_len)
bNodeLinknode_add_link (bNodeTree &ntree, bNode &fromnode, bNodeSocket &fromsock, bNode &tonode, bNodeSocket &tosock)
void node_remove_link (bNodeTree *ntree, bNodeLink &link)
void node_remove_socket_links (bNodeTree &ntree, bNodeSocket &sock)
bool node_link_is_hidden (const bNodeLink &link)
void node_attach_node (bNodeTree &ntree, bNode &node, bNode &parent)
void node_detach_node (bNodeTree &ntree, bNode &node)
bNodenode_find_node_try (bNodeTree &ntree, bNodeSocket &socket)
bNodenode_find_node (bNodeTree &ntree, bNodeSocket &socket)
const bNodenode_find_node (const bNodeTree &ntree, const bNodeSocket &socket)
bNodenode_find_node_by_name (bNodeTree &ntree, StringRefNull name)
const bNodeTreeInterfaceSocketnode_find_interface_input_by_identifier (const bNodeTree &ntree, StringRef identifier)
bool node_is_parent_and_child (const bNode &parent, const bNode &child)
int node_count_socket_links (const bNodeTree &ntree, const bNodeSocket &sock)
bool node_set_selected (bNode &node, bool select)
void node_set_active (bNodeTree &ntree, bNode &node)
bNodenode_get_active (bNodeTree &ntree)
void node_clear_active (bNodeTree &ntree)
bNodenode_get_active_texture (bNodeTree &ntree)
int node_socket_link_limit (const bNodeSocket &sock)
bNodeInstanceKey node_instance_key (bNodeInstanceKey parent_key, const bNodeTree *ntree, const bNode *node)

Node Generic Functions

bNodeTreeType NodeTreeTypeUndefined
bNodeType NodeTypeUndefined
bNodeSocketType NodeSocketTypeUndefined
bool node_is_connected_to_output (const bNodeTree &ntree, const bNode &node)
bNodeSocketnode_find_enabled_socket (bNode &node, eNodeSocketInOut in_out, StringRef name)
bNodeSocketnode_find_enabled_input_socket (bNode &node, StringRef name)
bNodeSocketnode_find_enabled_output_socket (bNode &node, StringRef name)
std::optional< eCustomDataTypesocket_type_to_custom_data_type (eNodeSocketDatatype type)
std::optional< eNodeSocketDatatypecustom_data_type_to_socket_type (eCustomDataType type)
const CPPTypesocket_type_to_geo_nodes_base_cpp_type (eNodeSocketDatatype type)
std::optional< eNodeSocketDatatypegeo_nodes_base_cpp_type_to_socket_type (const CPPType &type)
std::optional< VolumeGridTypesocket_type_to_grid_type (eNodeSocketDatatype type)
std::optional< eNodeSocketDatatypegrid_type_to_socket_type (VolumeGridType type)
void register_node_zone_type (const bNodeZoneType &zone_type)
Span< const bNodeZoneType * > all_zone_types ()
Span< int > all_zone_node_types ()
Span< int > all_zone_input_node_types ()
Span< int > all_zone_output_node_types ()
const bNodeZoneTypezone_type_by_node_type (const int node_type)

Detailed Description

Put the most common types directly into the blender::bke namespace.

Typedef Documentation

◆ AttributeForeachCallback

Initial value:
FunctionRef<bool(StringRefNull attribute_id, const AttributeMetaData &meta_data)>

Definition at line 178 of file BKE_attribute.hh.

◆ AttrUpdateOnChange

using blender::bke::AttrUpdateOnChange = void (*)(void *owner)

Definition at line 11 of file attribute_storage_access.hh.

◆ bNodeClassCallback

using blender::bke::bNodeClassCallback = void (*)(void *calldata, int nclass, StringRefNull name)

Definition at line 492 of file BKE_node.hh.

◆ BoneNameSet

Definition at line 689 of file BKE_armature.hh.

◆ Clock

using blender::bke::Clock = std::chrono::high_resolution_clock

Definition at line 1486 of file blenkernel/intern/modifier.cc.

◆ FoundFCurveCallback

using blender::bke::FoundFCurveCallback = blender::FunctionRef<void(FCurve *fcurve, const char *bone_name)>

Definition at line 390 of file BKE_action.hh.

◆ FoundFCurveCallbackConst

Initial value:
blender::FunctionRef<void(const FCurve *fcurve, const char *bone_name)>

Definition at line 391 of file BKE_action.hh.

◆ GeometryComponentPtr

◆ NodeBlendDataReadFunction

Definition at line 151 of file BKE_node.hh.

◆ NodeBlendWriteFunction

Initial value:
void (*)(const bNodeTree &tree,
const bNode &node,
BlendWriter &writer)
KDTree_3d * tree

Definition at line 148 of file BKE_node.hh.

◆ NodeDeclareDynamicFunction

◆ NodeDeclareFunction

Definition at line 122 of file BKE_node.hh.

◆ NodeElemEvalFunction

◆ NodeExecFunction

Initial value:
void (*)(
void *data, int thread, bNode *, bNodeExecData *execdata, bNodeStack **in, bNodeStack **out)
BMesh const char void * data
#define in
#define out

Definition at line 218 of file BKE_node.hh.

◆ NodeExtraInfoFunction

◆ NodeFreeExecFunction

using blender::bke::NodeFreeExecFunction = void (*)(void *nodedata)

Definition at line 217 of file BKE_node.hh.

◆ NodeGatherAddOperationsFunction

Initial value:
void (*)(blender::nodes::GatherAddNodeSearchParams &params)
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]

Definition at line 134 of file BKE_node.hh.

◆ NodeGatherSocketLinkOperationsFunction

◆ NodeGeometryExecFunction

◆ NodeGetCompositorOperationFunction

◆ NodeGPUExecFunction

Initial value:

Definition at line 220 of file BKE_node.hh.

◆ NodeIDVectorSet

◆ NodeInitExecFunction

Initial value:

Definition at line 214 of file BKE_node.hh.

◆ NodeInternallyLinkedInputFunction

Initial value:
const bNodeSocket *(*)(const bNodeTree &tree,
const bNode &node,
const bNodeSocket &output_socket)

Definition at line 145 of file BKE_node.hh.

◆ NodeInverseElemEvalFunction

◆ NodeInverseEvalFunction

◆ NodeMaterialXFunction

using blender::bke::NodeMaterialXFunction = void (*)(void *data, bNode *node, bNodeSocket *out)

Definition at line 222 of file BKE_node.hh.

◆ NodeMultiFunctionBuildFunction

◆ NodeSocketPair

Definition at line 206 of file node_tree_update.cc.

◆ ObjectModifierPair

Definition at line 205 of file node_tree_update.cc.

◆ SelectedBoneCallback

Definition at line 685 of file BKE_armature.hh.

◆ SocketGetCPPValueFunction

using blender::bke::SocketGetCPPValueFunction = void (*)(const void *socket_value, void *r_value)

Definition at line 126 of file BKE_node.hh.

◆ SocketGetGeometryNodesCPPValueFunction

Definition at line 127 of file BKE_node.hh.

◆ TreeNodePair

using blender::bke::TreeNodePair = std::pair<bNodeTree *, bNode *>

Definition at line 204 of file node_tree_update.cc.

Enumeration Type Documentation

◆ AttrDomain

enum class blender::bke::AttrDomain : int8_t
strong
Enumerator
Auto 
Point 
Edge 
Face 
Corner 
Curve 
Instance 
Layer 

Definition at line 63 of file BKE_attribute.hh.

◆ AttrStorageType

enum class blender::bke::AttrStorageType : int8_t
strong

Some storage types are only relevant for certain attribute types.

Enumerator
Array 

#AttributeDataArray.

Single 

A single value for the whole attribute.

Definition at line 37 of file BKE_attribute.hh.

◆ AttrType

enum class blender::bke::AttrType : int16_t
strong
Enumerator
Bool 
Int8 
Int16_2D 
Int32 
Int32_2D 
Float 
Float2 
Float3 
Float4x4 
ColorByte 
ColorFloat 
Quaternion 
String 

Definition at line 44 of file BKE_attribute.hh.

◆ eNodeSizePreset

enum class blender::bke::eNodeSizePreset : int8_t
strong
Enumerator
Default 
Small 
Middle 
Large 

Definition at line 1160 of file BKE_node.hh.

◆ FieldSocketState

enum class blender::bke::FieldSocketState : int8_t
strong
Enumerator
RequiresSingle 
CanBeField 
IsField 

Definition at line 58 of file BKE_node_runtime.hh.

◆ GeometryOwnershipType

Enumerator
Owned 
Editable 
ReadOnly 

Definition at line 47 of file BKE_geometry_set.hh.

◆ MeshNormalDomain

enum class blender::bke::MeshNormalDomain : int8_t
strong

The complexity requirement of attribute domains needed to process normals. See #Mesh::normals_domain().

Enumerator
Face 

The mesh is completely flat shaded; either all faces or edges are sharp. Only #Mesh::face_normals() is necessary. This case is generally the best for performance, since no mixing is necessary and multithreading is simple.

Point 

The mesh is completely smooth shaded; there are no sharp face or edges. Only #Mesh::vert_normals() is necessary. Calculating face normals is still necessary though, since they have to be mixed to become vertex normals.

Corner 

The mesh has mixed smooth and sharp shading. In order to split the normals on each side of sharp edges, they need to be processed per-face-corner. Normals can be retrieved with #Mesh::corner_normals().

Definition at line 57 of file BKE_mesh_types.hh.

◆ NodeColorTag

enum class blender::bke::NodeColorTag
strong

Color tag stored per node group. This affects the header color of group nodes. Note that these values are written to DNA.

This is separate from the NODE_CLASS_* enum, because those have some additional items and are not purely color tags. Some classes also have functional effects (e.g. NODE_CLASS_INPUT).

Enumerator
None 
Attribute 
Color 
Converter 
Distort 
Filter 
Geometry 
Input 
Matte 
Output 
Script 
Shader 
Texture 
Vector 
Pattern 
Interface 
Group 

Definition at line 472 of file BKE_node.hh.

◆ NodeSocketValueMenuRuntimeFlag

Enumerator
NODE_MENU_ITEMS_CONFLICT 

Definition at line 19 of file BKE_node_enum.hh.

Function Documentation

◆ action_asset_metadata_ensure()

void blender::bke::action_asset_metadata_ensure ( void * asset_ptr,
AssetMetaData * asset_data )
static

◆ action_asset_type_property()

IDProperty * blender::bke::action_asset_type_property ( const bAction * action)
static

Definition at line 718 of file blenkernel/intern/action.cc.

References blender::bke::idprop::create().

Referenced by action_asset_metadata_ensure().

◆ action_blend_read_data()

◆ action_blend_write()

◆ action_blend_write_clear_legacy_channel_groups_listbase()

void blender::bke::action_blend_write_clear_legacy_channel_groups_listbase ( ListBase & listbase)
static

Definition at line 434 of file blenkernel/intern/action.cc.

References BLI_listbase_clear(), and LISTBASE_FOREACH_MUTABLE.

Referenced by action_blend_write().

◆ action_blend_write_clear_legacy_fcurves_listbase()

void blender::bke::action_blend_write_clear_legacy_fcurves_listbase ( ListBase & listbase)
static

Definition at line 478 of file blenkernel/intern/action.cc.

References BLI_listbase_clear(), and LISTBASE_FOREACH_MUTABLE.

Referenced by action_blend_write().

◆ action_blend_write_make_legacy_channel_groups_listbase()

void blender::bke::action_blend_write_make_legacy_channel_groups_listbase ( ListBase & listbase,
const Span< bActionGroup * > channel_groups )
static

Create a listbase from a Span of channel groups.

Note
this does NOT transfer ownership of the pointers. The ListBase should not be freed, but given to action_blend_write_clear_legacy_channel_groups_listbase() below.
Warning
This code is modifying actual 'Main' data in-place, which is usually not acceptable (due to risks of unsafe concurrent accesses mainly). The reasons why this is currently seen as 'reasonably safe' are:
  • Current blender code is not expected to access the affected bActionGroup data (prev/next listbase pointers) in any way, as they are stored in an array.
  • The action.groups listbase modification is safe/valid, as this is a member of the Action ID, which is a shallow copy of the actual ID data from Main.

Definition at line 400 of file blenkernel/intern/action.cc.

References BLI_listbase_clear(), blender::Span< T >::first(), ListBase::first, blender::Span< T >::index_range(), blender::Span< T >::is_empty(), blender::Span< T >::last(), ListBase::last, and blender::Span< T >::size().

Referenced by action_blend_write().

◆ action_blend_write_make_legacy_fcurves_listbase()

void blender::bke::action_blend_write_make_legacy_fcurves_listbase ( ListBase & listbase,
const Span< FCurve * > fcurves )
static

Create a listbase from a Span of F-Curves.

Note
this does NOT transfer ownership of the pointers. The ListBase should not be freed, but given to action_blend_write_clear_legacy_fcurves_listbase() below.
Warning
This code is modifying actual 'Main' data in-place, which is usually not acceptable (due to risks of unsafe concurrent accesses mainly). The reasons why this is currently seen as 'reasonably safe' are:
  • Current blender code is not expected to access the affected FCurve data (prev/next listbase pointers) in any way, as they are stored in an array.
  • The action.curves listbase modification is safe/valid, as this is a member of the Action ID, which is a shallow copy of the actual ID data from Main.

Definition at line 459 of file blenkernel/intern/action.cc.

References BLI_listbase_clear(), ListBase::first, blender::Span< T >::index_range(), blender::Span< T >::is_empty(), ListBase::last, and blender::Span< T >::size().

Referenced by action_blend_write().

◆ action_copy_data()

◆ action_foreach_id()

◆ action_free_data()

◆ action_init_data()

void blender::bke::action_init_data ( ID * action_id)
static

◆ adapt_curve_domain_curve_to_point()

GVArray blender::bke::adapt_curve_domain_curve_to_point ( const CurvesGeometry & curves,
const GVArray & varray )
static

◆ adapt_curve_domain_curve_to_point_impl()

template<typename T>
void blender::bke::adapt_curve_domain_curve_to_point_impl ( const CurvesGeometry & curves,
const VArray< T > & old_values,
MutableSpan< T > r_values )
static

Copy the value from a curve to all of its points.

Note
Theoretically this interpolation does not need to compute all values at once. However, doing that makes the implementation simpler, and this can be optimized in the future if only some values are required.

Definition at line 1812 of file curves_geometry.cc.

References adapt_curve_domain_curve_to_point_impl(), blender::MutableSpan< T >::fill(), and blender::MutableSpan< T >::slice().

Referenced by adapt_curve_domain_curve_to_point_impl().

◆ adapt_curve_domain_point_to_curve()

GVArray blender::bke::adapt_curve_domain_point_to_curve ( const CurvesGeometry & curves,
const GVArray & varray )
static

◆ adapt_curve_domain_point_to_curve_impl() [1/2]

template<>
void blender::bke::adapt_curve_domain_point_to_curve_impl ( const CurvesGeometry & curves,
const VArray< bool > & old_values,
MutableSpan< bool > r_values )

A curve is selected if all of its control points were selected.

Note
Theoretically this interpolation does not need to compute all values at once. However, doing that makes the implementation simpler, and this can be optimized in the future if only some values are required.

Definition at line 1773 of file curves_geometry.cc.

References adapt_curve_domain_point_to_curve_impl(), and blender::MutableSpan< T >::fill().

◆ adapt_curve_domain_point_to_curve_impl() [2/2]

template<typename T>
void blender::bke::adapt_curve_domain_point_to_curve_impl ( const CurvesGeometry & curves,
const VArray< T > & old_values,
MutableSpan< T > r_values )
static

Mix together all of a curve's control point values.

Note
Theoretically this interpolation does not need to compute all values at once. However, doing that makes the implementation simpler, and this can be optimized in the future if only some values are required.

Definition at line 1748 of file curves_geometry.cc.

References adapt_curve_domain_point_to_curve_impl(), and blender::threading::parallel_for().

Referenced by adapt_curve_domain_point_to_curve_impl(), and adapt_curve_domain_point_to_curve_impl().

◆ adapt_domain_and_type_if_necessary()

◆ adapt_mesh_attribute_domain()

◆ adapt_mesh_domain_corner_to_edge()

GVArray blender::bke::adapt_mesh_domain_corner_to_edge ( const Mesh & mesh,
const GVArray & varray )
static

◆ adapt_mesh_domain_corner_to_edge_impl() [1/2]

template<>
void blender::bke::adapt_mesh_domain_corner_to_edge_impl ( const Mesh & mesh,
const VArray< bool > & old_values,
MutableSpan< bool > r_values )

◆ adapt_mesh_domain_corner_to_edge_impl() [2/2]

template<typename T>
void blender::bke::adapt_mesh_domain_corner_to_edge_impl ( const Mesh & mesh,
const VArray< T > & old_values,
MutableSpan< T > r_values )
static

◆ adapt_mesh_domain_corner_to_face()

GVArray blender::bke::adapt_mesh_domain_corner_to_face ( const Mesh & mesh,
const GVArray & varray )
static

◆ adapt_mesh_domain_corner_to_point()

GVArray blender::bke::adapt_mesh_domain_corner_to_point ( const Mesh & mesh,
const GVArray & varray )
static

◆ adapt_mesh_domain_corner_to_point_impl() [1/2]

template<>
void blender::bke::adapt_mesh_domain_corner_to_point_impl ( const Mesh & mesh,
const VArray< bool > & src,
MutableSpan< bool > r_dst )

◆ adapt_mesh_domain_corner_to_point_impl() [2/2]

template<typename T>
void blender::bke::adapt_mesh_domain_corner_to_point_impl ( const Mesh & mesh,
const VArray< T > & src,
MutableSpan< T > r_dst )
static

◆ adapt_mesh_domain_edge_to_corner()

GVArray blender::bke::adapt_mesh_domain_edge_to_corner ( const Mesh & mesh,
const GVArray & varray )
static

◆ adapt_mesh_domain_edge_to_corner_impl() [1/2]

template<>
void blender::bke::adapt_mesh_domain_edge_to_corner_impl ( const Mesh & mesh,
const VArray< bool > & old_values,
MutableSpan< bool > r_values )

◆ adapt_mesh_domain_edge_to_corner_impl() [2/2]

template<typename T>
void blender::bke::adapt_mesh_domain_edge_to_corner_impl ( const Mesh & mesh,
const VArray< T > & old_values,
MutableSpan< T > r_values )

◆ adapt_mesh_domain_edge_to_face()

GVArray blender::bke::adapt_mesh_domain_edge_to_face ( const Mesh & mesh,
const GVArray & varray )
static

◆ adapt_mesh_domain_edge_to_point()

GVArray blender::bke::adapt_mesh_domain_edge_to_point ( const Mesh & mesh,
const GVArray & varray )
static

◆ adapt_mesh_domain_edge_to_point_impl() [1/2]

template<>
void blender::bke::adapt_mesh_domain_edge_to_point_impl ( const Mesh & mesh,
const VArray< bool > & old_values,
MutableSpan< bool > r_values )

◆ adapt_mesh_domain_edge_to_point_impl() [2/2]

template<typename T>
void blender::bke::adapt_mesh_domain_edge_to_point_impl ( const Mesh & mesh,
const VArray< T > & old_values,
MutableSpan< T > r_values )
static

◆ adapt_mesh_domain_face_to_corner()

GVArray blender::bke::adapt_mesh_domain_face_to_corner ( const Mesh & mesh,
const GVArray & varray )
static

◆ adapt_mesh_domain_face_to_corner_impl()

template<typename T>
void blender::bke::adapt_mesh_domain_face_to_corner_impl ( const Mesh & mesh,
const VArray< T > & old_values,
MutableSpan< T > r_values )

◆ adapt_mesh_domain_face_to_edge()

GVArray blender::bke::adapt_mesh_domain_face_to_edge ( const Mesh & mesh,
const GVArray & varray )
static

◆ adapt_mesh_domain_face_to_edge_impl() [1/2]

template<>
void blender::bke::adapt_mesh_domain_face_to_edge_impl ( const Mesh & mesh,
const VArray< bool > & old_values,
MutableSpan< bool > r_values )

◆ adapt_mesh_domain_face_to_edge_impl() [2/2]

template<typename T>
void blender::bke::adapt_mesh_domain_face_to_edge_impl ( const Mesh & mesh,
const VArray< T > & old_values,
MutableSpan< T > r_values )

◆ adapt_mesh_domain_face_to_point()

GVArray blender::bke::adapt_mesh_domain_face_to_point ( const Mesh & mesh,
const GVArray & varray )
static

◆ adapt_mesh_domain_point_to_corner()

GVArray blender::bke::adapt_mesh_domain_point_to_corner ( const Mesh & mesh,
const GVArray & varray )
static

Each corner's value is simply a copy of the value at its vertex.

Definition at line 99 of file mesh_attributes.cc.

References adapt_mesh_domain_point_to_corner(), blender::bke::attribute_math::convert_to_static_type(), and blender::GVArrayCommon::type().

Referenced by adapt_mesh_attribute_domain(), and adapt_mesh_domain_point_to_corner().

◆ adapt_mesh_domain_point_to_edge()

GVArray blender::bke::adapt_mesh_domain_point_to_edge ( const Mesh & mesh,
const GVArray & varray )
static

◆ adapt_mesh_domain_point_to_face()

GVArray blender::bke::adapt_mesh_domain_point_to_face ( const Mesh & mesh,
const GVArray & varray )
static

◆ add_auto_smooth_node_tree()

◆ add_custom_data_layer_from_attribute_init()

◆ add_final_mesh_as_geometry_component()

void blender::bke::add_final_mesh_as_geometry_component ( const Object & object,
GeometrySet & geometry_set,
const bool apply_subdiv )
static

◆ add_generic_custom_data_layer()

void * blender::bke::add_generic_custom_data_layer ( CustomData & custom_data,
const eCustomDataType data_type,
const eCDAllocType alloctype,
const int domain_size,
const StringRef attribute_id )
static

◆ add_generic_custom_data_layer_with_existing_data()

const void * blender::bke::add_generic_custom_data_layer_with_existing_data ( CustomData & custom_data,
const eCustomDataType data_type,
const StringRef attribute_id,
const int domain_size,
void * layer_data,
const ImplicitSharingInfo * sharing_info )
static

◆ add_implicit_conversion()

template<typename From, typename To, To(*)(const From &) ConversionF>
void blender::bke::add_implicit_conversion ( DataTypeConversions & conversions)
static

◆ add_orco_mesh()

◆ adjust_multi_input_indices_after_removed_link()

void blender::bke::adjust_multi_input_indices_after_removed_link ( bNodeTree * ntree,
const bNodeSocket * sock,
const int deleted_index )
static

Definition at line 3894 of file node.cc.

References bNodeTree::links, and LISTBASE_FOREACH.

Referenced by node_internal_relink(), and node_unlink_node().

◆ all_zone_input_node_types()

◆ all_zone_node_types()

Span< int > blender::bke::all_zone_node_types ( )

◆ all_zone_output_node_types()

◆ all_zone_types()

◆ allow_procedural_attribute_access()

◆ armature_deform_coords()

void blender::bke::armature_deform_coords ( const Object & ob_arm,
const Object & ob_target,
const ListBase * defbase,
const MutableSpan< float3 > vert_coords,
const std::optional< MutableSpan< float3x3 > > vert_deform_mats,
const int deformflag,
const std::optional< Span< float3 > > vert_coords_prev,
blender::StringRefNull defgrp_name,
const std::optional< Span< MDeformVert > > dverts,
const Mesh * me_target )
static

◆ armature_deform_editmesh()

void blender::bke::armature_deform_editmesh ( const Object & ob_arm,
const Object & ob_target,
const ListBase * defbase,
const MutableSpan< float3 > vert_coords,
const std::optional< MutableSpan< float3x3 > > vert_deform_mats,
const int deformflag,
const std::optional< Span< float3 > > vert_coords_prev,
blender::StringRefNull defgrp_name,
const BMEditMesh & em_target,
const int cd_dvert_offset )
static

◆ armature_vert_task_editmesh()

template<bool use_dvert>
void blender::bke::armature_vert_task_editmesh ( void *__restrict userdata,
MempoolIterData * iter,
const TaskParallelTLS * __restrict )
static

◆ armature_vert_task_with_dvert()

void blender::bke::armature_vert_task_with_dvert ( const ArmatureDeformParams & deform_params,
const int i,
const MDeformVert * dvert,
const bool use_quaternion )
static

◆ armature_vert_task_with_mixer()

◆ asset_blendfile_path_for_save()

std::string blender::bke::asset_blendfile_path_for_save ( const bUserAssetLibrary & user_library,
const StringRef base_name,
const ID_Type id_type,
ReportList & reports )
static

◆ asset_edit_id_delete()

bool blender::bke::asset_edit_id_delete ( Main & global_main,
ID & id,
ReportList & reports )

◆ asset_edit_id_ensure_local()

ID * blender::bke::asset_edit_id_ensure_local ( Main & global_main,
ID & id )

◆ asset_edit_id_find_local()

ID * blender::bke::asset_edit_id_find_local ( Main & global_main,
ID & id )

◆ asset_edit_id_from_weak_reference()

◆ asset_edit_id_is_editable()

◆ asset_edit_id_is_writable()

◆ asset_edit_id_revert()

ID * blender::bke::asset_edit_id_revert ( Main & global_main,
ID & id,
ReportList & reports )

Relink the asset from the library. This causes the ID to be re-allocated, so its address changes. Even in case of failure to reload the asset, id will be deleted.

Returns
the new address of the reloaded id.

Definition at line 305 of file asset_edit.cc.

References asset_edit_id_is_editable(), and asset_reload().

Referenced by blender::ed::sculpt_paint::brush_asset_revert_exec().

◆ asset_edit_id_save()

◆ asset_edit_id_save_as()

std::optional< std::string > blender::bke::asset_edit_id_save_as ( Main & global_main,
const ID & id,
StringRefNull name,
const bUserAssetLibrary & user_library,
AssetWeakReference & r_weak_ref,
ReportList & reports )

◆ asset_edit_weak_reference_from_id()

◆ asset_link_id()

◆ asset_reload()

ID * blender::bke::asset_reload ( Main & global_main,
ID & id,
ReportList * reports )
static

◆ asset_root_path_for_save()

std::string blender::bke::asset_root_path_for_save ( const bUserAssetLibrary & user_library,
const ID_Type id_type )
static

◆ asset_weak_reference_for_essentials()

AssetWeakReference blender::bke::asset_weak_reference_for_essentials ( const short idcode,
const char * idname,
const char * filepath )
static

◆ asset_weak_reference_for_user_library()

◆ asset_write_in_library()

◆ attr_type_to_custom_data_type()

◆ attribute_data_matches_varray()

bool blender::bke::attribute_data_matches_varray ( const GAttributeReader & attribute,
const GVArray & varray )
static

◆ attribute_data_type_complexity()

int blender::bke::attribute_data_type_complexity ( const AttrType data_type)
static

◆ attribute_data_type_highest_complexity()

AttrType blender::bke::attribute_data_type_highest_complexity ( Span< AttrType > data_types)

◆ attribute_domain_highest_priority()

AttrDomain blender::bke::attribute_domain_highest_priority ( Span< AttrDomain > domains)

Domains with a higher "information density" have a higher priority, in order to choose a domain that will not lose data through domain conversion.

Definition at line 310 of file attribute_access.cc.

References attribute_domain_priority(), and Corner.

Referenced by blender::bke::GeometrySet::GatheredAttributes::add().

◆ attribute_domain_priority()

int blender::bke::attribute_domain_priority ( const AttrDomain domain)
static
Note
Generally the order should mirror the order of the domains established in each component's GeometryAttributeProviders.

Definition at line 286 of file attribute_access.cc.

References BLI_assert_unreachable, Corner, Curve, Edge, Face, Instance, Layer, and Point.

Referenced by attribute_domain_highest_priority().

◆ attribute_filter_from_skip_ref() [1/2]

template<typename StringT>
auto blender::bke::attribute_filter_from_skip_ref ( const Set< StringT > & skip)
inline

◆ attribute_filter_from_skip_ref() [2/2]

◆ attribute_filter_with_skip_ref() [1/2]

template<typename StringT>
auto blender::bke::attribute_filter_with_skip_ref ( AttributeFilter filter,
const Set< StringT > & skip )
inline

◆ attribute_filter_with_skip_ref() [2/2]

◆ attribute_init_to_data()

◆ attribute_is_builtin_on_component_type()

◆ attribute_kind_matches()

bool blender::bke::attribute_kind_matches ( const AttributeMetaData meta_data,
const AttrDomain domain,
const bke::AttrType data_type )
static

◆ attribute_legacy_convert_customdata_to_storage()

◆ attribute_name_is_anonymous()

bool blender::bke::attribute_name_is_anonymous ( const StringRef name)
inline

Checks if the attribute name has the .a_ prefix which indicates that it is an anonymous attribute. I.e. it is just internally used by Blender and the name should not be exposed to the user.

Use hash_to_anonymous_attribute_name to generate names for anonymous attributes.

Definition at line 24 of file BKE_anonymous_attribute_id.hh.

References name.

Referenced by blender::ed::greasepencil::apply_eval_grease_pencil_data(), blender::bke::AttributeFieldInput::AttributeFieldInput(), blender::nodes::node_geo_attribute_capture_cc::clean_unused_attributes(), CustomData_blend_write_prepare(), CustomData_layer_is_anonymous(), CustomData_number_of_anonymous_layers(), blender::io::usd::USDPointInstancerWriter::do_write(), blender::nodes::LazyFunctionForExtractingReferenceSet::execute_impl(), blender::bke::ProcessAllAttributeExceptAnonymous::filter(), blender::nodes::NodeAttributeFilter::filter(), blender::geometry::gather_curve_attributes_to_interpolate(), blender::nodes::geo_eval_log::GeometryInfoLog::GeometryInfoLog(), get_blender_uv_names(), blender::bke::compare_geometry::ignored_attribute(), blender::io::csv::import_csv_as_pointcloud(), blender::geometry::interpolate_attribute_to_curves(), blender::io::ply::load_custom_attributes(), mesh_ensure_default_color_attribute_on_add(), blender::nodes::node_geo_input_named_attribute_cc::node_geo_exec(), blender::nodes::node_geo_store_named_attribute_cc::node_geo_exec(), blender::bke::MutableAttributeAccessor::remove_anonymous(), blender::nodes::node_geo_remove_attribute_cc::remove_attributes_recursive(), blender::ed::curves::resize_curves(), and blender::bke::bake::serialize_attributes().

◆ attribute_reader_matches_array_state()

template<typename T>
bool blender::bke::attribute_reader_matches_array_state ( const ArrayState< T > & array_state,
const AttributeReader< T > & attr )

◆ attribute_reader_to_array_state()

template<typename T>
ArrayState< T > blender::bke::attribute_reader_to_array_state ( const AttributeReader< T > & attr)

◆ attribute_storage_blend_write_prepare()

void blender::bke::attribute_storage_blend_write_prepare ( AttributeStorage & data,
AttributeStorage::BlendWriteData & write_data )

◆ attribute_to_reader()

◆ attribute_to_writer()

◆ attribute_type_to_cpp_type()

const CPPType & blender::bke::attribute_type_to_cpp_type ( AttrType type)

◆ b_bone_deform()

template<typename MixerT>
void blender::bke::b_bone_deform ( const bPoseChannel & pchan,
const float3 & co,
const float weight,
MixerT & mixer )
static

Definition at line 201 of file armature_deform.cc.

References BKE_pchan_bbone_deform_segment_index(), and blend().

Referenced by dist_bone_deform(), and pchan_bone_deform().

◆ bit_vector_with_reset_bits_or_empty()

void blender::bke::bit_vector_with_reset_bits_or_empty ( const Span< int > indices_to_reset,
const int indexed_elems_num,
BitVector<> & r_bits,
int & r_count )
static

◆ BKE_action_find_fcurves_with_bones() [1/2]

void blender::bke::BKE_action_find_fcurves_with_bones ( bAction * action,
blender::animrig::slot_handle_t slot_handle,
FoundFCurveCallback callback )

Calls callback for every fcurve in an action slot that targets any bone.

Parameters
slot_handleonly FCurves from the given action slot are visited.

Definition at line 21 of file action_bones.cc.

References BKE_action_find_fcurves_with_bones().

Referenced by BKE_action_find_fcurves_with_bones(), pose_backup_create(), and poselib_keytag_pose().

◆ BKE_action_find_fcurves_with_bones() [2/2]

void blender::bke::BKE_action_find_fcurves_with_bones ( const bAction * action,
blender::animrig::slot_handle_t slot_handle,
FoundFCurveCallbackConst callback )

◆ BKE_armature_find_selected_bone_names()

BoneNameSet blender::bke::BKE_armature_find_selected_bone_names ( const bArmature * armature)

◆ BKE_armature_find_selected_bones()

SelectedBonesResult blender::bke::BKE_armature_find_selected_bones ( const bArmature * armature,
SelectedBoneCallback callback )

◆ BKE_pose_channel_find_selected_names()

BoneNameSet blender::bke::BKE_pose_channel_find_selected_names ( const Object * object)

◆ bool_to_byte_color()

ColorGeometry4b blender::bke::bool_to_byte_color ( const bool & a)
static

Definition at line 423 of file type_conversions.cc.

References bool_to_color(), and blender::color::encode().

◆ bool_to_color()

ColorGeometry4f blender::bke::bool_to_color ( const bool & a)
static

Definition at line 419 of file type_conversions.cc.

Referenced by bool_to_byte_color().

◆ bool_to_float()

float blender::bke::bool_to_float ( const bool & a)
static

Definition at line 387 of file type_conversions.cc.

◆ bool_to_float2()

float2 blender::bke::bool_to_float2 ( const bool & a)
static

Definition at line 407 of file type_conversions.cc.

◆ bool_to_float3()

float3 blender::bke::bool_to_float3 ( const bool & a)
static

Definition at line 411 of file type_conversions.cc.

◆ bool_to_float4()

float4 blender::bke::bool_to_float4 ( const bool & a)
static

Definition at line 415 of file type_conversions.cc.

◆ bool_to_int()

int32_t blender::bke::bool_to_int ( const bool & a)
static

Definition at line 395 of file type_conversions.cc.

◆ bool_to_int2()

int2 blender::bke::bool_to_int2 ( const bool & a)
static

Definition at line 403 of file type_conversions.cc.

◆ bool_to_int8()

int8_t blender::bke::bool_to_int8 ( const bool & a)
static

Definition at line 391 of file type_conversions.cc.

◆ bool_to_short2()

short2 blender::bke::bool_to_short2 ( const bool & a)
static

Definition at line 399 of file type_conversions.cc.

◆ build_mesh_positions()

void blender::bke::build_mesh_positions ( const CurvesInfo & curves_info,
const ResultOffsets & offsets,
const VArray< float > & scales,
Vector< std::byte > & eval_buffer,
Mesh & mesh )
static

◆ build_offsets()

template<typename CountFn>
void blender::bke::build_offsets ( MutableSpan< int > offsets,
const CountFn & count_fn )

◆ build_pbvh_for_dynamic_topology()

std::unique_ptr< pbvh::Tree > blender::bke::build_pbvh_for_dynamic_topology ( Object * ob)
static

◆ build_pbvh_from_ccg()

std::unique_ptr< pbvh::Tree > blender::bke::build_pbvh_from_ccg ( Object * ob,
SubdivCCG & subdiv_ccg )
static

◆ build_pbvh_from_regular_mesh()

std::unique_ptr< pbvh::Tree > blender::bke::build_pbvh_from_regular_mesh ( Object * ob,
const Mesh * me_eval_deform )
static

◆ build_point_matrix()

◆ build_socket_indices()

VectorSet< const bNodeSocket * > blender::bke::build_socket_indices ( const Span< const bNode * > nodes)
static

Definition at line 2189 of file mesh_legacy_convert.cc.

References LISTBASE_FOREACH, and result.

Referenced by is_auto_smooth_node_tree().

◆ build_vertex_groups_for_leaves()

void blender::bke::build_vertex_groups_for_leaves ( const int verts_num,
const OffsetIndices< int > faces,
const Span< int > corner_verts,
Vector< NonContiguousGroup > & groups )
static

◆ builtin_attributes() [1/2]

const auto & blender::bke::builtin_attributes ( )
static

◆ builtin_attributes() [2/2]

◆ bvhtree_from_mesh_corner_tris_ex()

BVHTreeFromMesh blender::bke::bvhtree_from_mesh_corner_tris_ex ( Span< float3 > vert_positions,
OffsetIndices< int > faces,
Span< int > corner_verts,
Span< int3 > corner_tris,
const IndexMask & faces_mask )

Builds a BVH-tree where nodes are the triangle faces (#Mesh::corner_tris()) of the given mesh.

Definition at line 556 of file bvhutils.cc.

References create_tree_from_tris(), create_tris_tree_data(), and faces.

Referenced by BKE_mesh_remap_calc_loops_from_mesh(), and bvhtree_from_mesh_tris_init().

◆ bvhtree_from_mesh_edges_ex()

BVHTreeFromMesh blender::bke::bvhtree_from_mesh_edges_ex ( Span< float3 > vert_positions,
Span< int2 > edges,
const IndexMask & edges_mask )

Builds a BVH-tree where nodes are the given edges.

Definition at line 475 of file bvhutils.cc.

References create_edges_tree_data(), and create_tree_from_edges().

Referenced by bvhtree_from_mesh_edges_init().

◆ bvhtree_from_mesh_edges_init()

BVHTreeFromMesh blender::bke::bvhtree_from_mesh_edges_init ( const Mesh & mesh,
const IndexMask & edges_mask )

Build a BVH-tree containing the given edges.

Definition at line 793 of file bvhutils.cc.

References bvhtree_from_mesh_edges_ex(), and blender::index_mask::IndexMask::size().

Referenced by blender::nodes::node_geo_proximity_cc::ProximityFunction::init_for_mesh().

◆ bvhtree_from_mesh_tris_init()

BVHTreeFromMesh blender::bke::bvhtree_from_mesh_tris_init ( const Mesh & mesh,
const IndexMask & faces_mask )

◆ bvhtree_from_mesh_verts_ex()

BVHTreeFromMesh blender::bke::bvhtree_from_mesh_verts_ex ( Span< float3 > vert_positions,
const IndexMask & verts_mask )

Builds a BVH-tree where nodes are the given vertices.

Definition at line 450 of file bvhutils.cc.

References create_tree_from_verts(), and create_verts_tree_data().

Referenced by BKE_mesh_remap_calc_loops_from_mesh(), and bvhtree_from_mesh_verts_init().

◆ bvhtree_from_mesh_verts_init()

BVHTreeFromMesh blender::bke::bvhtree_from_mesh_verts_init ( const Mesh & mesh,
const IndexMask & verts_mask )

Build a BVH-tree containing the given vertices.

Definition at line 801 of file bvhutils.cc.

References bvhtree_from_mesh_verts_ex(), and blender::index_mask::IndexMask::size().

Referenced by blender::nodes::node_geo_proximity_cc::ProximityFunction::init_for_mesh().

◆ bvhtree_from_pointcloud_get()

◆ bvhtree_new_common()

std::unique_ptr< BVHTree, BVHTreeDeleter > blender::bke::bvhtree_new_common ( int elems_num)
static

◆ bvhtree_ray_tri_intersection()

float blender::bke::bvhtree_ray_tri_intersection ( const BVHTreeRay * ray,
float m_dist,
const float v0[3],
const float v1[3],
const float v2[3] )

◆ bvhtree_sphereray_tri_intersection()

float blender::bke::bvhtree_sphereray_tri_intersection ( const BVHTreeRay * ray,
float radius,
float m_dist,
const float v0[3],
const float v1[3],
const float v2[3] )

◆ byte_color_to_bool()

◆ byte_color_to_color()

ColorGeometry4f blender::bke::byte_color_to_color ( const ColorGeometry4b & a)
static

Definition at line 505 of file type_conversions.cc.

References blender::color::decode().

◆ byte_color_to_float()

float blender::bke::byte_color_to_float ( const ColorGeometry4b & a)
static

Definition at line 473 of file type_conversions.cc.

References color_to_float(), and blender::color::decode().

◆ byte_color_to_float2()

float2 blender::bke::byte_color_to_float2 ( const ColorGeometry4b & a)
static

Definition at line 493 of file type_conversions.cc.

References color_to_float2(), and blender::color::decode().

◆ byte_color_to_float3()

float3 blender::bke::byte_color_to_float3 ( const ColorGeometry4b & a)
static

Definition at line 497 of file type_conversions.cc.

References color_to_float3(), and blender::color::decode().

◆ byte_color_to_float4()

float4 blender::bke::byte_color_to_float4 ( const ColorGeometry4b & a)
static

Definition at line 501 of file type_conversions.cc.

References color_to_float4(), and blender::color::decode().

◆ byte_color_to_int()

int32_t blender::bke::byte_color_to_int ( const ColorGeometry4b & a)
static

Definition at line 477 of file type_conversions.cc.

References color_to_int(), and blender::color::decode().

◆ byte_color_to_int2()

int2 blender::bke::byte_color_to_int2 ( const ColorGeometry4b & a)
static

◆ byte_color_to_int8()

int8_t blender::bke::byte_color_to_int8 ( const ColorGeometry4b & a)
static

Definition at line 489 of file type_conversions.cc.

References color_to_int8(), and blender::color::decode().

◆ byte_color_to_short2()

short2 blender::bke::byte_color_to_short2 ( const ColorGeometry4b & a)
static

◆ calc_edge_centers()

void blender::bke::calc_edge_centers ( const Span< float3 > positions,
const Span< int2 > edges,
MutableSpan< float3 > edge_centers )
static

◆ calc_face_centers()

void blender::bke::calc_face_centers ( const Span< float3 > positions,
const OffsetIndices< int > faces,
const Span< int > corner_verts,
MutableSpan< float3 > face_centers )
static

◆ calculate_evaluated_offsets()

◆ calculate_result_offsets()

◆ calculate_type_counts()

std::array< int, CURVE_TYPES_NUM > blender::bke::calculate_type_counts ( const VArray< int8_t > & types)

◆ call_convert_to_uninitialized_fn() [1/2]

void blender::bke::call_convert_to_uninitialized_fn ( const GVArray & from,
const mf::MultiFunction & fn,
const IndexMask & mask,
GMutableSpan to )
static

◆ call_convert_to_uninitialized_fn() [2/2]

void blender::bke::call_convert_to_uninitialized_fn ( const GVArray & from,
const mf::MultiFunction & fn,
GMutableSpan to )
static

◆ can_read_node_type()

◆ can_simple_adapt_for_single()

bool blender::bke::can_simple_adapt_for_single ( const Mesh & mesh,
const AttrDomain from_domain,
const AttrDomain to_domain )
static

◆ changed_tags() [1/2]

const auto & blender::bke::changed_tags ( )
static

◆ changed_tags() [2/2]

const auto & blender::bke::changed_tags ( )
static

Definition at line 27 of file pointcloud_attributes.cc.

References tag_position_changed(), and tag_radius_changed().

◆ collect_used_previews()

◆ color_to_bool()

bool blender::bke::color_to_bool ( const ColorGeometry4f & a)
static

Definition at line 428 of file type_conversions.cc.

References IMB_colormanagement_get_luminance().

◆ color_to_byte_color()

ColorGeometry4b blender::bke::color_to_byte_color ( const ColorGeometry4f & a)
static

Definition at line 464 of file type_conversions.cc.

References blender::color::encode().

◆ color_to_float()

float blender::bke::color_to_float ( const ColorGeometry4f & a)
static

Definition at line 432 of file type_conversions.cc.

References IMB_colormanagement_get_luminance().

Referenced by byte_color_to_float().

◆ color_to_float2()

◆ color_to_float3()

◆ color_to_float4()

float4 blender::bke::color_to_float4 ( const ColorGeometry4f & a)
static

Definition at line 460 of file type_conversions.cc.

Referenced by byte_color_to_float4().

◆ color_to_int()

int32_t blender::bke::color_to_int ( const ColorGeometry4f & a)
static

Definition at line 436 of file type_conversions.cc.

References IMB_colormanagement_get_luminance().

Referenced by byte_color_to_int(), and color_to_int8().

◆ color_to_int2()

◆ color_to_int8()

int8_t blender::bke::color_to_int8 ( const ColorGeometry4f & a)
static

Definition at line 448 of file type_conversions.cc.

References color_to_int(), and int_to_int8().

Referenced by byte_color_to_int8().

◆ color_to_short2()

◆ compute_local_mesh_groups()

◆ construct_curve_length_gvarray()

VArray< float > blender::bke::construct_curve_length_gvarray ( const CurvesGeometry & curves,
const AttrDomain domain )
static

◆ convert_collection_to_instances()

◆ convert_storage_to_customdata()

◆ copy_attributes()

◆ copy_attributes_group_to_group()

void blender::bke::copy_attributes_group_to_group ( AttributeAccessor src_attributes,
AttrDomain src_domain,
AttrDomain dst_domain,
const AttributeFilter & attribute_filter,
OffsetIndices< int > src_offsets,
OffsetIndices< int > dst_offsets,
const IndexMask & selection,
MutableAttributeAccessor dst_attributes )

◆ copy_curve_domain_attribute_to_mesh()

◆ copy_curve_selection_custom_knots()

◆ copy_indices_to_offset_ranges()

template<typename T>
void blender::bke::copy_indices_to_offset_ranges ( const VArray< T > & src,
const Span< int > curve_indices,
const OffsetIndices< int > mesh_offsets,
MutableSpan< T > dst )
static

◆ copy_main_point_data_to_mesh_edges()

template<typename T>
void blender::bke::copy_main_point_data_to_mesh_edges ( const Span< T > src,
const int profile_point_num,
const int main_segment_num,
const int profile_segment_num,
MutableSpan< T > dst )
static

◆ copy_main_point_data_to_mesh_faces()

template<typename T>
void blender::bke::copy_main_point_data_to_mesh_faces ( const Span< T > src,
const int main_segment_num,
const int profile_segment_num,
MutableSpan< T > dst )
static

◆ copy_main_point_data_to_mesh_verts()

template<typename T>
void blender::bke::copy_main_point_data_to_mesh_verts ( const Span< T > src,
const int profile_point_num,
MutableSpan< T > dst )
static

◆ copy_main_point_domain_attribute_to_mesh()

◆ copy_point_selection_custom_knots()

◆ copy_profile_point_data_to_mesh_edges()

template<typename T>
void blender::bke::copy_profile_point_data_to_mesh_edges ( const Span< T > src,
const int main_segment_num,
MutableSpan< T > dst )
static

◆ copy_profile_point_data_to_mesh_faces()

template<typename T>
void blender::bke::copy_profile_point_data_to_mesh_faces ( const Span< T > src,
const int main_segment_num,
const int profile_segment_num,
MutableSpan< T > dst )
static

◆ copy_profile_point_data_to_mesh_verts()

template<typename T>
void blender::bke::copy_profile_point_data_to_mesh_verts ( const Span< T > src,
const int main_point_num,
MutableSpan< T > dst )
static

◆ copy_profile_point_domain_attribute_to_mesh()

void blender::bke::copy_profile_point_domain_attribute_to_mesh ( const CurvesInfo & curves_info,
const ResultOffsets & offsets,
const AttrDomain dst_domain,
const GSpan src_all,
GMutableSpan dst_all )
static

◆ copy_with_checked_indices() [1/2]

◆ copy_with_checked_indices() [2/2]

template<typename T>
void blender::bke::copy_with_checked_indices ( const VArray< T > & src,
const VArray< int > & indices,
const IndexMask & mask,
MutableSpan< T > dst )

◆ cpp_type_to_attribute_type()

AttrType blender::bke::cpp_type_to_attribute_type ( const CPPType & type)

Definition at line 72 of file attribute_access.cc.

References BLI_assert_unreachable, Bool, ColorByte, ColorFloat, Float, Float2, Float3, Float4x4, Int16_2D, Int32, Int32_2D, Int8, blender::CPPType::is(), Quaternion, and String.

Referenced by blender::bke::MutableAttributeAccessor::add(), bke_attribute_copy_if_exists(), BKE_attribute_duplicate(), copy_main_point_domain_attribute_to_mesh(), blender::ed::curves::set_selection_domain::curves_set_selection_domain_exec(), blender::ed::greasepencil::ensure_selection_domain(), blender::draw::extract_attribute(), blender::draw::extract_attribute_subdiv(), gather_attributes(), blender::bke::AttributeIter::get(), get_mutable_attribute(), get_varray_attribute(), blender::bke::AttributeFieldInput::get_varray_for_context(), blender::nodes::node_geo_tool_selection_cc::EditSelectionFieldInput::get_varray_for_context(), blender::nodes::node_geo_tool_selection_cc::SculptSelectionFieldInput::get_varray_for_context(), blender::nodes::LazyFunctionForReduceForeachGeometryElement::handle_main_items_and_geometry(), blender::io::csv::import_csv_as_pointcloud(), blender::ed::mesh::join_normals(), blender::bke::AttributeAccessor::lookup(), blender::bke::MutableAttributeAccessor::lookup_or_add_for_write(), blender::geometry::preprocess_meshes(), blender::bke::MutableAttributeAccessor::rename(), blender::geometry::retrieve_attribute_spans(), blender::geometry::retrieve_attribute_spans(), blender::ed::geometry::rna_property_for_attribute_type_set_value(), blender::ed::sculpt_paint::select_grow::select_grow_modal(), blender::ed::curves::set_attribute_invoke(), blender::ed::pointcloud::set_attribute_invoke(), blender::nodes::store_computed_output_attributes(), blender::nodes::node_geo_dual_mesh_cc::transfer_attributes(), try_add_shared_field_attribute(), try_capture_fields_on_geometry(), try_sharing_point_data(), blender::draw::pbvh::update_generic_attribute_mesh(), and vertex_paint_from_weight().

◆ cpp_type_to_custom_data_type()

◆ create_attribute_providers_for_mesh()

◆ create_auto_smooth_modifier()

◆ create_edges_tree_data() [1/2]

BVHTreeFromMesh blender::bke::create_edges_tree_data ( const BVHTree * tree,
const Span< float3 > positions,
const Span< int2 > edges )
static

◆ create_edges_tree_data() [2/2]

BVHTreeFromMesh blender::bke::create_edges_tree_data ( std::unique_ptr< BVHTree, BVHTreeDeleter > tree,
const Span< float3 > positions,
const Span< int2 > edges )
static

Definition at line 382 of file bvhutils.cc.

References create_edges_tree_data(), data, and tree.

◆ create_implicit_conversions()

DataTypeConversions blender::bke::create_implicit_conversions ( )
static

Definition at line 528 of file type_conversions.cc.

References add_implicit_conversion().

Referenced by get_implicit_type_conversions().

◆ create_legacy_faces_tree_data()

BVHTreeFromMesh blender::bke::create_legacy_faces_tree_data ( const BVHTree * tree,
const Span< float3 > positions,
const MFace * face )
static

Definition at line 391 of file bvhutils.cc.

References data, mesh_faces_nearest_point(), mesh_faces_spherecast(), and tree.

◆ create_orco_mesh()

◆ create_pointcloud_tree_data() [1/2]

BVHTreeFromPointCloud blender::bke::create_pointcloud_tree_data ( const BVHTree * tree,
const Span< float3 > positions )
static

Definition at line 825 of file bvhutils.cc.

References data, and tree.

Referenced by bvhtree_from_pointcloud_get().

◆ create_pointcloud_tree_data() [2/2]

BVHTreeFromPointCloud blender::bke::create_pointcloud_tree_data ( std::unique_ptr< BVHTree, BVHTreeDeleter > tree,
const Span< float3 > positions )
static

Definition at line 834 of file bvhutils.cc.

References create_points_tree_data(), data, and tree.

◆ create_points_tree_data()

BVHTreeFromPointCloud blender::bke::create_points_tree_data ( const BVHTree * tree,
const Span< float3 > positions )
static

Definition at line 815 of file bvhutils.cc.

References data, and tree.

Referenced by create_pointcloud_tree_data().

◆ create_tree_from_edges()

std::unique_ptr< BVHTree, BVHTreeDeleter > blender::bke::create_tree_from_edges ( const Span< float3 > positions,
const Span< int2 > edges,
const IndexMask & edges_mask )
static

◆ create_tree_from_legacy_faces()

std::unique_ptr< BVHTree, BVHTreeDeleter > blender::bke::create_tree_from_legacy_faces ( const Span< float3 > positions,
const Span< MFace > faces )
static

◆ create_tree_from_tris() [1/2]

◆ create_tree_from_tris() [2/2]

std::unique_ptr< BVHTree, BVHTreeDeleter > blender::bke::create_tree_from_tris ( const Span< float3 > positions,
const Span< int > corner_verts,
const Span< int3 > corner_tris )
static

◆ create_tree_from_verts()

std::unique_ptr< BVHTree, BVHTreeDeleter > blender::bke::create_tree_from_verts ( const Span< float3 > positions,
const IndexMask & verts_mask )
static

◆ create_tris_tree_data() [1/2]

BVHTreeFromMesh blender::bke::create_tris_tree_data ( const BVHTree * tree,
const Span< float3 > positions,
const Span< int > corner_verts,
const Span< int3 > corner_tris )
static

◆ create_tris_tree_data() [2/2]

BVHTreeFromMesh blender::bke::create_tris_tree_data ( std::unique_ptr< BVHTree, BVHTreeDeleter > tree,
const Span< float3 > positions,
const Span< int > corner_verts,
const Span< int3 > corner_tris )
static

Definition at line 419 of file bvhutils.cc.

References create_tris_tree_data(), data, and tree.

◆ create_verts_tree_data() [1/2]

BVHTreeFromMesh blender::bke::create_verts_tree_data ( const BVHTree * tree,
const Span< float3 > positions )
static

Definition at line 349 of file bvhutils.cc.

References data, mesh_verts_spherecast(), and tree.

Referenced by bvhtree_from_mesh_verts_ex(), and create_verts_tree_data().

◆ create_verts_tree_data() [2/2]

BVHTreeFromMesh blender::bke::create_verts_tree_data ( std::unique_ptr< BVHTree, BVHTreeDeleter > tree,
const Span< float3 > positions )
static

Definition at line 361 of file bvhutils.cc.

References create_verts_tree_data(), data, and tree.

◆ curve_legacy_to_curves() [1/2]

◆ curve_legacy_to_curves() [2/2]

Curves * blender::bke::curve_legacy_to_curves ( const Curve & curve_legacy,
const ListBase & nurbs_list )

◆ curve_normal_point_domain()

Array< float3 > blender::bke::curve_normal_point_domain ( const CurvesGeometry & curves)
static

◆ curve_normals_varray()

◆ curve_to_mesh_sweep()

Mesh * blender::bke::curve_to_mesh_sweep ( const CurvesGeometry & main,
const CurvesGeometry & profile,
const VArray< float > & scales,
bool fill_caps,
const bke::AttributeFilter & attribute_filter = {} )

Extrude all splines in the profile curve along the path of every spline in the curve input. Transfer curve attributes to the mesh.

Note
Normal calculation is by far the slowest part of calculations relating to the result mesh. Although it would be a sensible decision to use the better topology information available while generating the mesh to also generate the normals, that work may wasted if the output mesh is changed anyway in a way that affects the normals. So currently this code uses the safer / simpler solution of deferring normal calculation to the rest of Blender.

Definition at line 836 of file curve_to_mesh_convert.cc.

References blender::bke::ResultOffsets::any_single_point_main, blender::bke::ResultOffsets::any_single_point_profile, blender::bke::CurvesGeometry::attributes(), BKE_mesh_new_nomain(), build_mesh_positions(), calculate_result_offsets(), blender::bke::AttributeAccessor::contains(), copy_curve_domain_attribute_to_mesh(), copy_main_point_domain_attribute_to_mesh(), copy_profile_point_domain_attribute_to_mesh(), Curve, curve_to_mesh_sweep(), CustomData_free_layer_named(), blender::bke::AttributeIter::data_type, blender::bke::AttributeIter::domain, Edge, blender::bke::ResultOffsets::edge, blender::bke::CombinationInfo::edge_range, blender::bke::CurvesGeometry::ensure_can_interpolate_to_evaluated(), evaluate_attribute(), Face, blender::bke::ResultOffsets::face, blender::bke::CombinationInfo::face_range, fill_mesh_topology(), blender::bke::GSpanAttributeWriter::finish(), blender::bke::SpanAttributeWriter< T >::finish(), blender::bke::AttributeAccessor::foreach_attribute(), foreach_curve_combination(), blender::bke::AttributeIter::get(), get_attribute_domain_for_mesh(), get_curves_info(), has_caps(), Array< T, InlineBufferCapacity, Allocator >::last(), blender::bke::MutableAttributeAccessor::lookup_or_add_for_write_only_span(), blender::bke::MutableAttributeAccessor::lookup_or_add_for_write_span(), blender::bke::ResultOffsets::loop, blender::bke::CombinationInfo::loop_range, main, blender::bke::CombinationInfo::main_cyclic, blender::bke::ResultOffsets::main_indices, blender::bke::CombinationInfo::main_points, blender::bke::CombinationInfo::main_segment_num, blender::bke::AttributeIter::name, Point, blender::bke::CombinationInfo::profile_cyclic, blender::bke::ResultOffsets::profile_indices, blender::bke::CombinationInfo::profile_points, blender::bke::CombinationInfo::profile_segment_num, should_add_attribute_to_mesh(), blender::IndexRange::size(), blender::bke::GSpanAttributeWriter::span, blender::bke::SpanAttributeWriter< T >::span, blender::IndexRange::start(), blender::bke::ResultOffsets::vert, blender::bke::CombinationInfo::vert_range, and write_sharp_bezier_edges().

Referenced by blender::nodes::node_geo_curve_to_mesh_cc::curve_to_mesh(), curve_to_mesh_sweep(), and curve_to_wire_mesh().

◆ curve_to_wire_mesh()

Mesh * blender::bke::curve_to_wire_mesh ( const CurvesGeometry & curve,
const bke::AttributeFilter & attribute_filter = {} )

◆ curve_type_from_legacy()

CurveType blender::bke::curve_type_from_legacy ( const short type)
static

◆ curves_convert_customdata_to_storage()

◆ curves_copy_curve_selection()

CurvesGeometry blender::bke::curves_copy_curve_selection ( const CurvesGeometry & curves,
const IndexMask & curves_to_copy,
const AttributeFilter & attribute_filter )

Definition at line 1545 of file curves_geometry.cc.

References blender::bke::CurvesGeometry::attributes_for_write(), BKE_defgroup_copy_list(), copy_curve_selection_custom_knots(), Curve, curves_copy_curve_selection(), blender::bke::CurvesGeometry::curves_num(), gather_attributes(), gather_attributes_group_to_group(), blender::offset_indices::gather_selected_offsets(), blender::bke::CurvesGeometry::offsets_for_write(), Point, blender::bke::CurvesGeometry::remove_attributes_based_on_types(), blender::bke::CurvesGeometry::resize(), blender::index_mask::IndexMask::size(), blender::offset_indices::OffsetIndices< T >::total_size(), blender::bke::CurvesGeometry::update_curve_types(), and CurvesGeometry::vertex_group_names.

Referenced by curves_copy_curve_selection(), blender::duplicate_strokes(), blender::ed::sculpt_paint::DeleteOperationExecutor::execute(), blender::ed::sculpt_paint::DensitySubtractOperationExecutor::execute(), blender::ed::greasepencil::grease_pencil_copy_strokes_exec(), blender::ed::greasepencil::grease_pencil_move_to_layer_exec(), blender::ed::greasepencil::grease_pencil_separate_layer(), blender::ed::greasepencil::grease_pencil_separate_material(), blender::modify_drawing(), blender::modify_drawing(), blender::modify_drawing(), blender::bke::CurvesGeometry::remove_curves(), blender::geometry::separate_curves_selection(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::stroke_eraser(), and blender::ed::sculpt_paint::greasepencil::trim_stroke_ends().

◆ curves_copy_parameters()

◆ curves_copy_point_selection()

◆ curves_new_no_attributes()

CurvesGeometry blender::bke::curves_new_no_attributes ( int point_num,
int curve_num )

◆ curves_new_nomain() [1/2]

Curves * blender::bke::curves_new_nomain ( CurvesGeometry curves)

Definition at line 311 of file blenkernel/intern/curves.cc.

References BKE_id_new_nomain(), and Curves::geometry.

◆ curves_new_nomain() [2/2]

Curves * blender::bke::curves_new_nomain ( int points_num,
int curves_num )

Definition at line 292 of file blenkernel/intern/curves.cc.

References BKE_id_new_nomain(), BLI_assert, and Curves::geometry.

Referenced by blender::ed::sculpt_paint::greasepencil::add_strokes_to_drawing(), blender::ed::curves::append_primitive_curve(), blender::ed::sculpt_paint::greasepencil::append_stroke_to_multiframe_drawings(), BKE_curves_data_update(), blender::ed::greasepencil::clipboard_paste_strokes_ex(), blender::create_array_copies(), blender::io::obj::CurveFromGeometry::create_curve(), blender::create_mirror_copies(), curve_legacy_to_curves(), blender::nodes::node_geo_points_to_curves_cc::curves_from_points(), curves_new_nomain_single(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_curves(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_points_curve(), blender::duplicate_strokes(), blender::nodes::node_geo_edge_paths_to_curves_cc::edge_paths_to_curves_convert(), blender::geometry::execute_realize_curve_tasks(), blender::geometry::extract_curves(), blender::nodes::node_geo_interpolate_curves_cc::generate_interpolated_curves(), blender::nodes::node_geo_curve_trim_cc::geometry_set_curve_trim(), blender::ed::greasepencil::grease_pencil_copy_strokes_exec(), blender::ed::greasepencil::grease_pencil_move_to_layer_exec(), blender::ed::greasepencil::grease_pencil_outline_exec(), blender::ed::greasepencil::join_curves(), blender::geometry::join_curves(), MOD_lineart_gpencil_generate_v3(), blender::modify_drawing(), blender::nodes::node_geo_curve_fillet_cc::node_geo_exec(), blender::nodes::node_geo_curve_resample_cc::node_geo_exec(), blender::nodes::node_geo_curve_spline_type_cc::node_geo_exec(), blender::nodes::node_geo_grease_pencil_to_curves_cc::node_geo_exec(), blender::nodes::node_geo_mesh_to_curve_cc::node_geo_exec(), blender::ed::sculpt_paint::greasepencil::outline_stroke(), blender::ed::greasepencil::paste_all_strokes_from_clipboard(), blender::geometry::reorder_curves(), blender::geometry::separate_geometry(), blender::nodes::node_geo_curve_subdivide_cc::subdivide_curves(), blender::ed::sculpt_paint::greasepencil::trim_stroke_ends(), and blender::bke::bake::try_load_curves().

◆ curves_new_nomain_single()

◆ curves_normals_point_domain_calc()

void blender::bke::curves_normals_point_domain_calc ( const CurvesGeometry & curves,
MutableSpan< float3 > normals )

◆ custom_data_type_to_attr_type()

std::optional< AttrType > blender::bke::custom_data_type_to_attr_type ( eCustomDataType data_type)

Convert a custom data type to an attribute type. May return std::nullopt if the custom data type isn't used at runtime, is not a generic type that can be stored as an attribute, or is only used for BMesh.

Definition at line 21 of file attribute_legacy_convert.cc.

References BLI_assert_unreachable, Bool, CD_AUTO_FROM_NAME, CD_BM_ELEM_PYPTR, CD_CLOTH_ORCO, CD_GRID_PAINT_MASK, CD_MCOL, CD_MDEFORMVERT, CD_MDISPS, CD_MFACE, CD_MLOOPTANGENT, CD_MTFACE, CD_MVERT_SKIN, CD_NORMAL, CD_NUMTYPES, CD_ORCO, CD_ORIGINDEX, CD_ORIGSPACE, CD_ORIGSPACE_MLOOP, CD_PROP_BOOL, CD_PROP_BYTE_COLOR, CD_PROP_COLOR, CD_PROP_FLOAT, CD_PROP_FLOAT2, CD_PROP_FLOAT3, CD_PROP_FLOAT4X4, CD_PROP_INT16_2D, CD_PROP_INT32, CD_PROP_INT32_2D, CD_PROP_INT8, CD_PROP_QUATERNION, CD_PROP_STRING, CD_SHAPE_KEYINDEX, CD_SHAPEKEY, CD_TANGENT, CD_TESSLOOPNORMAL, ColorByte, ColorFloat, Float, Float2, Float3, Float4x4, Int16_2D, Int32, Int32_2D, Int8, Quaternion, and String.

Referenced by attribute_legacy_convert_customdata_to_storage(), BKE_attribute_new(), BKE_attribute_rename(), BM_data_layer_lookup(), blender::bke::attribute_accessor_functions::builtin_domain_and_type(), CustomData_blend_write_prepare(), blender::bke::attribute_accessor_functions::foreach_attribute(), blender::bke::CustomDataAttributeProvider::foreach_attribute(), blender::ed::geometry::geometry_attribute_add_exec(), blender::ed::geometry::geometry_attribute_convert_exec(), blender::ed::geometry::geometry_color_attribute_convert_exec(), blender::bke::bake::load_attributes(), blender::ed::mesh::set_attribute::mesh_set_attribute_exec(), blender::ed::mesh::set_attribute::mesh_set_attribute_invoke(), blender::ed::mesh::set_attribute::mesh_set_attribute_ui(), blender::nodes::node_geo_store_named_attribute_cc::node_geo_exec(), and blender::ed::sculpt_paint::undo::set_active_layer().

◆ custom_data_type_to_cpp_type()

◆ custom_data_type_to_socket_type()

◆ custom_data_type_to_volume_grid_type()

std::optional< VolumeGridType > blender::bke::custom_data_type_to_volume_grid_type ( eCustomDataType type)

◆ defer_free_node_type()

void blender::bke::defer_free_node_type ( bNodeType * ntype)
static

◆ defer_free_socket_type()

void blender::bke::defer_free_socket_type ( bNodeSocketType * stype)
static

◆ defer_free_tree_type()

void blender::bke::defer_free_tree_type ( bNodeTreeType * tree_type)
static

Definition at line 2312 of file node.cc.

References blender::ResourceScope::add_destruct_call().

Referenced by ntree_free_type().

◆ direct_link_node_socket()

◆ direct_link_node_socket_default_value()

◆ direct_link_node_socket_storage()

void blender::bke::direct_link_node_socket_storage ( BlendDataReader * reader,
const bNode * node,
bNodeSocket * sock )
static

◆ discover_tree_zones()

◆ dist_bone_deform()

template<typename MixerT>
float blender::bke::dist_bone_deform ( const bPoseChannel & pchan,
const float3 & co,
MixerT & mixer )
static

◆ editbmesh_build_data()

◆ editbmesh_calc_modifiers()

void blender::bke::editbmesh_calc_modifiers ( Depsgraph & depsgraph,
const Scene & scene,
Object & ob,
const CustomData_MeshMasks & dataMask,
Mesh ** r_cage,
Mesh ** r_final,
GeometrySet ** r_geometry_set )
static

Definition at line 753 of file mesh_data_update.cc.

References add_orco_mesh(), ASSERT_IS_VALID_MESH_INPUT, ASSERT_IS_VALID_MESH_OUTPUT, BKE_id_free(), BKE_mesh_copy_for_eval(), BKE_mesh_wrapper_ensure_mdata(), BKE_mesh_wrapper_from_editmesh(), BKE_mesh_wrapper_tag_positions_changed(), BKE_modifier_calc_data_masks(), BKE_modifier_deform_verts(), BKE_modifier_deform_vertsEM(), BKE_modifier_get_info(), BKE_modifier_modify_mesh(), BKE_modifiers_clear_errors(), BKE_modifiers_get_cage_index(), BKE_modifiers_get_virtual_modifierlist(), BLI_assert, BLI_linklist_free(), BMEditMesh::bm, CD_MASK_BAREMESH, CD_MASK_ORCO, CD_MASK_ORIGINDEX, CD_MASK_ORIGSPACE_MLOOP, CD_ORCO, CD_ORIGINDEX, CD_ORIGSPACE_MLOOP, CD_SET_DEFAULT, create_orco_mesh(), CustomData_add_layer(), CustomData_get_layer(), CustomData_has_layer(), CustomData_MeshMasks_update(), DAG_EVAL_RENDER, Object::data, ModifierTypeInfo::deform_verts_EM, DEG_get_mode(), depsgraph, BMesh::edata, editbmesh_modifier_is_enabled(), eModifierMode_Editmode, eModifierMode_Realtime, i, CDMaskLink::mask, mask(), mesh_init_origspace(), mesh_set_only_copy(), mesh_wrapper_vert_coords_ensure_for_write(), MOD_APPLY_ORCO, MOD_APPLY_RENDER, MOD_APPLY_USECACHE, Object::modifier_flag, modifier_modify_mesh_and_geometry_set(), CDMaskLink::next, ModifierData::next, OB_MODIFIER_FLAG_ADD_REST_POSITION, OnlyDeform, BMesh::pdata, ModifierTypeInfo::required_data_mask, Mesh::runtime, set_rest_position(), ModifierData::type, ModifierTypeInfo::type, and CustomData_MeshMasks::vmask.

Referenced by editbmesh_build_data().

◆ editbmesh_get_eval_cage()

Mesh * blender::bke::editbmesh_get_eval_cage ( Depsgraph * depsgraph,
const Scene * scene,
Object * obedit,
BMEditMesh * em,
const CustomData_MeshMasks * dataMask )

◆ editbmesh_get_eval_cage_from_orig()

Mesh * blender::bke::editbmesh_get_eval_cage_from_orig ( Depsgraph * depsgraph,
const Scene * scene,
Object * obedit,
const CustomData_MeshMasks * dataMask )

◆ editbmesh_modifier_is_enabled()

◆ evaluate_attribute()

◆ evaluate_generic_data_for_curve()

◆ file_handler_add()

void blender::bke::file_handler_add ( std::unique_ptr< FileHandlerType > file_handler)

Adds a new file_handler to the file_handlers list, also loads all the file extensions from the formatted FileHandlerType.file_extensions_str string to FileHandlerType.file_extensions list.

The new file_handler is expected to have a unique FileHandlerType.idname.

Load all extensions from the string list into the list.

Definition at line 40 of file file_handler.cc.

References BLI_assert, BLI_strchr_or_end(), file_handler_find(), and file_handlers_vector().

Referenced by blender::bke::tests::file_handler_add_test().

◆ file_handler_find()

FileHandlerType * blender::bke::file_handler_find ( StringRef idname)

◆ file_handler_remove()

void blender::bke::file_handler_remove ( FileHandlerType * file_handler)

Removes and frees a specific file_handler from the file_handlers list, the file_handler pointer will be not longer valid for use.

Definition at line 60 of file file_handler.cc.

References file_handlers_vector().

Referenced by blender::bke::tests::TEST().

◆ file_handlers()

◆ file_handlers_poll_file_drop()

blender::Vector< FileHandlerType * > blender::bke::file_handlers_poll_file_drop ( const bContext * C,
const blender::Span< std::string > paths )

Return a vector of file handlers that support any file path in paths and the call to poll_drop returns true. Caller must check if each file handler have a valid import_operator.

Definition at line 68 of file file_handler.cc.

References blender::Vector< T, InlineBufferCapacity, Allocator >::append_non_duplicates(), BLI_path_extension(), BLI_strcaseeq(), C, blender::bke::FileHandlerType::file_extensions, file_handlers(), blender::bke::FileHandlerType::poll_drop, and result.

Referenced by drop_import_file_poll_file_handlers(), and blender::ed::vse::test_single_file_handler_poll().

◆ file_handlers_vector()

Vector< std::unique_ptr< FileHandlerType > > & blender::bke::file_handlers_vector ( )
static

Definition at line 16 of file file_handler.cc.

References file_handlers().

Referenced by file_handler_add(), file_handler_remove(), and file_handlers().

◆ fill_attribute_range_default()

◆ fill_mesh_positions()

void blender::bke::fill_mesh_positions ( const int main_point_num,
const int profile_point_num,
const Span< float3 > main_positions,
const Span< float3 > profile_positions,
const Span< float3 > tangents,
const Span< float3 > normals,
const Span< float > scales,
MutableSpan< float3 > mesh_positions )
static

◆ fill_mesh_topology()

void blender::bke::fill_mesh_topology ( const int vert_offset,
const int edge_offset,
const int face_offset,
const int loop_offset,
const int main_point_num,
const int profile_point_num,
const bool main_cyclic,
const bool profile_cyclic,
const bool fill_caps,
MutableSpan< int2 > edges,
MutableSpan< int > corner_verts,
MutableSpan< int > corner_edges,
MutableSpan< int > face_offsets )
static

◆ find_nearest_corners()

void blender::bke::find_nearest_corners ( const Span< float3 > src_positions,
const OffsetIndices< int > src_faces,
const Span< int > src_corner_verts,
const Span< int > src_tri_faces,
const Span< float3 > dst_positions,
const Span< int > dst_corner_verts,
const Span< int > nearest_vert_tris,
MutableSpan< int > nearest_corners )
static

◆ find_nearest_edges()

void blender::bke::find_nearest_edges ( const Span< float3 > src_positions,
const Span< int2 > src_edges,
const OffsetIndices< int > src_faces,
const Span< int > src_corner_edges,
const Span< int > src_tri_faces,
const Span< float3 > dst_positions,
const Span< int2 > dst_edges,
BVHTreeFromMesh & bvhtree,
MutableSpan< int > nearest_edges )
static

◆ find_nearest_faces()

void blender::bke::find_nearest_faces ( const Span< int > src_tri_faces,
const Span< float3 > dst_positions,
const OffsetIndices< int > dst_faces,
const Span< int > dst_corner_verts,
BVHTreeFromMesh & bvhtree,
MutableSpan< int > nearest_faces )
static

◆ find_nearest_tris()

◆ find_nearest_tris_parallel()

void blender::bke::find_nearest_tris_parallel ( const Span< float3 > positions,
BVHTreeFromMesh & bvhtree,
MutableSpan< int > tris )
static

◆ find_nearest_verts()

void blender::bke::find_nearest_verts ( const Span< float3 > positions,
const Span< int > corner_verts,
const Span< int3 > src_corner_tris,
const Span< float3 > dst_positions,
const Span< int > nearest_vert_tris,
MutableSpan< int > nearest_verts )
static

◆ find_zone_nodes()

◆ flip_corner_data()

template<typename T>
void blender::bke::flip_corner_data ( const OffsetIndices< int > faces,
const IndexMask & face_selection,
MutableSpan< T > data )
static

Definition at line 18 of file mesh_flip_faces.cc.

References data, faces, blender::index_mask::IndexMask::foreach_index(), and i.

Referenced by flip_custom_data_type().

◆ flip_custom_data_type()

template<typename T>
void blender::bke::flip_custom_data_type ( const OffsetIndices< int > faces,
CustomData & corner_data,
const IndexMask & face_selection,
const eCustomDataType data_type )
static

◆ float2_to_bool()

bool blender::bke::float2_to_bool ( const float2 & a)
static

Definition at line 115 of file type_conversions.cc.

References blender::math::is_zero().

◆ float2_to_byte_color()

ColorGeometry4b blender::bke::float2_to_byte_color ( const float2 & a)
static

Definition at line 127 of file type_conversions.cc.

References blender::color::encode(), and float2_to_color().

◆ float2_to_color()

ColorGeometry4f blender::bke::float2_to_color ( const float2 & a)
static

Definition at line 123 of file type_conversions.cc.

Referenced by float2_to_byte_color().

◆ float2_to_float()

float blender::bke::float2_to_float ( const float2 & a)
static

Definition at line 99 of file type_conversions.cc.

Referenced by int2_to_float(), and short2_to_float().

◆ float2_to_float3()

float3 blender::bke::float2_to_float3 ( const float2 & a)
static

Definition at line 91 of file type_conversions.cc.

◆ float2_to_float4()

float4 blender::bke::float2_to_float4 ( const float2 & a)
static

Definition at line 95 of file type_conversions.cc.

◆ float2_to_int()

int blender::bke::float2_to_int ( const float2 & a)
static

Definition at line 103 of file type_conversions.cc.

◆ float2_to_int2()

int2 blender::bke::float2_to_int2 ( const float2 & a)
static

Definition at line 111 of file type_conversions.cc.

◆ float2_to_int8()

int8_t blender::bke::float2_to_int8 ( const float2 & a)
static

Definition at line 119 of file type_conversions.cc.

References float_to_int8().

◆ float2_to_short2()

short2 blender::bke::float2_to_short2 ( const float2 & a)
static

Definition at line 107 of file type_conversions.cc.

◆ float3_to_bool()

bool blender::bke::float3_to_bool ( const float3 & a)
static

Definition at line 132 of file type_conversions.cc.

References blender::math::is_zero().

◆ float3_to_byte_color()

ColorGeometry4b blender::bke::float3_to_byte_color ( const float3 & a)
static

Definition at line 168 of file type_conversions.cc.

References blender::color::encode(), and float3_to_color().

◆ float3_to_color()

ColorGeometry4f blender::bke::float3_to_color ( const float3 & a)
static

Definition at line 164 of file type_conversions.cc.

Referenced by float3_to_byte_color().

◆ float3_to_float()

float blender::bke::float3_to_float ( const float3 & a)
static

Definition at line 140 of file type_conversions.cc.

◆ float3_to_float2()

float2 blender::bke::float3_to_float2 ( const float3 & a)
static

Definition at line 156 of file type_conversions.cc.

◆ float3_to_float4()

float4 blender::bke::float3_to_float4 ( const float3 & a)
static

Definition at line 160 of file type_conversions.cc.

◆ float3_to_int()

int blender::bke::float3_to_int ( const float3 & a)
static

Definition at line 144 of file type_conversions.cc.

◆ float3_to_int2()

int2 blender::bke::float3_to_int2 ( const float3 & a)
static

Definition at line 152 of file type_conversions.cc.

◆ float3_to_int8()

int8_t blender::bke::float3_to_int8 ( const float3 & a)
static

Definition at line 136 of file type_conversions.cc.

References float_to_int8().

◆ float3_to_quaternion()

math::Quaternion blender::bke::float3_to_quaternion ( const float3 & a)
static

Definition at line 172 of file type_conversions.cc.

References blender::math::to_quaternion().

◆ float3_to_short2()

short2 blender::bke::float3_to_short2 ( const float3 & a)
static

Definition at line 148 of file type_conversions.cc.

◆ float4_to_bool()

bool blender::bke::float4_to_bool ( const float4 & a)
static

Definition at line 177 of file type_conversions.cc.

References blender::math::is_zero().

◆ float4_to_byte_color()

ColorGeometry4b blender::bke::float4_to_byte_color ( const float4 & a)
static

Definition at line 213 of file type_conversions.cc.

References blender::color::encode(), and float4_to_color().

◆ float4_to_color()

ColorGeometry4f blender::bke::float4_to_color ( const float4 & a)
static

Definition at line 209 of file type_conversions.cc.

Referenced by float4_to_byte_color().

◆ float4_to_float()

float blender::bke::float4_to_float ( const float4 & a)
static

Definition at line 185 of file type_conversions.cc.

◆ float4_to_float2()

float2 blender::bke::float4_to_float2 ( const float4 & a)
static

Definition at line 201 of file type_conversions.cc.

References blender::VecBase< T, Size >::xy().

◆ float4_to_float3()

float3 blender::bke::float4_to_float3 ( const float4 & a)
static

Definition at line 205 of file type_conversions.cc.

References blender::VecBase< T, Size >::xyz().

◆ float4_to_int()

int blender::bke::float4_to_int ( const float4 & a)
static

Definition at line 189 of file type_conversions.cc.

◆ float4_to_int2()

int2 blender::bke::float4_to_int2 ( const float4 & a)
static

Definition at line 197 of file type_conversions.cc.

◆ float4_to_int8()

int8_t blender::bke::float4_to_int8 ( const float4 & a)
static

Definition at line 181 of file type_conversions.cc.

References float_to_int8().

◆ float4_to_quaternion()

math::Quaternion blender::bke::float4_to_quaternion ( const float4 & a)
static

Definition at line 217 of file type_conversions.cc.

◆ float4_to_short2()

short2 blender::bke::float4_to_short2 ( const float4 & a)
static

Definition at line 193 of file type_conversions.cc.

◆ float4x4_to_quaternion()

math::Quaternion blender::bke::float4x4_to_quaternion ( const float4x4 & a)
static

◆ float_to_bool()

bool blender::bke::float_to_bool ( const float & a)
static

Definition at line 69 of file type_conversions.cc.

◆ float_to_byte_color()

ColorGeometry4b blender::bke::float_to_byte_color ( const float & a)
static

Definition at line 82 of file type_conversions.cc.

References blender::color::encode(), and float_to_color().

◆ float_to_color()

ColorGeometry4f blender::bke::float_to_color ( const float & a)
static

Definition at line 78 of file type_conversions.cc.

Referenced by float_to_byte_color().

◆ float_to_float2()

float2 blender::bke::float_to_float2 ( const float & a)
static

Definition at line 45 of file type_conversions.cc.

◆ float_to_float3()

float3 blender::bke::float_to_float3 ( const float & a)
static

Definition at line 49 of file type_conversions.cc.

◆ float_to_float4()

float4 blender::bke::float_to_float4 ( const float & a)
static

Definition at line 53 of file type_conversions.cc.

◆ float_to_int()

int32_t blender::bke::float_to_int ( const float & a)
static

Definition at line 57 of file type_conversions.cc.

◆ float_to_int2()

int2 blender::bke::float_to_int2 ( const float & a)
static

Definition at line 65 of file type_conversions.cc.

◆ float_to_int8()

int8_t blender::bke::float_to_int8 ( const float & a)
static

Definition at line 73 of file type_conversions.cc.

Referenced by float2_to_int8(), float3_to_int8(), and float4_to_int8().

◆ float_to_quaternion()

math::Quaternion blender::bke::float_to_quaternion ( const float & a)
static

Definition at line 86 of file type_conversions.cc.

References blender::math::to_quaternion().

◆ float_to_short2()

short2 blender::bke::float_to_short2 ( const float & a)
static

Definition at line 61 of file type_conversions.cc.

◆ foreach_curve_combination()

◆ free_batch_cache()

void blender::bke::free_batch_cache ( MeshRuntime & mesh_runtime)
static

◆ free_bvh_caches()

◆ free_localized_node_groups()

void blender::bke::free_localized_node_groups ( bNodeTree * ntree)
static

◆ free_mesh_eval()

void blender::bke::free_mesh_eval ( MeshRuntime & mesh_runtime)
static

◆ gather_attributes() [1/3]

void blender::bke::gather_attributes ( AttributeAccessor src_attributes,
AttrDomain src_domain,
AttrDomain dst_domain,
const AttributeFilter & attribute_filter,
const IndexMask & selection,
MutableAttributeAccessor dst_attributes )

Definition at line 964 of file attribute_access.cc.

References blender::bke::MutableAttributeAccessor::add(), blender::bke::AttributeFilter::allow_skip(), blender::GSpan::data(), blender::bke::AttributeIter::data_type, blender::bke::AttributeIter::domain, blender::bke::AttributeAccessor::domain_size(), blender::bke::GSpanAttributeWriter::finish(), blender::bke::AttributeAccessor::foreach_attribute(), blender::array_utils::gather(), blender::bke::AttributeIter::get(), blender::GVArrayCommon::get_internal_span(), init(), init(), blender::GVArrayCommon::is_span(), blender::bke::MutableAttributeAccessor::lookup_or_add_for_write_only_span(), blender::bke::AttributeIter::name, blender::bke::GAttributeReader::sharing_info, blender::index_mask::IndexMask::size(), blender::bke::GSpanAttributeWriter::span, String, and blender::bke::GAttributeReader::varray.

Referenced by BPy_GeometrySet_get_instances_pointcloud(), blender::geometry::copy_and_reorder_curves(), blender::geometry::copy_and_reorder_instaces(), blender::geometry::copy_and_reorder_mesh_edges(), blender::geometry::copy_and_reorder_mesh_faces(), blender::geometry::copy_and_reorder_mesh_verts(), blender::geometry::copy_and_reorder_points(), copy_attributes(), blender::ed::curves::copy_data_to_geometry(), blender::ed::pointcloud::copy_selection(), blender::geometry::create_curve_from_vert_indices(), blender::create_dashes(), blender::create_envelope_strokes(), blender::nodes::node_geo_points_to_curves_cc::curve_from_points(), curves_copy_curve_selection(), blender::nodes::node_geo_points_to_curves_cc::curves_from_points(), blender::geometry::extract_curves(), blender::geometry::extract_curves_points(), blender::geometry::extract_greasepencil_layer_curves(), blender::geometry::extract_greasepencil_layer_points(), blender::geometry::extract_greasepencil_layers(), blender::geometry::extract_instances(), blender::geometry::extract_pointcloud_points(), blender::ed::curves::pen_tool::extrude_curves(), blender::ed::greasepencil::extrude_grease_pencil_curves(), gather_attributes(), blender::geometry::gather_vert_attributes(), blender::ed::greasepencil::grease_pencil_separate_layer(), blender::ed::greasepencil::grease_pencil_separate_material(), blender::ed::greasepencil::grease_pencil_separate_selected(), blender::ed::curves::pen_tool::insert_point_to_curve(), blender::geometry::join_curves_ranges(), blender::geometry::mesh_copy_selection(), blender::geometry::mesh_copy_selection_keep_edges(), blender::geometry::mesh_copy_selection_keep_verts(), blender::geometry::mesh_faces_to_curves_convert(), mesh_remesh_reproject_attributes(), blender::bke::Instances::remove(), blender::geometry::reorder_and_flip_curves(), blender::reorder_cyclic_curve_points(), blender::geometry::separate_grease_pencil_layer_selection(), and blender::geometry::separate_pointcloud_selection().

◆ gather_attributes() [2/3]

◆ gather_attributes() [3/3]

◆ gather_attributes_group_to_group()

◆ gather_attributes_to_groups()

◆ gather_component_types_recursive()

◆ gather_deform_verts() [1/2]

void blender::bke::gather_deform_verts ( Span< MDeformVert > src,
const IndexMask & indices,
MutableSpan< MDeformVert > dst )

Definition at line 1781 of file deform.cc.

References gather_deform_verts(), indices, and MEM_dupallocN().

◆ gather_deform_verts() [2/2]

◆ generate_unique_instance_ids()

◆ geo_nodes_base_cpp_type_to_socket_type()

◆ get_armature_deform_params()

◆ get_attribute_domain_for_mesh()

AttrDomain blender::bke::get_attribute_domain_for_mesh ( const AttributeAccessor & mesh_attributes,
const StringRef attribute_id )
static

◆ get_current_time_in_seconds()

double blender::bke::get_current_time_in_seconds ( )
static

◆ get_curve_single_vert()

CurvesGeometry blender::bke::get_curve_single_vert ( )
static

◆ get_curves_info()

CurvesInfo blender::bke::get_curves_info ( const CurvesGeometry & main,
const CurvesGeometry & profile )
static

Definition at line 239 of file curve_to_mesh_convert.cc.

References main.

Referenced by curve_to_mesh_sweep().

◆ get_direct_zone_relations()

◆ get_implicit_type_conversions()

◆ get_instances_accessor_functions()

◆ get_internal_link_type_priority()

int blender::bke::get_internal_link_type_priority ( const bNodeSocketType * from,
const bNodeSocketType * to )
static

Common datatype priorities, works for compositor, shader and texture nodes alike defines priority of datatype connection based on output type (to): < 0: never connect these types. >= 0: priority of connection (higher values chosen first).

Definition at line 99 of file node_tree_update.cc.

References blender::bke::bNodeSocketType::idname, SOCK_BOOLEAN, SOCK_CUSTOM, SOCK_FLOAT, SOCK_INT, SOCK_RGBA, SOCK_ROTATION, SOCK_VECTOR, and blender::bke::bNodeSocketType::type.

◆ get_known_node_types_set()

Set< int > blender::bke::get_known_node_types_set ( )
static

Definition at line 4881 of file node.cc.

References node_types_get(), and result.

Referenced by can_read_node_type().

◆ get_mesh_accessor_functions()

◆ get_mutable_attribute() [1/2]

GMutableSpan blender::bke::get_mutable_attribute ( AttributeStorage & storage,
const AttrDomain domain,
const CPPType & cpp_type,
const StringRef name,
const int64_t domain_size,
const void * custom_default_value )

Definition at line 171 of file attribute_storage_access.cc.

References blender::bke::AttributeStorage::add(), BLI_assert, cpp_type_to_attribute_type(), blender::bke::Attribute::data_for_write(), blender::CPPType::default_value(), blender::bke::Attribute::ArrayData::from_value(), blender::bke::AttributeStorage::lookup(), name, and blender::bke::AttributeStorage::remove().

Referenced by blender::bke::CurvesGeometry::curve_types_for_write(), blender::bke::CurvesGeometry::cyclic_for_write(), blender::bke::greasepencil::Drawing::fill_colors_for_write(), get_mutable_attribute(), blender::bke::CurvesGeometry::handle_positions_left_for_write(), blender::bke::CurvesGeometry::handle_positions_right_for_write(), blender::bke::CurvesGeometry::handle_types_left_for_write(), blender::bke::CurvesGeometry::handle_types_right_for_write(), blender::bke::CurvesGeometry::normal_mode_for_write(), blender::bke::CurvesGeometry::nurbs_knots_modes_for_write(), blender::bke::CurvesGeometry::nurbs_orders_for_write(), blender::bke::CurvesGeometry::nurbs_weights_for_write(), blender::bke::greasepencil::Drawing::opacities_for_write(), blender::bke::CurvesGeometry::positions_for_write(), blender::bke::greasepencil::Drawing::radii_for_write(), blender::bke::CurvesGeometry::radius_for_write(), blender::bke::Instances::reference_handles_for_write(), blender::bke::CurvesGeometry::resolution_for_write(), blender::bke::CurvesGeometry::surface_uv_coords_for_write(), blender::bke::CurvesGeometry::tilt_for_write(), blender::bke::Instances::transforms_for_write(), and blender::bke::greasepencil::Drawing::vertex_colors_for_write().

◆ get_mutable_attribute() [2/2]

template<typename T>
MutableSpan< T > blender::bke::get_mutable_attribute ( AttributeStorage & storage,
const AttrDomain domain,
const StringRef name,
const int64_t domain_size,
const T & default_value = T() )
inline

◆ get_next_auto_legacy_type()

int16_t blender::bke::get_next_auto_legacy_type ( )
static

◆ get_node_tree_type_map()

auto & blender::bke::get_node_tree_type_map ( )
static

◆ get_node_type_alias_map()

auto & blender::bke::get_node_type_alias_map ( )
static

Definition at line 2291 of file node.cc.

Referenced by node_register_alias(), node_system_exit(), and node_type_find_alias().

◆ get_node_type_map()

auto & blender::bke::get_node_type_map ( )
static

◆ get_orco_coords()

◆ get_pointcloud_accessor_functions()

◆ get_random_id_attribute_name()

StringRef blender::bke::get_random_id_attribute_name ( const AttrDomain domain)
static

Definition at line 486 of file geometry_fields.cc.

References Instance, and Point.

Referenced by blender::bke::IDAttributeFieldInput::get_varray_for_context().

◆ get_socket_type_map()

auto & blender::bke::get_socket_type_map ( )
static

◆ get_span_attribute() [1/2]

◆ get_span_attribute() [2/2]

template<typename T>
std::optional< Span< T > > blender::bke::get_span_attribute ( const AttributeStorage & storage,
const AttrDomain domain,
const StringRef name,
const int64_t domain_size )
inline

Definition at line 61 of file attribute_storage_access.hh.

References blender::CPPType::get(), get_span_attribute(), name, and T.

◆ get_tag_modified_function()

std::function< void()> blender::bke::get_tag_modified_function ( void * owner,
const StringRef name )
static

◆ get_transform_position()

float3 blender::bke::get_transform_position ( const float4x4 & transform)
static

Definition at line 519 of file instances.cc.

References transform().

◆ get_tree_zones()

const bNodeTreeZones * blender::bke::get_tree_zones ( const bNodeTree & tree)

Definition at line 377 of file node_tree_zones.cc.

References discover_tree_zones(), and tree.

◆ get_varray_attribute() [1/2]

◆ get_varray_attribute() [2/2]

template<typename T>
VArray< T > blender::bke::get_varray_attribute ( const AttributeStorage & storage,
const AttrDomain domain,
const StringRef name,
const int64_t domain_size,
const T & default_value )
inline

◆ get_zone_types_vector()

Vector< const bNodeZoneType * > & blender::bke::get_zone_types_vector ( )
static

Definition at line 518 of file node_tree_zones.cc.

Referenced by all_zone_types(), and register_node_zone_type().

◆ grease_pencil_convert_customdata_to_storage()

◆ grid_type_to_socket_type()

◆ handle_type_from_legacy()

HandleType blender::bke::handle_type_from_legacy ( const uint8_t handle_type_legacy)
static

◆ has_caps()

bool blender::bke::has_caps ( const bool main_cyclic,
const bool profile_cyclic,
const int profile_segment_num )
inlinestatic

Definition at line 31 of file curve_to_mesh_convert.cc.

Referenced by curve_to_mesh_sweep(), and fill_mesh_topology().

◆ hash_to_anonymous_attribute_name()

◆ initialize_new_data()

void blender::bke::initialize_new_data ( MutableAttributeAccessor & attributes,
const AttrDomain domain,
const int domain_size,
const StringRef name,
const CPPType & type,
const bke::AttrType data_type,
void * buffer )
static

◆ instance_attribute_accessor_functions()

◆ instance_position_varray()

VArray< float3 > blender::bke::instance_position_varray ( const Instances & instances)

◆ instance_position_varray_for_write()

VMutableArray< float3 > blender::bke::instance_position_varray_for_write ( Instances & instances)

◆ int2_to_bool()

bool blender::bke::int2_to_bool ( const int2 & a)
static

Definition at line 305 of file type_conversions.cc.

References blender::math::is_zero().

◆ int2_to_byte_color()

ColorGeometry4b blender::bke::int2_to_byte_color ( const int2 & a)
static

Definition at line 341 of file type_conversions.cc.

References blender::color::encode(), and int2_to_color().

◆ int2_to_color()

ColorGeometry4f blender::bke::int2_to_color ( const int2 & a)
static

Definition at line 337 of file type_conversions.cc.

Referenced by int2_to_byte_color().

◆ int2_to_float()

float blender::bke::int2_to_float ( const int2 & a)
static

Definition at line 325 of file type_conversions.cc.

References float2_to_float().

◆ int2_to_float2()

float2 blender::bke::int2_to_float2 ( const int2 & a)
static

Definition at line 309 of file type_conversions.cc.

◆ int2_to_float3()

float3 blender::bke::int2_to_float3 ( const int2 & a)
static

Definition at line 329 of file type_conversions.cc.

◆ int2_to_float4()

float4 blender::bke::int2_to_float4 ( const int2 & a)
static

Definition at line 333 of file type_conversions.cc.

◆ int2_to_int()

int blender::bke::int2_to_int ( const int2 & a)
static

Definition at line 313 of file type_conversions.cc.

References blender::math::midpoint().

Referenced by int2_to_int8().

◆ int2_to_int8()

int8_t blender::bke::int2_to_int8 ( const int2 & a)
static

Definition at line 321 of file type_conversions.cc.

References int2_to_int(), and int_to_int8().

◆ int2_to_short2()

short2 blender::bke::int2_to_short2 ( const int2 & a)
static

Definition at line 317 of file type_conversions.cc.

◆ int8_to_bool()

bool blender::bke::int8_to_bool ( const int8_t & a)
static

Definition at line 346 of file type_conversions.cc.

◆ int8_to_byte_color()

ColorGeometry4b blender::bke::int8_to_byte_color ( const int8_t & a)
static

Definition at line 382 of file type_conversions.cc.

References blender::color::encode(), and int8_to_color().

◆ int8_to_color()

ColorGeometry4f blender::bke::int8_to_color ( const int8_t & a)
static

Definition at line 378 of file type_conversions.cc.

Referenced by int8_to_byte_color().

◆ int8_to_float()

float blender::bke::int8_to_float ( const int8_t & a)
static

Definition at line 362 of file type_conversions.cc.

References float.

◆ int8_to_float2()

float2 blender::bke::int8_to_float2 ( const int8_t & a)
static

Definition at line 366 of file type_conversions.cc.

◆ int8_to_float3()

float3 blender::bke::int8_to_float3 ( const int8_t & a)
static

Definition at line 370 of file type_conversions.cc.

◆ int8_to_float4()

float4 blender::bke::int8_to_float4 ( const int8_t & a)
static

Definition at line 374 of file type_conversions.cc.

◆ int8_to_int()

int blender::bke::int8_to_int ( const int8_t & a)
static

Definition at line 350 of file type_conversions.cc.

◆ int8_to_int2()

int2 blender::bke::int8_to_int2 ( const int8_t & a)
static

Definition at line 358 of file type_conversions.cc.

◆ int8_to_short2()

short2 blender::bke::int8_to_short2 ( const int8_t & a)
static

Definition at line 354 of file type_conversions.cc.

◆ int_to_bool()

bool blender::bke::int_to_bool ( const int32_t & a)
static

Definition at line 222 of file type_conversions.cc.

◆ int_to_byte_color()

ColorGeometry4b blender::bke::int_to_byte_color ( const int32_t & a)
static

Definition at line 259 of file type_conversions.cc.

References blender::color::encode(), and int_to_color().

◆ int_to_color()

ColorGeometry4f blender::bke::int_to_color ( const int32_t & a)
static

Definition at line 255 of file type_conversions.cc.

Referenced by int_to_byte_color().

◆ int_to_float()

float blender::bke::int_to_float ( const int32_t & a)
static

Definition at line 239 of file type_conversions.cc.

References float.

◆ int_to_float2()

float2 blender::bke::int_to_float2 ( const int32_t & a)
static

Definition at line 243 of file type_conversions.cc.

◆ int_to_float3()

float3 blender::bke::int_to_float3 ( const int32_t & a)
static

Definition at line 247 of file type_conversions.cc.

◆ int_to_float4()

float4 blender::bke::int_to_float4 ( const int32_t & a)
static

Definition at line 251 of file type_conversions.cc.

◆ int_to_int2()

int2 blender::bke::int_to_int2 ( const int32_t & a)
static

Definition at line 235 of file type_conversions.cc.

◆ int_to_int8()

int8_t blender::bke::int_to_int8 ( const int32_t & a)
static

Definition at line 226 of file type_conversions.cc.

Referenced by color_to_int8(), int2_to_int8(), and short2_to_int8().

◆ int_to_short2()

short2 blender::bke::int_to_short2 ( const int32_t & a)
static

Definition at line 231 of file type_conversions.cc.

◆ is_auto_smooth_node_tree()

◆ is_node_socket_supported()

bool blender::bke::is_node_socket_supported ( const bNodeSocket * sock)
static

Sockets with default_value data must be known built-in types, otherwise reading and writing data correctly cannot be guaranteed. Discard any socket with default_value data that has an unknown type.

Definition at line 1221 of file node.cc.

References SOCK_BOOLEAN, SOCK_BUNDLE, SOCK_CLOSURE, SOCK_COLLECTION, SOCK_CUSTOM, SOCK_FLOAT, SOCK_GEOMETRY, SOCK_IMAGE, SOCK_INT, SOCK_MATERIAL, SOCK_MATRIX, SOCK_MENU, SOCK_OBJECT, SOCK_RGBA, SOCK_ROTATION, SOCK_SHADER, SOCK_STRING, SOCK_TEXTURE, SOCK_VECTOR, and bNodeSocket::type.

Referenced by remove_unsupported_sockets().

◆ is_tree_changed()

bool blender::bke::is_tree_changed ( const bNodeTree & tree)
static

◆ iter_backwards_ex()

◆ knots_mode_from_legacy()

◆ library_foreach_node_socket()

◆ loose_edges_no_hidden_mask_get()

◆ loose_verts_no_hidden_mask_get()

◆ make_socket()

◆ make_vertexcos__mapFunc()

void blender::bke::make_vertexcos__mapFunc ( void * user_data,
int index,
const float co[3],
const float [3] )
static

◆ mark_bezier_vector_edges_sharp()

void blender::bke::mark_bezier_vector_edges_sharp ( const int profile_point_num,
const int main_segment_num,
const Span< int > control_point_offsets,
const Span< int8_t > handle_types_left,
const Span< int8_t > handle_types_right,
MutableSpan< bool > sharp_edges )
static

Set the sharp status for edges that correspond to control points with vector handles.

Definition at line 162 of file curve_to_mesh_convert.cc.

References blender::MutableSpan< T >::fill(), i, blender::bke::curves::bezier::point_is_sharp(), and blender::MutableSpan< T >::slice().

Referenced by write_sharp_bezier_edges().

◆ merge_bounds()

Bounds< float3 > blender::bke::merge_bounds ( const Bounds< float3 > & a,
const Bounds< float3 > & b )
static

◆ mesh_apply_spatial_organization()

void blender::bke::mesh_apply_spatial_organization ( Mesh & mesh)

Definition at line 847 of file blenkernel/intern/mesh.cc.

References blender::offset_indices::accumulate_counts_to_offsets(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::GArray< Allocator >::as_mutable_span(), blender::GArray< Allocator >::as_span(), blender::bke::MeshGroup::children_offset, blender::bke::NonContiguousGroup::children_offset, compute_local_mesh_groups(), blender::CPPType::copy_construct(), blender::GMutableSpan::copy_from(), blender::MutableSpan< T >::copy_from(), Corner, blender::bke::NonContiguousGroup::corner_count, blender::bke::MeshGroup::corners_count, blender::bke::AttributeIter::domain, Face, blender::bke::MeshGroup::faces, blender::bke::NonContiguousGroup::faces, blender::bke::GSpanAttributeWriter::finish(), blender::bke::AttributeAccessor::foreach_attribute(), blender::bke::attribute_math::gather(), i, Array< T, InlineBufferCapacity, Allocator >::index_range(), blender::Vector< T, InlineBufferCapacity, Allocator >::index_range(), Array< T, InlineBufferCapacity, Allocator >::is_empty(), blender::bke::MutableAttributeAccessor::lookup_for_write_span(), mesh_apply_spatial_organization(), blender::bke::AttributeIter::name, blender::bke::MeshGroup::parent, blender::bke::NonContiguousGroup::parent, Point, blender::Vector< T, InlineBufferCapacity, Allocator >::reserve(), blender::bke::MeshGroup::shared_verts, blender::bke::NonContiguousGroup::shared_verts, Array< T, InlineBufferCapacity, Allocator >::size(), blender::GMutableSpan::size(), blender::MutableSpan< T >::size(), blender::Vector< T, InlineBufferCapacity, Allocator >::size(), blender::bke::GSpanAttributeWriter::span, blender::MutableSpan< T >::take_front(), blender::GMutableSpan::type(), blender::bke::MeshGroup::unique_verts, and blender::bke::NonContiguousGroup::unique_verts.

Referenced by mesh_apply_spatial_organization(), mesh_reorder_vertices_spatial_exec(), blender::ed::object::quadriflow_end_job(), and blender::ed::object::voxel_remesh_exec().

◆ mesh_attribute_accessor_functions()

◆ mesh_build_data()

◆ mesh_build_extra_data()

void blender::bke::mesh_build_extra_data ( const Depsgraph & depsgraph,
const Object & ob,
const Mesh & mesh_eval )
static

◆ mesh_calc_edges() [1/2]

◆ mesh_calc_edges() [2/2]

void blender::bke::mesh_calc_edges ( Mesh & mesh,
bool keep_existing_edges,
bool select_new_edges,
const AttributeFilter & attribute_filter )

Definition at line 233 of file mesh_calc_edges.cc.

References blender::offset_indices::accumulate_counts_to_offsets(), blender::bke::MutableAttributeAccessor::add(), blender::bke::calc_edges::add_existing_edges_to_hash_maps(), blender::bke::calc_edges::add_face_edges_to_hash_maps(), blender::bke::AttributeFilter::allow_skip(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::Array< T, InlineBufferCapacity, Allocator >::as_mutable_span(), blender::Array< T, InlineBufferCapacity, Allocator >::as_span(), blender::VectorSet< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::as_span(), AT, blender::MutableSpan< T >::begin(), BKE_mesh_is_valid(), BLI_assert, CD_ORIGINDEX, blender::bke::calc_edges::clear_hash_tables(), blender::MutableSpan< T >::contains(), Corner, custom_data_type_to_cpp_type(), CustomData_free(), CustomData_free_layer_named(), CustomData_sizeof(), blender::Array< T, InlineBufferCapacity, Allocator >::data(), blender::GMutableSpan::data(), blender::MutableSpan< T >::data(), blender::offset_indices::OffsetIndices< T >::data(), blender::bke::AttributeIter::data_type, blender::CPPType::default_value(), blender::bke::AttributeIter::domain, blender::IndexRange::drop_front(), blender::MutableSpan< T >::drop_front(), Edge, blender::bke::calc_edges::edge_map_offsets(), blender::bke::calc_edges::edge_to_hash_map_i(), ELEM, blender::MutableSpan< T >::end(), faces, blender::MutableSpan< T >::fill(), blender::CPPType::fill_assign_n(), blender::array_utils::fill_index_range(), blender::bke::SpanAttributeWriter< T >::finish(), blender::index_mask::IndexMask::foreach_index(), IndexMask::from_predicate(), blender::VArray< T >::from_single(), blender::array_utils::gather(), blender::bke::calc_edges::get_parallel_maps_count(), blender::Array< T, InlineBufferCapacity, Allocator >::index_range(), blender::Span< T >::index_range(), blender::implicit_sharing::info_for_mem_free(), is_power_of_2_i(), blender::bke::MutableAttributeAccessor::lookup_or_add_for_write_span(), blender::bke::calc_edges::map_edge_to_span_index(), blender::bke::calc_edges::mask_first_distinct_edges(), MEM_malloc_arrayN(), mesh_calc_edges(), blender::bke::AttributeIter::name, blender::IndexRange::one_after_last(), blender::threading::parallel_for_each(), blender::Array< T, InlineBufferCapacity, Allocator >::reinitialize(), blender::bke::MutableAttributeAccessor::remove(), blender::bke::calc_edges::reserve_hash_maps(), blender::array_utils::scatter(), blender::bke::calc_edges::serialize_and_initialize_deduplicated_edges(), blender::Array< T, InlineBufferCapacity, Allocator >::size(), blender::GMutableSpan::size(), blender::index_mask::IndexMask::size(), blender::IndexRange::size(), blender::GMutableSpan::slice(), blender::MutableSpan< T >::slice(), blender::bke::SpanAttributeWriter< T >::span, blender::IndexRange::start(), String, blender::GMutableSpan::take_front(), blender::MutableSpan< T >::take_front(), blender::Span< T >::take_front(), blender::offset_indices::OffsetIndices< T >::total_size(), and blender::bke::calc_edges::update_edge_indices_in_face_loops().

◆ mesh_calc_finalize()

void blender::bke::mesh_calc_finalize ( const Mesh & mesh_input,
Mesh & mesh_eval )
static

Does final touches to the final evaluated mesh, making sure it is perfectly usable.

This is needed because certain information is not passed along intermediate meshes allocated during stack evaluation.

Definition at line 205 of file mesh_data_update.cc.

References Mesh::id, ID::name, and STRNCPY().

Referenced by mesh_calc_modifiers().

◆ mesh_calc_modifiers()

void blender::bke::mesh_calc_modifiers ( Depsgraph & depsgraph,
const Scene & scene,
Object & ob,
const bool use_deform,
const bool need_mapping,
const CustomData_MeshMasks & dataMask,
const bool use_cache,
const bool allow_shared_mesh,
Mesh ** r_deform,
Mesh ** r_final,
GeometrySet ** r_geometry_set )
static

Definition at line 285 of file mesh_data_update.cc.

References add_orco_mesh(), ASSERT_IS_VALID_MESH_INPUT, ASSERT_IS_VALID_MESH_OUTPUT, BKE_id_free(), BKE_mesh_copy_for_eval(), BKE_modifier_calc_data_masks(), BKE_modifier_deform_verts(), BKE_modifier_free_temporary_data(), BKE_modifier_get_info(), BKE_modifier_is_enabled(), BKE_modifier_modify_mesh(), BKE_modifier_set_error(), BKE_modifier_supports_mapping(), BKE_modifiers_clear_errors(), BKE_modifiers_get_virtual_modifierlist(), BKE_sculpt_multires_active(), BLI_assert, BLI_linklist_free(), SculptSession::bm, CD_CLOTH_ORCO, CD_CONSTRUCT, CD_MASK_BAREMESH_ORIGINDEX, CD_MASK_CLOTH_ORCO, CD_MASK_ORCO, CD_MASK_ORIGINDEX, CD_MASK_ORIGSPACE_MLOOP, CD_ORCO, CD_ORIGINDEX, CD_ORIGSPACE_MLOOP, CD_SET_DEFAULT, create_orco_mesh(), CustomData_add_layer(), CustomData_free_layers(), CustomData_get_layer_for_write(), CustomData_has_layer(), CustomData_MeshMasks_update(), DAG_EVAL_RENDER, Object::data, DEG_get_mode(), depsgraph, CustomData_MeshMasks::emask, eModifierMode_Realtime, eModifierMode_Render, eModifierType_Multires, eModifierTypeFlag_RequiresOriginalData, ModifierTypeInfo::flags, Sculpt::flags, CustomData_MeshMasks::fmask, Mesh::id, ID_TAG_COPIED_ON_EVAL_FINAL_RESULT, blender::threading::isolate_task(), CustomData_MeshMasks::lmask, lock, CDMaskLink::mask, mask(), mesh_calc_finalize(), blender::bke::MeshRuntime::mesh_eval, mesh_init_origspace(), mesh_set_only_copy(), MOD_APPLY_ORCO, MOD_APPLY_RENDER, MOD_APPLY_USECACHE, Object::mode, Object::modifier_flag, modifier_modify_mesh_and_geometry_set(), CDMaskLink::next, ModifierData::next, OB_MODE_SCULPT, OB_MODIFIER_FLAG_ADD_REST_POSITION, OnlyDeform, CustomData_MeshMasks::pmask, range_vn_i(), ModifierTypeInfo::required_data_mask, Mesh::runtime, Object::sculpt, ToolSettings::sculpt, SCULPT_ONLY_DEFORM, set_rest_position(), ID::tag, Scene::toolsettings, ModifierData::type, ModifierTypeInfo::type, and CustomData_MeshMasks::vmask.

Referenced by mesh_build_data(), mesh_create_eval_final(), mesh_create_eval_no_deform(), and mesh_create_eval_no_deform_render().

◆ mesh_convert_customdata_to_storage()

void blender::bke::mesh_convert_customdata_to_storage ( Mesh & mesh)

Move generic attributes from CustomData to AttributeStorage (not including non-generic layer types). Use for versioning old files when the newer AttributeStorage format is used at runtime.

Definition at line 263 of file attribute_legacy_convert.cc.

References attribute_legacy_convert_customdata_to_storage(), Corner, Edge, Face, mesh_convert_customdata_to_storage(), and Point.

Referenced by mesh_convert_customdata_to_storage().

◆ mesh_convert_storage_to_customdata()

void blender::bke::mesh_convert_storage_to_customdata ( Mesh & mesh)

Move attributes from the AttributeStorage to the mesh's CustomData structs. Used for forward compatibility: converting newer files written with AttributeStorage while CustomData is still used at runtime.

Definition at line 239 of file attribute_legacy_convert.cc.

References convert_storage_to_customdata().

Referenced by mesh_blend_read_data().

◆ mesh_corner_tris_nearest_point()

void blender::bke::mesh_corner_tris_nearest_point ( void * userdata,
int index,
const float co[3],
BVHTreeNearest * nearest )
static

◆ mesh_corner_tris_spherecast()

◆ mesh_create_eval_final()

Mesh * blender::bke::mesh_create_eval_final ( Depsgraph * depsgraph,
const Scene * scene,
Object * ob,
const CustomData_MeshMasks * dataMask )

◆ mesh_create_eval_no_deform()

Mesh * blender::bke::mesh_create_eval_no_deform ( Depsgraph * depsgraph,
const Scene * scene,
Object * ob,
const CustomData_MeshMasks * dataMask )

Definition at line 1205 of file mesh_data_update.cc.

References depsgraph, mesh_calc_modifiers(), and result.

Referenced by bvh_get_mesh().

◆ mesh_create_eval_no_deform_render()

Mesh * blender::bke::mesh_create_eval_no_deform_render ( Depsgraph * depsgraph,
const Scene * scene,
Object * ob,
const CustomData_MeshMasks * dataMask )

Definition at line 1216 of file mesh_data_update.cc.

References depsgraph, mesh_calc_modifiers(), and result.

Referenced by bvh_get_mesh().

◆ mesh_custom_normals_to_generic()

◆ mesh_data_update()

◆ mesh_edge_hide_from_vert()

void blender::bke::mesh_edge_hide_from_vert ( Span< int2 > edges,
Span< bool > hide_vert,
MutableSpan< bool > hide_edge )

Calculate edge visibility based on vertex visibility, hides an edge when either of its vertices are hidden.

Definition at line 506 of file mesh_evaluate.cc.

References blender::Span< T >::index_range(), and blender::threading::parallel_for().

Referenced by blender::ed::sculpt_paint::hide::flush_edge_changes(), and mesh_hide_vert_flush().

◆ mesh_edges_nearest_point()

void blender::bke::mesh_edges_nearest_point ( void * userdata,
int index,
const float co[3],
BVHTreeNearest * nearest )
static

Callback to BVH-tree nearest point. The tree must have been built using #bvhtree_from_mesh_edges.

Parameters
userdataMust be a #BVHMeshCallbackUserdata built from the same mesh as the tree.

Definition at line 219 of file bvhutils.cc.

References closest_to_line_segment_v3(), BVHTreeNearest::co, copy_v3_v3(), data, BVHTreeNearest::dist_sq, BVHTreeNearest::index, len_squared_v3v3(), BVHTreeNearest::no, normalize_v3(), and sub_v3_v3v3().

Referenced by create_edges_tree_data().

◆ mesh_edges_spherecast()

void blender::bke::mesh_edges_spherecast ( void * userdata,
int index,
const BVHTreeRay * ray,
BVHTreeRayHit * hit )
static

Callback to BVH-tree ray-cast. The tree must have been built using bvhtree_from_mesh_edges.

Parameters
userdataMust be a #BVHMeshCallbackUserdata built from the same mesh as the tree.

Definition at line 292 of file bvhutils.cc.

References add_v3_v3v3(), BVHTreeRayHit::co, copy_v3_v3(), data, BVHTreeRay::direction, BVHTreeRayHit::dist, dot_v3v3v3(), equals_v3v3(), BVHTreeRayHit::index, isect_line_line_v3(), len_squared_v3v3(), len_v3v3(), line_point_factor_v3(), mesh_verts_spherecast_do(), BVHTreeRay::origin, BVHTreeRay::radius, square_f(), and v2.

Referenced by create_edges_tree_data().

◆ mesh_ensure_default_color_attribute_on_add()

void blender::bke::mesh_ensure_default_color_attribute_on_add ( Mesh & mesh,
StringRef id,
AttrDomain domain,
bke::AttrType data_type )

◆ mesh_ensure_required_data_layers()

void blender::bke::mesh_ensure_required_data_layers ( Mesh & mesh)

◆ mesh_face_hide_from_vert()

void blender::bke::mesh_face_hide_from_vert ( OffsetIndices< int > faces,
Span< int > corner_verts,
Span< bool > hide_vert,
MutableSpan< bool > hide_poly )

◆ mesh_faces_nearest_point()

void blender::bke::mesh_faces_nearest_point ( void * userdata,
int index,
const float co[3],
BVHTreeNearest * nearest )
static

Callback to BVH-tree nearest point. The tree must have been built using #bvhtree_from_mesh_faces.

Parameters
userdataMust be a #BVHMeshCallbackUserdata built from the same mesh as the tree.

Definition at line 79 of file bvhutils.cc.

References closest_on_tri_to_point_v3(), BVHTreeNearest::co, copy_v3_v3(), data, BVHTreeNearest::dist_sq, BVHTreeNearest::index, len_squared_v3v3(), BVHTreeNearest::no, normal_tri_v3(), MFace::v1, MFace::v2, MFace::v3, and MFace::v4.

Referenced by create_legacy_faces_tree_data().

◆ mesh_faces_spherecast()

void blender::bke::mesh_faces_spherecast ( void * userdata,
int index,
const BVHTreeRay * ray,
BVHTreeRayHit * hit )
static

Callback to BVH-tree ray-cast. The tree must have been built using bvhtree_from_mesh_faces.

Parameters
userdataMust be a #BVHMeshCallbackUserdata built from the same mesh as the tree.

Definition at line 144 of file bvhutils.cc.

References bvhtree_ray_tri_intersection(), bvhtree_sphereray_tri_intersection(), BVHTreeRayHit::co, data, BVHTreeRay::direction, BVHTreeRayHit::dist, BVHTreeRayHit::index, madd_v3_v3v3fl(), BVHTreeRayHit::no, normal_tri_v3(), BVHTreeRay::origin, BVHTreeRay::radius, MFace::v1, MFace::v2, MFace::v3, and MFace::v4.

Referenced by create_legacy_faces_tree_data().

◆ mesh_flip_faces()

◆ mesh_freestyle_marks_to_generic()

◆ mesh_freestyle_marks_to_legacy()

◆ mesh_get_eval_deform()

◆ mesh_get_mapped_verts_coords()

◆ mesh_hide_face_flush()

◆ mesh_hide_vert_flush()

◆ mesh_init_origspace()

◆ mesh_new_no_attributes()

◆ mesh_normals_varray()

VArray< float3 > blender::bke::mesh_normals_varray ( const Mesh & mesh,
const IndexMask & mask,
AttrDomain domain,
bool no_corner_normals = false,
bool true_normals = false )

◆ mesh_remesh_reproject_attributes()

◆ mesh_remove_invalid_attribute_strings()

void blender::bke::mesh_remove_invalid_attribute_strings ( Mesh & mesh)

Remove strings referring to attributes if they no longer exist.

Definition at line 627 of file blenkernel/intern/mesh.cc.

References ATTR_DOMAIN_MASK_COLOR, CD_MASK_COLOR_ALL, blender::bke::AttributeAccessor::lookup_meta_data(), MEM_SAFE_FREE, and meta_data_matches().

Referenced by blender::ed::object::modifier_apply_obdata().

◆ mesh_sculpt_mask_to_generic()

◆ mesh_select_edge_flush()

◆ mesh_select_face_flush()

◆ mesh_select_vert_flush()

◆ mesh_set_custom_normals()

void blender::bke::mesh_set_custom_normals ( Mesh & mesh,
MutableSpan< float3 > corner_normals )

Higher level functions hiding most of the code needed around call to #normals_corner_custom_set().

Parameters
corner_normalsIs mutable because zero vectors are replaced with automatically computed normals.

Definition at line 1691 of file mesh_normals.cc.

References blender::bke::mesh::mesh_set_custom_normals(), mesh_set_custom_normals(), and normalize_vecs().

Referenced by blender::io::fbx::import_meshes(), mesh_set_custom_normals(), blender::nodes::node_geo_set_mesh_normal_cc::node_geo_exec(), blender::io::alembic::process_loop_normals(), and blender::io::stl::STLMeshHelper::to_mesh().

◆ mesh_set_custom_normals_from_verts()

void blender::bke::mesh_set_custom_normals_from_verts ( Mesh & mesh,
MutableSpan< float3 > vert_normals )

Higher level functions hiding most of the code needed around call to #normals_corner_custom_set_from_verts().

Parameters
vert_normalsIs mutable because zero vectors are replaced with automatically computed normals.

Definition at line 1702 of file mesh_normals.cc.

References blender::bke::mesh::mesh_set_custom_normals(), mesh_set_custom_normals_from_verts(), and normalize_vecs().

Referenced by blender::io::ply::convert_ply_to_mesh(), mesh_set_custom_normals_from_verts(), and blender::io::alembic::process_vertex_normals().

◆ mesh_set_custom_normals_from_verts_normalized()

void blender::bke::mesh_set_custom_normals_from_verts_normalized ( Mesh & mesh,
MutableSpan< float3 > vert_normals )

◆ mesh_set_custom_normals_normalized()

void blender::bke::mesh_set_custom_normals_normalized ( Mesh & mesh,
MutableSpan< float3 > corner_normals )

◆ mesh_set_only_copy()

void blender::bke::mesh_set_only_copy ( Mesh * mesh,
const CustomData_MeshMasks * mask )
static

Definition at line 77 of file mesh_data_update.cc.

References CustomData_set_only_copy(), and mask().

Referenced by editbmesh_calc_modifiers(), and mesh_calc_modifiers().

◆ mesh_sharp_edges_set_from_angle()

◆ mesh_smooth_set()

◆ mesh_transform()

◆ mesh_translate()

◆ mesh_uv_select_to_single_attribute()

◆ mesh_vert_normals_assign() [1/2]

void blender::bke::mesh_vert_normals_assign ( Mesh & mesh,
Span< float3 > vert_normals )

Set mesh vertex normals to known-correct values, avoiding future lazy computation.

Definition at line 48 of file mesh_normals.cc.

Referenced by arrayModifier_doArray(), BKE_mball_polygonize(), blender::geometry::create_uv_sphere_mesh(), and blender::io::alembic::read_mverts().

◆ mesh_vert_normals_assign() [2/2]

void blender::bke::mesh_vert_normals_assign ( Mesh & mesh,
Vector< float3 > vert_normals )

Set mesh vertex normals to known-correct values, avoiding future lazy computation.

Definition at line 54 of file mesh_normals.cc.

◆ mesh_verts_spherecast()

void blender::bke::mesh_verts_spherecast ( void * userdata,
int index,
const BVHTreeRay * ray,
BVHTreeRayHit * hit )
static

Callback to BVH-tree ray-cast. The tree must have been built using bvhtree_from_mesh_verts.

Parameters
userdataMust be a #BVHMeshCallbackUserdata built from the same mesh as the tree.

Definition at line 275 of file bvhutils.cc.

References data, mesh_verts_spherecast_do(), and v.

Referenced by create_verts_tree_data().

◆ mesh_verts_spherecast_do()

void blender::bke::mesh_verts_spherecast_do ( int index,
const float v[3],
const BVHTreeRay * ray,
BVHTreeRayHit * hit )
static

◆ mesh_wrapper_vert_coords_ensure_for_write()

MutableSpan< float3 > blender::bke::mesh_wrapper_vert_coords_ensure_for_write ( Mesh * mesh)
static

◆ meta_data_matches()

bool blender::bke::meta_data_matches ( const std::optional< bke::AttributeMetaData > meta_data,
const AttrDomainMask domains,
const eCustomDataMask types )
static

◆ modifier_modify_mesh_and_geometry_set()

Mesh * blender::bke::modifier_modify_mesh_and_geometry_set ( ModifierData * md,
const ModifierEvalContext & mectx,
Mesh * input_mesh,
GeometrySet & geometry_set )
static

Modifies the given mesh and geometry set. The mesh is not passed as part of the mesh component in the geometry_set input, it is only passed in input_mesh and returned in the return value.

The purpose of the geometry set is to store all geometry components that are generated by modifiers to allow outputting non-mesh data from modifiers.

Definition at line 220 of file mesh_data_update.cc.

References BKE_mesh_copy_parameters_for_eval(), BKE_mesh_new_nomain(), BKE_mesh_wrapper_ensure_mdata(), BKE_modifier_get_info(), BKE_modifier_modify_mesh(), Editable, blender::bke::GeometrySet::ensure_owns_direct_data(), blender::bke::MeshComponent::ensure_owns_direct_data(), blender::bke::MeshComponent::get(), blender::bke::GeometrySet::get_component_for_write(), blender::bke::GeometrySet::has(), ModifierTypeInfo::modify_geometry_set, blender::bke::MeshComponent::release(), blender::bke::GeometrySet::replace_mesh(), and ModifierData::type.

Referenced by editbmesh_calc_modifiers(), and mesh_calc_modifiers().

◆ negative_bounds()

Bounds< float3 > blender::bke::negative_bounds ( )
static

◆ node_add_link()

bNodeLink & blender::bke::node_add_link ( bNodeTree & ntree,
bNode & fromnode,
bNodeSocket & fromsock,
bNode & tonode,
bNodeSocket & tosock )

Also used via RNA API, so we check for proper input output direction.

Definition at line 3810 of file node.cc.

References BKE_ntree_update_tag_link_added(), BLI_addtail(), BLI_assert, bNodeLink::fromnode, bNodeLink::fromsock, bNodeSocket::in_out, bNodeTree::links, MEM_callocN(), bNodeLink::multi_input_sort_id, node_count_links(), SOCK_IN, SOCK_OUT, bNodeLink::tonode, and bNodeLink::tosock.

Referenced by add_auto_smooth_node_tree(), blender::ed::space_node::add_existing_group_input_fn(), blender::ed::space_node::add_group_input_node_fn(), add_realize_instances_before_socket(), add_realize_node_tree(), blender::ed::space_node::add_reroute_exec(), blender::ed::space_node::add_reroute_node_fn(), ambient_occlusion_node_relink(), blender::io::usd::append_node(), BKE_linestyle_default_shader(), blo_do_versions_300(), change_input_socket_to_rotation_type(), change_output_socket_to_rotation_type(), blender::ed::space_node::connect_nested_node_to_node(), blender::nodes::LinkSearchOpParams::connect_socket(), displacement_node_insert(), do_versions_material_convert_legacy_blend_mode(), ED_node_composit_default_init(), ED_node_shader_default(), ED_node_texture_default(), ED_preview_prepare_world_simple(), blender::ed::curves::ensure_surface_deformation_node_exists(), fix_geometry_nodes_object_info_scale(), Freestyle::BlenderStrokeRenderer::GetStrokeShader(), blender::ed::space_node::initialize_compositor_sequencer_node_group(), link_nodes(), blender::io::fbx::link_sockets(), blender::io::obj::link_sockets(), blender::eevee::LookdevWorld::LookdevWorld(), material_default_holdout_init(), material_default_surface_init(), material_default_volume_init(), blender::eevee::MaterialModule::MaterialModule(), blender::ed::space_node::node_clipboard_paste_exec(), blender::nodes::node_geo_foreach_geometry_element_cc::output_node::node_gather_link_searches(), blender::nodes::node_geo_repeat_cc::repeat_output_node::node_gather_link_searches(), blender::nodes::node_geo_simulation_cc::sim_output_node::node_gather_link_searches(), blender::ed::space_node::node_group_make_insert_selected(), blender::ed::space_node::node_group_make_wrapper(), blender::ed::space_node::node_group_separate_selected(), blender::ed::space_node::node_group_ungroup(), blender::ed::space_node::node_insert_on_link_flags(), blender::ed::space_node::node_socket_add_replace(), ntree_shader_copy_branch(), ntree_shader_implicit_closure_cast(), ntree_shader_weight_tree_invert(), ntree_weight_tree_merge_weight(), blender::bke::greasepencil::convert::offset_radius_node_tree_add(), blender::ed::space_node::prepare_viewlayer_update(), proj_paint_add_slot(), blender::io::usd::USDPointInstancerReader::read_object_data(), blender::ed::space_node::search_link_ops_for_asset_metadata(), blender::ed::space_node::snode_autoconnect_input(), square_roughness_node_insert(), blender::nodes::sync_sockets_closure(), update_mapping_node_inputs_and_properties(), update_math_node_single_operand_operators(), update_noise_and_wave_distortion(), update_vector_math_node_add_and_subtract_operators(), update_vector_math_node_average_operator(), update_vector_math_node_cross_product_operator(), update_vector_math_node_normalize_operator(), update_voronoi_node_coloring(), update_voronoi_node_crackle(), update_voronoi_node_square_distance(), version_geometry_nodes_replace_transfer_attribute_node(), version_node_socket_duplicate(), version_principled_bsdf_specular_tint(), version_principled_bsdf_subsurface(), version_refraction_depth_to_thickness_value(), version_replace_texcoord_normal_socket(), versioning_eevee_material_blend_mode_settings(), versioning_eevee_material_shadow_none(), versioning_replace_musgrave_texture_node(), versioning_replace_splitviewer(), versioning_update_noise_texture_node(), and blender::ed::space_node::viewer_linking::view_socket().

◆ node_add_node()

bNode * blender::bke::node_add_node ( const bContext * C,
bNodeTree & ntree,
StringRef idname,
std::optional< int > unique_identifier = std::nullopt )

◆ node_add_socket()

◆ node_add_sockets_from_type()

void blender::bke::node_add_sockets_from_type ( bNodeTree * ntree,
bNode * node,
bNodeType * ntype )
static

◆ node_add_static_node()

bNode * blender::bke::node_add_static_node ( const bContext * C,
bNodeTree & ntree,
int type )

Definition at line 3500 of file node.cc.

References C, CLOG_ERROR, LOG, node_add_node(), and node_types_get().

Referenced by blender::io::usd::add_input_named_attrib_node(), add_node(), blender::io::fbx::add_node(), blender::io::obj::add_node(), add_realize_instances_before_socket(), add_realize_node_tree(), blender::ed::space_node::add_reroute_exec(), blender::ed::space_node::add_static_node(), blender::io::usd::append_node(), BKE_linestyle_default_shader(), blender::ed::space_node::connect_nested_node_to_node(), blender::ed::space_node::connect_nodes_to_aovs(), default_paint_slot_color_get(), displacement_node_insert(), do_version_alpha_over_remove_premultiply(), do_version_blur_defocus_nodes_remove_gamma(), do_version_bright_contrast_remove_premultiplied(), do_version_color_to_float_conversion(), do_version_composite_viewer_remove_alpha(), do_version_lift_gamma_gain_srgb_to_linear(), do_version_map_value_node(), do_version_material_remove_use_nodes(), do_version_mix_color_use_alpha(), do_version_scale_node_remove_translate(), do_version_world_remove_use_nodes(), do_versions_material_convert_legacy_blend_mode(), blender::io::usd::dome_light_to_world_material(), ED_node_composit_default_init(), ED_node_shader_default(), ED_node_texture_default(), blender::ed::curves::ensure_surface_deformation_node_exists(), Freestyle::BlenderStrokeRenderer::GetStrokeShader(), blender::ed::space_node::initialize_compositor_sequencer_node_group(), blender::eevee::LookdevWorld::LookdevWorld(), material_default_holdout_init(), material_default_surface_init(), material_default_volume_init(), blender::eevee::MaterialModule::MaterialModule(), blender::ed::space_node::node_group_make_insert_selected(), blender::ed::space_node::node_group_make_wrapper(), blender::ed::space_node::node_socket_add_replace(), ntree_shader_implicit_closure_cast(), ntree_shader_weight_tree_invert(), ntree_weight_tree_merge_weight(), proj_paint_add_slot(), blender::io::usd::USDPointInstancerReader::read_object_data(), blender::ed::space_node::shader_preview_startjob(), square_roughness_node_insert(), update_mapping_node_inputs_and_properties(), update_noise_and_wave_distortion(), update_vector_math_node_add_and_subtract_operators(), update_vector_math_node_average_operator(), update_vector_math_node_cross_product_operator(), update_vector_math_node_normalize_operator(), update_voronoi_node_crackle(), update_voronoi_node_square_distance(), version_geometry_nodes_replace_transfer_attribute_node(), version_principled_bsdf_specular_tint(), version_principled_bsdf_subsurface(), version_refraction_depth_to_thickness_value(), version_replace_texcoord_normal_socket(), versioning_replace_musgrave_texture_node(), versioning_replace_splitviewer(), and versioning_update_noise_texture_node().

◆ node_add_static_socket()

bNodeSocket * blender::bke::node_add_static_socket ( bNodeTree & ntree,
bNode & node,
eNodeSocketInOut in_out,
int type,
int subtype,
StringRefNull identifier,
StringRefNull name )

Definition at line 3197 of file node.cc.

References CLOG_ERROR, LOG, name, node_add_socket(), node_static_socket_type(), and bNodeSocket::type.

Referenced by blender::nodes::decl::Bool::build(), blender::nodes::decl::Bundle::build(), blender::nodes::decl::Closure::build(), blender::nodes::decl::Color::build(), blender::nodes::decl::Float::build(), blender::nodes::decl::Int::build(), blender::nodes::decl::Matrix::build(), blender::nodes::decl::Menu::build(), blender::nodes::decl::Rotation::build(), blender::nodes::decl::String::build(), cmp_node_image_add_pass_output(), do_version_alpha_over_node_options_to_inputs(), do_version_anti_alias_node_options_to_inputs(), do_version_bilateral_blur_node_options_to_inputs(), do_version_blur_node_options_to_inputs(), do_version_bokeh_blur_node_options_to_inputs(), do_version_bokeh_image_node_options_to_inputs(), do_version_box_mask_node_options_to_inputs(), do_version_channel_matte_node_options_to_inputs(), do_version_chroma_matte_node_options_to_inputs(), do_version_color_balance_node_options_to_inputs(), do_version_color_correction_node_options_to_inputs(), do_version_color_matte_node_options_to_inputs(), do_version_color_spill_node_options_to_inputs(), do_version_crop_node_options_to_inputs(), do_version_denoise_node_options_to_inputs(), do_version_despeckle_node_options_to_inputs(), do_version_difference_matte_node_options_to_inputs(), do_version_dilate_node_options_to_inputs(), do_version_directional_blur_node_options_to_inputs(), do_version_distance_matte_node_options_to_inputs(), do_version_ellipse_mask_node_options_to_inputs(), do_version_flip_node_options_to_inputs(), do_version_glare_node_star_45_option_to_input(), do_version_hue_sat_node(), do_version_id_mask_node_options_to_inputs(), do_version_inpaint_node_options_to_inputs(), do_version_invert_node_options_to_inputs(), do_version_keying_node_options_to_inputs(), do_version_keying_screen_node_options_to_inputs(), do_version_kuwahara_node_options_to_inputs(), do_version_lens_distortion_node_options_to_inputs(), do_version_luminance_matte_node_options_to_inputs(), do_version_mask_node_options_to_inputs(), do_version_pixelate_node_options_to_inputs(), do_version_plane_track_deform_node_options_to_inputs(), do_version_split_node_options_to_inputs(), do_version_split_node_rotation(), do_version_stabilize_node_options_to_inputs(), do_version_sun_beams_node_options_to_inputs(), do_version_switch_node_options_to_inputs(), do_version_time_curve_node_options_to_inputs(), do_version_tone_map_node_options_to_inputs(), do_version_vector_blur_node_options_to_inputs(), do_version_z_combine_node_options_to_inputs(), node_add_socket_from_template(), blender::nodes::node_composite_legacy_cryptomatte_cc::node_init_cryptomatte_legacy(), ntreeCompositCryptomatteAddSocket(), ntreeCompositOutputFileAddSocket(), version_geometry_nodes_set_position_node_offset(), version_node_add_socket_if_not_exist(), version_principled_bsdf_coat(), version_principled_bsdf_emission(), version_principled_bsdf_subsurface(), and versioning_replace_splitviewer().

◆ node_attach_node()

◆ node_blend_read_data_storage()

◆ node_blend_write_storage()

◆ node_chain_iterator()

void blender::bke::node_chain_iterator ( const bNodeTree * ntree,
const bNode * node_start,
bool(* callback )(bNode *, bNode *, void *, const bool),
void * userdata,
bool reversed )

Iterate over a chain of nodes, starting with node_start, executing callback for each node (which can return false to end iterator).

Parameters
reversedfor backwards iteration
Note
Recursive

Definition at line 3340 of file node.cc.

References bNodeTree::links, LISTBASE_FOREACH, node_chain_iterator(), and NODE_LINK_VALID.

Referenced by node_chain_iterator(), blender::ed::space_node::node_link_insert_offset_ntree(), and blender::io::usd::world_material_to_dome_light().

◆ node_chain_iterator_backwards()

void blender::bke::node_chain_iterator_backwards ( const bNodeTree * ntree,
bNode * node_start,
bool(* callback )(bNode *, bNode *, void *),
void * userdata,
int recursion_lvl )

Iterate over a chain of nodes, starting with node_start, executing callback for each node (which can return false to end iterator).

Faster than node_chain_iterator. Iter only once per node. Can be called recursively (using another node_chain_iteratorBackwards) by setting the recursion_lvl accordingly.

WARN: No node is guaranteed to be iterated as a to_node, since it could have been iterated earlier as a from_node.

Note
Needs updated socket links (ntreeUpdateTree).
Recursive

Definition at line 3421 of file node.cc.

References BLI_assert, iter_backwards_ex(), LISTBASE_FOREACH, and bNodeTree::nodes.

Referenced by ntree_shader_copy_branch(), ntree_shader_pruned_unused(), and ntree_shader_weight_tree_invert().

◆ node_clear_active()

void blender::bke::node_clear_active ( bNodeTree & ntree)

Definition at line 4717 of file node.cc.

References bNode::flag, and NODE_ACTIVE.

◆ node_color_tag()

◆ node_copy_with_mapping()

bNode * blender::bke::node_copy_with_mapping ( bNodeTree * dst_tree,
const bNode & node_src,
int flag,
std::optional< StringRefNull > dst_unique_name,
std::optional< int > dst_unique_identifier,
Map< const bNodeSocket *, bNodeSocket * > & new_socket_map,
bool allow_duplicate_names = false )
Note
keeps socket list order identical, for copying links.
Parameters
dst_nameThe name of the copied node. This is expected to be unique in the destination tree if provided. If not provided, the src name is used and is made unique unless allow_duplicate_names is true.
dst_identifierSame ad dst_name, but for the identifier.

Definition at line 3553 of file node.cc.

References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add_new(), BKE_ntree_update_tag_node_new(), BLI_addtail(), BLI_assert, BLI_listbase_clear(), flag, bNodeLink::fromnode, bNodeLink::fromsock, bNode::id, id_us_plus(), bNode::identifier, IDP_CopyProperty_ex(), bNode::inputs, LIB_ID_CREATE_NO_MAIN, LIB_ID_CREATE_NO_USER_REFCOUNT, LISTBASE_FOREACH, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup(), MEM_dupallocN(), MEM_mallocN(), bNode::name, node_socket_copy(), node_unique_id(), node_unique_name(), bNodeTree::nodes, bNode::outputs, bNode::panel_states_array, bNode::prop, ptr, RNA_pointer_create_discrete(), bNode::runtime, bNodeTree::runtime, STRNCPY_UTF8, bNode::system_properties, bNodeLink::tonode, bNodeLink::tosock, and bNode::typeinfo.

Referenced by blender::ed::space_node::NodeClipboard::copy_add_node(), blender::ed::space_node::node_clipboard_paste_exec(), blender::ed::space_node::node_duplicate_exec(), blender::ed::space_node::node_group_make_wrapper(), blender::ed::space_node::node_group_separate_selected(), ntree_copy_data(), and ntree_shader_copy_branch().

◆ node_count_links()

int blender::bke::node_count_links ( const bNodeTree * ntree,
const bNodeSocket * socket )
static

Definition at line 3799 of file node.cc.

References count, ELEM, bNodeTree::links, and LISTBASE_FOREACH.

Referenced by node_add_link().

◆ node_count_socket_links()

int blender::bke::node_count_socket_links ( const bNodeTree & ntree,
const bNodeSocket & sock )

◆ node_declaration_ensure()

bool blender::bke::node_declaration_ensure ( bNodeTree & ntree,
bNode & node )

If the node implements a declare function, this function makes sure that node->declaration is up to date. It is expected that the sockets of the node are up to date already.

Definition at line 4818 of file node.cc.

References node_declaration_ensure_on_outdated_node(), and node_socket_declarations_update().

Referenced by blender::ed::space_node::get_main_socket(), blender::ed::space_node::node_clipboard_paste_exec(), blender::ed::space_node::node_duplicate_exec(), blender::ed::space_node::node_group_separate_selected(), and ntree_copy_data().

◆ node_declaration_ensure_on_outdated_node()

bool blender::bke::node_declaration_ensure_on_outdated_node ( bNodeTree & ntree,
bNode & node )

Just update node->declaration if necessary. This can also be called on nodes that may not be up to date (e.g. because the need versioning or are dynamic).

Definition at line 4798 of file node.cc.

References bNode::runtime, bNode::typeinfo, and blender::nodes::update_node_declaration_and_sockets().

Referenced by node_declaration_ensure(), and node_verify_sockets().

◆ node_detach_node()

◆ node_dimensions_get()

float2 blender::bke::node_dimensions_get ( const bNode & node)

Definition at line 4827 of file node.cc.

References bNode::runtime.

◆ node_find_enabled_input_socket()

◆ node_find_enabled_output_socket()

bNodeSocket * blender::bke::node_find_enabled_output_socket ( bNode & node,
StringRef name )

◆ node_find_enabled_socket()

◆ node_find_interface_input_by_identifier()

const bNodeTreeInterfaceSocket * blender::bke::node_find_interface_input_by_identifier ( const bNodeTree & ntree,
StringRef identifier )

Try to find an input item with the given identifier in the entire node interface tree.

Definition at line 3306 of file node.cc.

References input.

Referenced by getname_anim_fcurve().

◆ node_find_node() [1/2]

bNode & blender::bke::node_find_node ( bNodeTree & ntree,
bNodeSocket & socket )

Find the node that contains the given socket. This uses the node topology cache, meaning subsequent access after changing the node tree will be more expensive, but amortized over time, the cost is constant.

Definition at line 3281 of file node.cc.

Referenced by getname_anim_fcurve(), and UI_context_copy_to_selected_list().

◆ node_find_node() [2/2]

const bNode & blender::bke::node_find_node ( const bNodeTree & ntree,
const bNodeSocket & socket )

Definition at line 3287 of file node.cc.

◆ node_find_node_by_name()

◆ node_find_node_try()

bNode * blender::bke::node_find_node_try ( bNodeTree & ntree,
bNodeSocket & socket )

Finds a node based on given socket, returning null in the case where the socket is not part of the node tree.

Definition at line 3293 of file node.cc.

References bNodeSocket::in_out, LISTBASE_FOREACH, and SOCK_IN.

◆ node_find_root_parent()

bNode * blender::bke::node_find_root_parent ( bNode & node)
Note
Recursive.

Definition at line 3318 of file node.cc.

References bNode::parent.

◆ node_find_socket() [1/2]

bNodeSocket * blender::bke::node_find_socket ( bNode & node,
eNodeSocketInOut in_out,
StringRef identifier )

Definition at line 2532 of file node.cc.

References bNode::inputs, LISTBASE_FOREACH, bNode::outputs, and SOCK_IN.

Referenced by add_auto_smooth_node_tree(), blender::ed::space_node::add_existing_group_input_fn(), blender::ed::space_node::add_group_input_node_fn(), blender::io::usd::add_input_named_attrib_node(), blender::io::usd::add_lessthan(), blender::io::usd::add_oneminus(), blender::io::usd::add_scale_bias(), blender::io::usd::add_scale_bias_adjust(), ambient_occlusion_node_relink(), blender::io::usd::append_node(), blo_do_versions_300(), BLO_update_defaults_startup_blend(), change_input_socket_to_rotation_type(), change_output_socket_to_rotation_type(), clamp_subdivision_node_level_input(), blender::nodes::node_composite_channel_matte_cc::cmp_node_channel_matte_declare(), blender::io::usd::configure_displacement(), blender::nodes::LinkSearchOpParams::connect_available_socket_by_identifier(), blender::ed::space_node::connect_node_to_surface_output(), blender::ed::space_node::connect_nodes_to_aovs(), blender::io::obj::copy_property_from_node(), blender::io::usd::create_transform2d_shader(), blender::io::usd::create_usd_preview_surface_material(), default_paint_slot_color_get(), displacement_node_insert(), do_version_alpha_over_node_options_to_inputs(), do_version_alpha_over_remove_premultiply(), do_version_anti_alias_node_options_to_inputs(), do_version_bilateral_blur_node_options_to_inputs(), do_version_blur_defocus_nodes_remove_gamma(), do_version_blur_menus_to_inputs(), do_version_blur_node_options_to_inputs(), do_version_bokeh_blur_node_options_to_inputs(), do_version_bokeh_blur_pixel_size(), do_version_bokeh_image_node_options_to_inputs(), do_version_box_mask_menus_to_inputs(), do_version_box_mask_node_options_to_inputs(), do_version_bright_contrast_remove_premultiplied(), do_version_bump_filter_width(), do_version_channel_matte_menus_to_inputs(), do_version_channel_matte_node_options_to_inputs(), do_version_chroma_matte_node_options_to_inputs(), do_version_color_balance_menus_to_inputs(), do_version_color_balance_node_options_to_inputs(), do_version_color_correction_node_options_to_inputs(), do_version_color_matte_node_options_to_inputs(), do_version_color_spill_menus_to_inputs(), do_version_color_spill_node_options_to_inputs(), do_version_color_to_float_conversion(), do_version_composite_node_in_scene_tree(), do_version_composite_viewer_remove_alpha(), do_version_convert_alpha_menus_to_inputs(), do_version_convert_to_generic_nodes(), do_version_corner_pin_menus_to_inputs(), do_version_crop_node_options_to_inputs(), do_version_denoise_menus_to_inputs(), do_version_denoise_node_options_to_inputs(), do_version_despeckle_node_options_to_inputs(), do_version_difference_matte_node_options_to_inputs(), do_version_dilate_menus_to_inputs(), do_version_dilate_node_options_to_inputs(), do_version_directional_blur_node_options_to_inputs(), do_version_displace_menus_to_inputs(), do_version_displace_node_remove_xy_scale(), do_version_distance_matte_menus_to_inputs(), do_version_distance_matte_node_options_to_inputs(), do_version_distribute_points_in_volume_options_to_inputs(), do_version_double_edge_mask_options_to_inputs(), do_version_ellipse_mask_menus_to_inputs(), do_version_ellipse_mask_node_options_to_inputs(), do_version_fill_curve_options_to_inputs(), do_version_fillet_curve_options_to_inputs(), do_version_filter_menus_to_inputs(), do_version_flip_node_options_to_inputs(), do_version_glare_menus_to_inputs(), do_version_glare_node_star_45_option_to_input(), do_version_hue_sat_node(), do_version_id_mask_node_options_to_inputs(), do_version_inpaint_node_options_to_inputs(), do_version_invert_node_options_to_inputs(), do_version_keying_menus_to_inputs(), do_version_keying_node_options_to_inputs(), do_version_keying_screen_node_options_to_inputs(), do_version_kuwahara_menus_to_inputs(), do_version_kuwahara_node_options_to_inputs(), do_version_lens_distortion_menus_to_inputs(), do_version_lens_distortion_node_options_to_inputs(), do_version_levels_menus_to_inputs(), do_version_lift_gamma_gain_srgb_to_linear(), do_version_luminance_matte_node_options_to_inputs(), do_version_map_uv_menus_to_inputs(), do_version_map_value_node(), do_version_mask_menus_to_inputs(), do_version_mask_node_options_to_inputs(), do_version_match_string_options_to_inputs(), do_version_material_remove_use_nodes(), do_version_merge_by_distance_options_to_inputs(), do_version_mesh_to_volume_options_to_inputs(), do_version_mix_color_use_alpha(), do_version_movie_distortion_menus_to_inputs(), do_version_new_glare_clamp_input(), do_version_node_curve_to_mesh_scale_input(), do_version_normal_node_dot_product(), do_version_pixelate_node_options_to_inputs(), do_version_plane_track_deform_node_options_to_inputs(), do_version_points_to_volume_options_to_inputs(), do_version_raycast_options_to_inputs(), do_version_remove_attribute_options_to_inputs(), do_version_replace_image_info_node_coordinates(), do_version_resample_curve_options_to_inputs(), do_version_rotate_menus_to_inputs(), do_version_sample_grid_options_to_inputs(), do_version_scale_elements_options_to_inputs(), do_version_scale_menus_to_inputs(), do_version_scale_node_remove_translate(), do_version_set_alpha_menus_to_inputs(), do_version_set_curve_normal_options_to_inputs(), do_version_split_node_options_to_inputs(), do_version_split_node_rotation(), do_version_stabilize_2d_menus_to_inputs(), do_version_stabilize_node_options_to_inputs(), do_version_subdivision_surface_options_to_inputs(), do_version_sun_beams(), do_version_sun_beams_node_options_to_inputs(), do_version_switch_node_options_to_inputs(), do_version_texture_gradient_clamp(), do_version_time_curve_node_options_to_inputs(), do_version_tone_map_menus_to_inputs(), do_version_tone_map_node_options_to_inputs(), do_version_track_position_menus_to_inputs(), do_version_transform_geometry_options_to_inputs(), do_version_transform_menus_to_inputs(), do_version_translate_menus_to_inputs(), do_version_translate_node_remove_relative(), do_version_triangulate_options_to_inputs(), do_version_uv_pack_islands_options_to_inputs(), do_version_uv_unwrap_options_to_inputs(), do_version_vector_blur_node_options_to_inputs(), do_version_volume_to_mesh_options_to_inputs(), do_version_z_combine_node_options_to_inputs(), do_versions_material_convert_legacy_blend_mode(), blender::io::usd::dome_light_to_world_material(), ED_node_shader_default(), ED_preview_prepare_world_simple(), ED_preview_world_simple_set_rgb(), blender::ed::curves::ensure_surface_deformation_node_exists(), fix_geometry_nodes_object_info_scale(), get_input_socket(), blender::ed::space_node::gizmo_node_box_mask_prop_matrix_get(), blender::ed::space_node::gizmo_node_box_mask_prop_matrix_set(), blender::ed::space_node::gizmo_node_split_prop_matrix_get(), blender::ed::space_node::gizmo_node_split_prop_matrix_set(), light_emission_node_to_energy(), link_nodes(), blender::io::fbx::link_sockets(), blender::io::obj::link_sockets(), blender::eevee::LookdevWorld::LookdevWorld(), material_default_holdout_init(), material_default_surface_init(), material_default_volume_init(), blender::eevee::MaterialModule::MaterialModule(), blender::ed::space_node::node_add_collection_exec(), blender::ed::space_node::node_add_group_input_node_exec(), blender::ed::space_node::node_add_object_exec(), blender::ed::space_node::node_clipboard_paste_exec(), node_find_socket(), blender::ed::space_node::node_input_from_rect(), blender::ed::space_node::node_input_to_rect(), blender::io::usd::node_search(), blender::nodes::node_shader_mapping_cc::node_shader_update_mapping(), blender::nodes::node_shader_bsdf_metallic_cc::node_shader_update_metallic(), blender::nodes::node_shader_bsdf_principled_cc::node_shader_update_principled(), blender::nodes::node_shader_tex_sky_cc::node_shader_update_sky(), blender::nodes::node_shader_tex_gabor_cc::node_shader_update_tex_gabor(), blender::nodes::node_shader_tex_noise_cc::node_shader_update_tex_noise(), blender::nodes::node_shader_tex_voronoi_cc::node_shader_update_tex_voronoi(), blender::nodes::node_shader_tex_white_noise_cc::node_shader_update_tex_white_noise(), blender::nodes::node_shader_vector_math_cc::node_shader_update_vector_math(), blender::nodes::node_shader_vector_rotate_cc::node_shader_update_vector_rotate(), node_tree_relink_with_socket_id_map(), blender::nodes::node_composite_relative_to_pixel_cc::node_update(), blender::bke::greasepencil::convert::offset_radius_node_tree_add(), blender::nodes::node_composite_filter_cc::SocketSearchOp::operator()(), blender::nodes::node_composite_glare_cc::SocketSearchOp::operator()(), blender::ed::space_node::prepare_viewlayer_update(), blender::io::usd::process_inputs(), proj_paint_add_slot(), blender::io::usd::USDPointInstancerReader::read_object_data(), remove_triangulate_node_min_size_input(), blender::io::usd::USDPointInstancerReader::set_collection(), blender::io::usd::USDMaterialReader::set_displacement_node_inputs(), blender::io::usd::USDMaterialReader::set_node_input(), blender::io::usd::USDMaterialReader::set_principled_node_inputs(), blender::io::obj::set_property_of_socket(), blender::io::fbx::set_socket_float(), blender::io::fbx::set_socket_rgb(), blender::io::fbx::set_socket_vector(), blender::ed::space_node::shader_preview_startjob(), blender::nodes::socket_items::try_add_item_via_extend_socket(), update_mapping_node_inputs_and_properties(), update_noise_and_wave_distortion(), update_vector_math_node_add_and_subtract_operators(), update_vector_math_node_average_operator(), update_vector_math_node_cross_product_operator(), update_vector_math_node_dot_product_operator(), update_vector_math_node_normalize_operator(), update_voronoi_node_coloring(), update_voronoi_node_crackle(), update_voronoi_node_square_distance(), update_wave_node_directions_and_offset(), blender::nodes::BaseSocketDeclarationBuilder::usage_by_menu(), version_geometry_nodes_extrude_smooth_propagation(), version_geometry_nodes_replace_transfer_attribute_node(), version_geometry_nodes_use_rotation_socket(), version_mesh_crease_generic(), version_node_add_socket_if_not_exist(), version_node_socket_duplicate(), version_principled_bsdf_coat(), version_principled_bsdf_emission(), version_principled_bsdf_sheen(), version_principled_bsdf_specular_tint(), version_principled_bsdf_subsurface(), version_principled_transmission_roughness(), version_refraction_depth_to_thickness_value(), version_replace_texcoord_normal_socket(), version_replace_velvet_sheen_node(), version_update_node_input(), versioning_eevee_alpha_source_get(), versioning_eevee_material_blend_mode_settings(), versioning_eevee_material_shadow_none(), versioning_replace_musgrave_texture_node(), versioning_replace_splitviewer(), versioning_update_noise_texture_node(), blender::ed::space_node::WIDGETGROUP_node_crop_refresh(), blender::ed::space_node::WIDGETGROUP_node_glare_poll(), blender::ed::space_node::WIDGETGROUP_node_glare_refresh(), blender::ed::space_node::WIDGETGROUP_node_mask_refresh(), blender::ed::space_node::WIDGETGROUP_node_split_refresh(), and blender::bke::forward_compat::write_legacy_properties().

◆ node_find_socket() [2/2]

const bNodeSocket * blender::bke::node_find_socket ( const bNode & node,
eNodeSocketInOut in_out,
StringRef identifier )

Definition at line 2545 of file node.cc.

References node_find_socket().

◆ node_foreach_cache()

void blender::bke::node_foreach_cache ( ID * id,
IDTypeForeachCacheFunctionCallback function_callback,
void * user_data )
static

◆ node_foreach_id()

◆ node_foreach_path()

◆ node_foreach_working_space_color()

◆ node_free_node()

◆ node_free_socket_type()

void blender::bke::node_free_socket_type ( void * socktype_v)
static

Definition at line 2480 of file node.cc.

References defer_free_socket_type(), G_MAIN, and update_typeinfo().

Referenced by node_system_exit(), and node_unregister_socket_type().

◆ node_free_type()

void blender::bke::node_free_type ( void * nodetype_v)
static

◆ node_get_active()

bNode * blender::bke::node_get_active ( bNodeTree & ntree)

Definition at line 4685 of file node.cc.

References bNode::flag, and NODE_ACTIVE.

Referenced by blender::nodes::socket_items::ops::get_active_node_to_operate_on(), blender::ed::space_node::node_activate_viewer_exec(), blender::ed::space_node::node_active_link_viewer_exec(), blender::ed::space_node::node_context(), blender::ed::space_node::node_copy_color_exec(), blender::ed::space_node::node_cryptomatte_add_socket_exec(), blender::ed::space_node::node_cryptomatte_remove_socket_exec(), node_get_active_paint_canvas(), node_get_active_texture(), blender::ed::space_node::node_group_get_active(), blender::ed::space_node::node_join_nodes_exec(), blender::ed::space_node::node_parent_set_exec(), blender::ed::space_node::node_resize_exit(), blender::ed::space_node::node_resize_invoke(), blender::ed::space_node::node_resize_modal(), blender::ed::space_node::node_select_grouped_exec(), blender::ed::space_node::node_select_same_type_step_exec(), blender::ed::space_node::node_shader_script_update_exec(), blender::ed::space_node::node_shader_script_update_poll(), blender::ed::space_node::node_toggle_viewer_exec(), blender::ed::space_node::WIDGETGROUP_node_box_mask_poll(), blender::ed::space_node::WIDGETGROUP_node_corner_pin_poll(), blender::ed::space_node::WIDGETGROUP_node_corner_pin_refresh(), blender::ed::space_node::WIDGETGROUP_node_crop_poll(), blender::ed::space_node::WIDGETGROUP_node_crop_refresh(), blender::ed::space_node::WIDGETGROUP_node_ellipse_mask_poll(), blender::ed::space_node::WIDGETGROUP_node_glare_poll(), blender::ed::space_node::WIDGETGROUP_node_glare_refresh(), blender::ed::space_node::WIDGETGROUP_node_mask_refresh(), blender::ed::space_node::WIDGETGROUP_node_split_poll(), blender::ed::space_node::WIDGETGROUP_node_split_refresh(), and blender::ed::space_node::WIDGETGROUP_node_transform_poll().

◆ node_get_active_paint_canvas()

bNode * blender::bke::node_get_active_paint_canvas ( bNodeTree & ntree)

Definition at line 331 of file node_shader_util.cc.

References NODE_ACTIVE_PAINT_CANVAS, and node_get_active().

Referenced by BKE_texpaint_slot_refresh_cache().

◆ node_get_active_texture()

bNode * blender::bke::node_get_active_texture ( bNodeTree & ntree)

Two active flags, ID nodes have special flag for buttons display.

Definition at line 326 of file node_shader_util.cc.

References NODE_ACTIVE_TEXTURE, and node_get_active().

Referenced by ED_object_assign_active_image(), and ED_object_get_active_image().

◆ node_group_poll()

bool blender::bke::node_group_poll ( const bNodeTree * nodetree,
const bNodeTree * grouptree,
const char ** r_disabled_hint )

◆ node_hash_int_str()

bNodeInstanceKey blender::bke::node_hash_int_str ( bNodeInstanceKey hash,
const char * str )
static

Definition at line 4853 of file node.cc.

References hash, and str.

Referenced by node_instance_key().

◆ node_ids_to_vector()

Vector< const bNode * > blender::bke::node_ids_to_vector ( const bNodeTree & tree,
const Vector< int > & node_ids )
static

◆ node_init()

◆ node_instance_key()

◆ node_internal_links()

void blender::bke::node_internal_links ( bNode & node,
bNodeLink ** r_links,
int * r_len )

Definition at line 4838 of file node.cc.

References bNode::runtime.

◆ node_internal_relink()

◆ node_is_connected_to_output()

◆ node_is_dangling_reroute()

bool blender::bke::node_is_dangling_reroute ( const bNodeTree & ntree,
const bNode & node )

A dangling reroute node is a reroute node that does not have a "data source", i.e. no non-reroute node is connected to its input.

◆ node_is_parent_and_child()

bool blender::bke::node_is_parent_and_child ( const bNode & parent,
const bNode & child )

Definition at line 3330 of file node.cc.

References bNode::parent.

Referenced by blender::ed::space_node::can_attach_node_to_frame(), and node_attach_node().

◆ node_is_static_socket_type()

◆ node_label()

◆ node_link_is_hidden()

◆ node_link_is_selected()

bool blender::bke::node_link_is_selected ( const bNodeLink & link)

◆ node_link_set_mute()

void blender::bke::node_link_set_mute ( bNodeTree & ntree,
bNodeLink & link,
const bool muted )

Set the mute status of a single link.

Definition at line 3864 of file node.cc.

References BKE_ntree_update_tag_link_mute(), bNodeLink::flag, NODE_LINK_MUTED, and SET_FLAG_FROM_TEST.

Referenced by blender::ed::space_node::mute_links_exec().

◆ node_modify_socket_type()

◆ node_modify_socket_type_static()

void blender::bke::node_modify_socket_type_static ( bNodeTree * ntree,
bNode * node,
bNodeSocket * sock,
int type,
int subtype )

◆ node_node_foreach_id()

◆ node_owner_pointer_get()

ID ** blender::bke::node_owner_pointer_get ( ID * id,
const bool debug_relationship_assert )
static

Definition at line 542 of file node.cc.

References BLI_assert, ID_FLAG_EMBEDDED_DATA, node_tree_from_id(), and bNodeTree::owner_id.

◆ node_parents_iterator()

void blender::bke::node_parents_iterator ( bNode * node,
bool(* callback )(bNode *, void *),
void * userdata )

Iterate over all parents of node, executing callback for each parent (which can return false to end iterator)

Note
Recursive

Definition at line 3443 of file node.cc.

References node_parents_iterator(), and bNode::parent.

Referenced by blender::ed::space_node::node_link_insert_offset_ntree(), and node_parents_iterator().

◆ node_poll_default()

bool blender::bke::node_poll_default ( const bNodeType * ,
const bNodeTree * ,
const char **  )
static

Definition at line 5072 of file node.cc.

Referenced by node_type_base().

◆ node_poll_instance_default()

bool blender::bke::node_poll_instance_default ( const bNode * node,
const bNodeTree * ntree,
const char ** r_disabled_hint )
static

Definition at line 5079 of file node.cc.

References bNode::typeinfo.

Referenced by node_type_base().

◆ node_position_propagate()

◆ node_position_relative()

void blender::bke::node_position_relative ( bNode & from_node,
const bNode & to_node,
const bNodeSocket * from_sock,
const bNodeSocket & to_sock )

◆ node_preview_init_tree()

void blender::bke::node_preview_init_tree ( bNodeTree * ntree,
int xsize,
int ysize )

◆ node_preview_init_tree_recursive()

void blender::bke::node_preview_init_tree_recursive ( Map< bNodeInstanceKey, bNodePreview > & previews,
bNodeTree * ntree,
bNodeInstanceKey parent_key,
const int xsize,
const int ysize )
static

◆ node_preview_merge_tree()

void blender::bke::node_preview_merge_tree ( bNodeTree * to_ntree,
bNodeTree * from_ntree,
bool remove_old )

Definition at line 4240 of file node.cc.

References node_preview_remove_unused(), and bNodeTree::runtime.

Referenced by local_merge().

◆ node_preview_remove_unused()

◆ node_preview_used()

bool blender::bke::node_preview_used ( const bNode & node)

Definition at line 4126 of file node.cc.

References NODE_PREVIEW, and bNode::typeinfo.

Referenced by collect_used_previews(), and node_preview_init_tree_recursive().

◆ node_preview_verify()

◆ node_rebuild_id_vector()

void blender::bke::node_rebuild_id_vector ( bNodeTree & node_tree)

Rebuild the node_by_id runtime vector set. Call after removing a node if not handled separately. This is important instead of just using nodes_by_id.remove() since it maintains the node order.

Definition at line 4291 of file node.cc.

References i, LISTBASE_FOREACH_INDEX, bNodeTree::nodes, bNode::runtime, and bNodeTree::runtime.

Referenced by node_free_node(), blender::ed::space_node::node_group_make_insert_selected(), blender::ed::space_node::node_group_separate_selected(), node_remove_node(), node_tree_free_local_node(), version_geometry_nodes_extrude_smooth_propagation(), version_geometry_nodes_primitive_uv_maps(), and version_node_remove().

◆ node_register_alias()

void blender::bke::node_register_alias ( bNodeType & nt,
StringRef alias )

◆ node_register_socket_type()

void blender::bke::node_register_socket_type ( bNodeSocketType & stype)

Definition at line 2494 of file node.cc.

References G_MAIN, get_socket_type_map(), and update_typeinfo().

Referenced by register_standard_node_socket_types().

◆ node_register_type()

void blender::bke::node_register_type ( bNodeType & ntype)

Definition at line 2416 of file node.cc.

References BLI_assert, blender::nodes::build_node_declaration(), blender::bke::bNodeType::declare, blender::bke::bNodeType::enum_name_legacy, G_MAIN, get_node_type_map(), blender::bke::bNodeType::idname, blender::bke::bNodeType::poll, RNA_def_struct_ui_text(), blender::bke::bNodeType::rna_ext, ExtensionRNA::srna, blender::bke::bNodeType::static_declaration, blender::bke::bNodeType::ui_description, blender::bke::bNodeType::ui_name, and update_typeinfo().

Referenced by blender::nodes::node_composite_convolve_cc::node_register(), blender::nodes::node_composite_file_output_cc::node_register(), blender::nodes::node_fn_align_euler_to_vector_cc::node_register(), blender::nodes::node_fn_align_rotation_to_vector_cc::node_register(), blender::nodes::node_fn_axes_to_rotation_cc::node_register(), blender::nodes::node_fn_axis_angle_to_rotation_cc::node_register(), blender::nodes::node_fn_bit_math_cc::node_register(), blender::nodes::node_fn_boolean_math_cc::node_register(), blender::nodes::node_fn_combine_color_cc::node_register(), blender::nodes::node_fn_combine_matrix_cc::node_register(), blender::nodes::node_fn_combine_transform_cc::node_register(), blender::nodes::node_fn_compare_cc::node_register(), blender::nodes::node_fn_euler_to_rotation_cc::node_register(), blender::nodes::node_fn_find_in_string_cc::node_register(), blender::nodes::node_fn_float_to_int_cc::node_register(), blender::nodes::node_fn_format_string_cc::node_register(), blender::nodes::node_fn_hash_value_cc::node_register(), blender::nodes::node_fn_input_bool_cc::node_register(), blender::nodes::node_fn_input_color_cc::node_register(), blender::nodes::node_fn_input_int_cc::node_register(), blender::nodes::node_fn_input_rotation_cc::node_register(), blender::nodes::node_fn_input_special_characters_cc::node_register(), blender::nodes::node_fn_input_string_cc::node_register(), blender::nodes::node_fn_input_vector_cc::node_register(), blender::nodes::node_fn_integer_math_cc::node_register(), blender::nodes::node_fn_invert_matrix_cc::node_register(), blender::nodes::node_fn_invert_rotation_cc::node_register(), blender::nodes::node_fn_match_string_cc::node_register(), blender::nodes::node_fn_matrix_determinant_cc::node_register(), blender::nodes::node_fn_matrix_multiply_cc::node_register(), blender::nodes::node_fn_project_point_cc::node_register(), blender::nodes::node_fn_quaternion_to_rotation_cc::node_register(), blender::nodes::node_fn_random_value_cc::node_register(), blender::nodes::node_fn_replace_string_cc::node_register(), blender::nodes::node_fn_rotate_euler_cc::node_register(), blender::nodes::node_fn_rotate_rotation_cc::node_register(), blender::nodes::node_fn_rotate_vector_cc::node_register(), blender::nodes::node_fn_rotation_to_axis_angle_cc::node_register(), blender::nodes::node_fn_rotation_to_euler_cc::node_register(), blender::nodes::node_fn_rotation_to_quaternion_cc::node_register(), blender::nodes::node_fn_separate_color_cc::node_register(), blender::nodes::node_fn_separate_matrix_cc::node_register(), blender::nodes::node_fn_separate_transform_cc::node_register(), blender::nodes::node_fn_slice_string_cc::node_register(), blender::nodes::node_fn_string_length_cc::node_register(), blender::nodes::node_fn_string_to_value_cc::node_register(), blender::nodes::node_fn_transform_direction_cc::node_register(), blender::nodes::node_fn_transform_point_cc::node_register(), blender::nodes::node_fn_transpose_matrix_cc::node_register(), blender::nodes::node_fn_value_to_string_cc::node_register(), blender::nodes::node_geo_accumulate_field_cc::node_register(), blender::nodes::node_geo_attribute_capture_cc::node_register(), blender::nodes::node_geo_attribute_domain_size_cc::node_register(), blender::nodes::node_geo_attribute_statistic_cc::node_register(), blender::nodes::node_geo_bake_cc::node_register(), blender::nodes::node_geo_blur_attribute_cc::node_register(), blender::nodes::node_geo_boolean_cc::node_register(), blender::nodes::node_geo_bounding_box_cc::node_register(), blender::nodes::node_geo_camera_info_cc::node_register(), blender::nodes::node_geo_closure_cc::input_node::node_register(), blender::nodes::node_geo_closure_cc::output_node::node_register(), blender::nodes::node_geo_collection_info_cc::node_register(), blender::nodes::node_geo_combine_bundle_cc::node_register(), blender::nodes::node_geo_convex_hull_cc::node_register(), blender::nodes::node_geo_curve_endpoint_selection_cc::node_register(), blender::nodes::node_geo_curve_fill_cc::node_register(), blender::nodes::node_geo_curve_fillet_cc::node_register(), blender::nodes::node_geo_curve_handle_type_selection_cc::node_register(), blender::nodes::node_geo_curve_length_cc::node_register(), blender::nodes::node_geo_curve_primitive_arc_cc::node_register(), blender::nodes::node_geo_curve_primitive_bezier_segment_cc::node_register(), blender::nodes::node_geo_curve_primitive_circle_cc::node_register(), blender::nodes::node_geo_curve_primitive_line_cc::node_register(), blender::nodes::node_geo_curve_primitive_quadratic_bezier_cc::node_register(), blender::nodes::node_geo_curve_primitive_quadrilateral_cc::node_register(), blender::nodes::node_geo_curve_primitive_spiral_cc::node_register(), blender::nodes::node_geo_curve_primitive_star_cc::node_register(), blender::nodes::node_geo_curve_resample_cc::node_register(), blender::nodes::node_geo_curve_reverse_cc::node_register(), blender::nodes::node_geo_curve_sample_cc::node_register(), blender::nodes::node_geo_curve_set_handle_type_cc::node_register(), blender::nodes::node_geo_curve_spline_parameter_cc::node_register(), blender::nodes::node_geo_curve_spline_type_cc::node_register(), blender::nodes::node_geo_curve_subdivide_cc::node_register(), blender::nodes::node_geo_curve_to_mesh_cc::node_register(), blender::nodes::node_geo_curve_to_points_cc::node_register(), blender::nodes::node_geo_curve_topology_curve_of_point_cc::node_register(), blender::nodes::node_geo_curve_topology_points_of_curve_cc::node_register(), blender::nodes::node_geo_curve_trim_cc::node_register(), blender::nodes::node_geo_curves_to_grease_pencil_cc::node_register(), blender::nodes::node_geo_deform_curves_on_surface_cc::node_register(), blender::nodes::node_geo_delete_geometry_cc::node_register(), blender::nodes::node_geo_distribute_points_in_grid_cc::node_register(), blender::nodes::node_geo_distribute_points_in_volume_cc::node_register(), blender::nodes::node_geo_distribute_points_on_faces_cc::node_register(), blender::nodes::node_geo_dual_mesh_cc::node_register(), blender::nodes::node_geo_duplicate_elements_cc::node_register(), blender::nodes::node_geo_edge_paths_to_curves_cc::node_register(), blender::nodes::node_geo_edge_paths_to_selection_cc::node_register(), blender::nodes::node_geo_edge_split_cc::node_register(), blender::nodes::node_geo_edges_to_face_groups_cc::node_register(), blender::nodes::node_geo_enable_output_cc::node_register(), blender::nodes::node_geo_evaluate_at_index_cc::node_register(), blender::nodes::node_geo_evaluate_closure_cc::node_register(), blender::nodes::node_geo_evaluate_on_domain_cc::node_register(), blender::nodes::node_geo_extrude_mesh_cc::node_register(), blender::nodes::node_geo_field_average_cc::node_register(), blender::nodes::node_geo_field_min_and_max_cc::node_register(), blender::nodes::node_geo_field_to_grid_cc::node_register(), blender::nodes::node_geo_field_variance_cc::node_register(), blender::nodes::node_geo_flip_faces_cc::node_register(), blender::nodes::node_geo_foreach_geometry_element_cc::input_node::node_register(), blender::nodes::node_geo_foreach_geometry_element_cc::output_node::node_register(), blender::nodes::node_geo_geometry_to_instance_cc::node_register(), blender::nodes::node_geo_get_named_grid_cc::node_register(), blender::nodes::node_geo_gizmo_dial_cc::node_register(), blender::nodes::node_geo_gizmo_linear_cc::node_register(), blender::nodes::node_geo_gizmo_transform_cc::node_register(), blender::nodes::node_geo_grease_pencil_set_depth_mode::node_register(), blender::nodes::node_geo_grease_pencil_to_curves_cc::node_register(), blender::nodes::node_geo_grid_advect_cc::node_register(), blender::nodes::node_geo_grid_curl_cc::node_register(), blender::nodes::node_geo_grid_divergence_cc::node_register(), blender::nodes::node_geo_grid_gradient_cc::node_register(), blender::nodes::node_geo_grid_info_cc::node_register(), blender::nodes::node_geo_grid_laplacian_cc::node_register(), blender::nodes::node_geo_grid_prune_cc::node_register(), blender::nodes::node_geo_grid_to_mesh_cc::node_register(), blender::nodes::node_geo_grid_voxelize_cc::node_register(), blender::nodes::node_geo_image_cc::node_register(), blender::nodes::node_geo_image_info_cc::node_register(), blender::nodes::node_geo_image_texture_cc::node_register(), blender::nodes::node_geo_import_csv::node_register(), blender::nodes::node_geo_import_obj::node_register(), blender::nodes::node_geo_import_stl::node_register(), blender::nodes::node_geo_import_text::node_register(), blender::nodes::node_geo_import_vdb::node_register(), blender::nodes::node_geo_index_of_nearest_cc::node_register(), blender::nodes::node_geo_input_active_camera_cc::node_register(), blender::nodes::node_geo_input_collection_cc::node_register(), blender::nodes::node_geo_input_curve_handles_cc::node_register(), blender::nodes::node_geo_input_curve_tilt_cc::node_register(), blender::nodes::node_geo_input_edge_smooth_cc::node_register(), blender::nodes::node_geo_input_face_smooth_cc::node_register(), blender::nodes::node_geo_input_id_cc::node_register(), blender::nodes::node_geo_input_index_cc::node_register(), blender::nodes::node_geo_input_instance_bounds_cc::node_register(), blender::nodes::node_geo_input_instance_rotation_cc::node_register(), blender::nodes::node_geo_input_instance_scale_cc::node_register(), blender::nodes::node_geo_input_instance_transform_cc::node_register(), blender::nodes::node_geo_input_material_cc::node_register(), blender::nodes::node_geo_input_material_index_cc::node_register(), blender::nodes::node_geo_input_mesh_edge_angle_cc::node_register(), blender::nodes::node_geo_input_mesh_edge_neighbors_cc::node_register(), blender::nodes::node_geo_input_mesh_edge_vertices_cc::node_register(), blender::nodes::node_geo_input_mesh_face_area_cc::node_register(), blender::nodes::node_geo_input_mesh_face_is_planar_cc::node_register(), blender::nodes::node_geo_input_mesh_face_neighbors_cc::node_register(), blender::nodes::node_geo_input_mesh_island_cc::node_register(), blender::nodes::node_geo_input_mesh_vertex_neighbors_cc::node_register(), blender::nodes::node_geo_input_named_attribute_cc::node_register(), blender::nodes::node_geo_input_named_layer_selection__cc::node_register(), blender::nodes::node_geo_input_normal_cc::node_register(), blender::nodes::node_geo_input_object_cc::node_register(), blender::nodes::node_geo_input_position_cc::node_register(), blender::nodes::node_geo_input_radius_cc::node_register(), blender::nodes::node_geo_input_scene_time_cc::node_register(), blender::nodes::node_geo_input_shortest_edge_paths_cc::node_register(), blender::nodes::node_geo_input_spline_cyclic_cc::node_register(), blender::nodes::node_geo_input_spline_length_cc::node_register(), blender::nodes::node_geo_input_spline_resolution_cc::node_register(), blender::nodes::node_geo_input_tangent_cc::node_register(), blender::nodes::node_geo_input_voxel_index_cc::node_register(), blender::nodes::node_geo_instance_on_points_cc::node_register(), blender::nodes::node_geo_instances_to_points_cc::node_register(), blender::nodes::node_geo_interpolate_curves_cc::node_register(), blender::nodes::node_geo_is_viewport_cc::node_register(), blender::nodes::node_geo_join_bundle::node_register(), blender::nodes::node_geo_join_geometry_cc::node_register(), blender::nodes::node_geo_list_cc::node_register(), blender::nodes::node_geo_list_get_item_cc::node_register(), blender::nodes::node_geo_list_length_cc::node_register(), blender::nodes::node_geo_material_replace_cc::node_register(), blender::nodes::node_geo_material_selection_cc::node_register(), blender::nodes::node_geo_merge_by_distance_cc::node_register(), blender::nodes::node_geo_merge_layers_cc::node_register(), blender::nodes::node_geo_mesh_face_group_boundaries_cc::node_register(), blender::nodes::node_geo_mesh_primitive_circle_cc::node_register(), blender::nodes::node_geo_mesh_primitive_cone_cc::node_register(), blender::nodes::node_geo_mesh_primitive_cube_cc::node_register(), blender::nodes::node_geo_mesh_primitive_cylinder_cc::node_register(), blender::nodes::node_geo_mesh_primitive_grid_cc::node_register(), blender::nodes::node_geo_mesh_primitive_ico_sphere_cc::node_register(), blender::nodes::node_geo_mesh_primitive_line_cc::node_register(), blender::nodes::node_geo_mesh_primitive_uv_sphere_cc::node_register(), blender::nodes::node_geo_mesh_subdivide_cc::node_register(), blender::nodes::node_geo_mesh_to_curve_cc::node_register(), blender::nodes::node_geo_mesh_to_density_grid_cc::node_register(), blender::nodes::node_geo_mesh_to_points_cc::node_register(), blender::nodes::node_geo_mesh_to_sdf_grid_cc::node_register(), blender::nodes::node_geo_mesh_to_volume_cc::node_register(), blender::nodes::node_geo_mesh_topology_corners_of_edge_cc::node_register(), blender::nodes::node_geo_mesh_topology_corners_of_face_cc::node_register(), blender::nodes::node_geo_mesh_topology_corners_of_vertex_cc::node_register(), blender::nodes::node_geo_mesh_topology_edges_of_corner_cc::node_register(), blender::nodes::node_geo_mesh_topology_edges_of_vertex_cc::node_register(), blender::nodes::node_geo_mesh_topology_face_of_corner_cc::node_register(), blender::nodes::node_geo_mesh_topology_offset_corner_in_face_cc::node_register(), blender::nodes::node_geo_mesh_topology_vertex_of_corner_cc::node_register(), blender::nodes::node_geo_mouse_position_cc::node_register(), blender::nodes::node_geo_object_info_cc::node_register(), blender::nodes::node_geo_offset_point_in_curve_cc::node_register(), blender::nodes::node_geo_points_cc::node_register(), blender::nodes::node_geo_points_to_curves_cc::node_register(), blender::nodes::node_geo_points_to_sdf_grid_cc::node_register(), blender::nodes::node_geo_points_to_vertices_cc::node_register(), blender::nodes::node_geo_points_to_volume_cc::node_register(), blender::nodes::node_geo_proximity_cc::node_register(), blender::nodes::node_geo_raycast_cc::node_register(), blender::nodes::node_geo_realize_instances_cc::node_register(), blender::nodes::node_geo_remove_attribute_cc::node_register(), blender::nodes::node_geo_repeat_cc::repeat_input_node::node_register(), blender::nodes::node_geo_repeat_cc::repeat_output_node::node_register(), blender::nodes::node_geo_rotate_instances_cc::node_register(), blender::nodes::node_geo_sample_grid_cc::node_register(), blender::nodes::node_geo_sample_grid_index_cc::node_register(), blender::nodes::node_geo_sample_index_cc::node_register(), blender::nodes::node_geo_sample_nearest_cc::node_register(), blender::nodes::node_geo_sample_nearest_surface_cc::node_register(), blender::nodes::node_geo_sample_uv_surface_cc::node_register(), blender::nodes::node_geo_scale_elements_cc::node_register(), blender::nodes::node_geo_scale_instances_cc::node_register(), blender::nodes::node_geo_sdf_grid_boolean_cc::node_register(), blender::nodes::node_geo_sdf_grid_fillet_cc::node_register(), blender::nodes::node_geo_sdf_grid_laplacian_cc::node_register(), blender::nodes::node_geo_sdf_grid_mean_cc::node_register(), blender::nodes::node_geo_sdf_grid_mean_curvature_cc::node_register(), blender::nodes::node_geo_sdf_grid_median_cc::node_register(), blender::nodes::node_geo_sdf_grid_offset_cc::node_register(), blender::nodes::node_geo_self_object_cc::node_register(), blender::nodes::node_geo_separate_bundle_cc::node_register(), blender::nodes::node_geo_separate_components_cc::node_register(), blender::nodes::node_geo_separate_geometry_cc::node_register(), blender::nodes::node_geo_set_curve_handles_cc::node_register(), blender::nodes::node_geo_set_curve_normal_cc::node_register(), blender::nodes::node_geo_set_curve_radius_cc::node_register(), blender::nodes::node_geo_set_curve_tilt_cc::node_register(), blender::nodes::node_geo_set_geometry_name::node_register(), blender::nodes::node_geo_set_grease_pencil_color_cc::node_register(), blender::nodes::node_geo_set_grease_pencil_softness_cc::node_register(), blender::nodes::node_geo_set_grid_background::node_register(), blender::nodes::node_geo_set_grid_transform::node_register(), blender::nodes::node_geo_set_id_cc::node_register(), blender::nodes::node_geo_set_material_cc::node_register(), blender::nodes::node_geo_set_material_index_cc::node_register(), blender::nodes::node_geo_set_mesh_normal_cc::node_register(), blender::nodes::node_geo_set_point_radius_cc::node_register(), blender::nodes::node_geo_set_position_cc::node_register(), blender::nodes::node_geo_set_shade_smooth_cc::node_register(), blender::nodes::node_geo_set_spline_cyclic_cc::node_register(), blender::nodes::node_geo_set_spline_resolution_cc::node_register(), blender::nodes::node_geo_simulation_cc::sim_input_node::node_register(), blender::nodes::node_geo_simulation_cc::sim_output_node::node_register(), blender::nodes::node_geo_sort_elements_cc::node_register(), blender::nodes::node_geo_split_to_instances_cc::node_register(), blender::nodes::node_geo_store_named_attribute_cc::node_register(), blender::nodes::node_geo_store_named_grid_cc::node_register(), blender::nodes::node_geo_string_join_cc::node_register(), blender::nodes::node_geo_string_to_curves_cc::node_register(), blender::nodes::node_geo_subdivision_surface_cc::node_register(), blender::nodes::node_geo_tool_3d_cursor_cc::node_register(), blender::nodes::node_geo_tool_active_element_cc::node_register(), blender::nodes::node_geo_tool_face_set_cc::node_register(), blender::nodes::node_geo_tool_selection_cc::node_register(), blender::nodes::node_geo_tool_set_face_set_cc::node_register(), blender::nodes::node_geo_tool_set_selection_cc::node_register(), blender::nodes::node_geo_triangulate_cc::node_register(), blender::nodes::node_geo_uv_pack_islands_cc::node_register(), blender::nodes::node_geo_uv_tangent_cc::node_register(), blender::nodes::node_geo_uv_unwrap_cc::node_register(), blender::nodes::node_geo_viewer_cc::node_register(), blender::nodes::node_geo_viewport_transform_cc::node_register(), blender::nodes::node_geo_volume_cube_cc::node_register(), blender::nodes::node_geo_volume_to_mesh_cc::node_register(), blender::nodes::node_geo_warning_cc::node_register(), blender::nodes::nodes_geo_import_ply::node_register(), blender::nodes::node_composite_image_coordinates_cc::register_node(), blender::nodes::node_composite_relative_to_pixel_cc::register_node(), blender::nodes::node_geo_index_switch_cc::register_node(), blender::nodes::node_geo_menu_switch_cc::register_node(), blender::nodes::node_geo_switch_cc::register_node(), blender::nodes::node_geo_transform_geometry_cc::register_node(), blender::nodes::node_geo_translate_instances_cc::register_node(), blender::nodes::node_composite_alpha_over_cc::register_node_type_cmp_alphaover(), register_node_type_cmp_antialiasing(), register_node_type_cmp_bilateralblur(), register_node_type_cmp_blur(), register_node_type_cmp_bokehblur(), register_node_type_cmp_bokehimage(), register_node_type_cmp_boxmask(), register_node_type_cmp_brightcontrast(), register_node_type_cmp_channel_matte(), register_node_type_cmp_chroma_matte(), register_node_type_cmp_color_matte(), register_node_type_cmp_color_spill(), register_node_type_cmp_colorbalance(), register_node_type_cmp_colorcorrection(), register_node_type_cmp_combine_color(), register_node_type_cmp_convert_color_space(), blender::nodes::node_composite_convert_to_display_cc::register_node_type_cmp_convert_to_display(), register_node_type_cmp_cornerpin(), register_node_type_cmp_crop(), register_node_type_cmp_cryptomatte(), register_node_type_cmp_cryptomatte_legacy(), register_node_type_cmp_curve_rgb(), register_node_type_cmp_curve_time(), register_node_type_cmp_dblur(), register_node_type_cmp_defocus(), register_node_type_cmp_denoise(), register_node_type_cmp_despeckle(), register_node_type_cmp_diff_matte(), register_node_type_cmp_dilateerode(), register_node_type_cmp_displace(), register_node_type_cmp_distance_matte(), register_node_type_cmp_doubleedgemask(), register_node_type_cmp_ellipsemask(), register_node_type_cmp_exposure(), register_node_type_cmp_filter(), register_node_type_cmp_flip(), register_node_type_cmp_glare(), register_node_type_cmp_group(), register_node_type_cmp_hue_sat(), register_node_type_cmp_huecorrect(), register_node_type_cmp_idmask(), register_node_type_cmp_image(), register_node_type_cmp_image_info(), register_node_type_cmp_inpaint(), register_node_type_cmp_invert(), register_node_type_cmp_keying(), register_node_type_cmp_keyingscreen(), register_node_type_cmp_kuwahara(), register_node_type_cmp_lensdist(), register_node_type_cmp_luma_matte(), register_node_type_cmp_mapuv(), register_node_type_cmp_mask(), register_node_type_cmp_movieclip(), register_node_type_cmp_moviedistortion(), register_node_type_cmp_normal(), register_node_type_cmp_normalize(), register_node_type_cmp_pixelate(), register_node_type_cmp_planetrackdeform(), register_node_type_cmp_posterize(), register_node_type_cmp_premulkey(), register_node_type_cmp_rgb(), register_node_type_cmp_rgbtobw(), register_node_type_cmp_rlayers(), register_node_type_cmp_rotate(), register_node_type_cmp_scale(), register_node_type_cmp_scene_time(), register_node_type_cmp_separate_color(), register_node_type_cmp_setalpha(), register_node_type_cmp_split(), register_node_type_cmp_stabilize2d(), register_node_type_cmp_switch(), register_node_type_cmp_switch_view(), register_node_type_cmp_tonemap(), register_node_type_cmp_trackpos(), register_node_type_cmp_transform(), register_node_type_cmp_translate(), register_node_type_cmp_vecblur(), register_node_type_cmp_view_levels(), register_node_type_cmp_viewer(), register_node_type_cmp_zcombine(), register_node_type_frame(), blender::nodes::register_node_type_geo_group(), register_node_type_group_input(), register_node_type_group_output(), register_node_type_reroute(), register_node_type_sh_add_shader(), register_node_type_sh_ambient_occlusion(), register_node_type_sh_attribute(), register_node_type_sh_background(), register_node_type_sh_bevel(), register_node_type_sh_blackbody(), register_node_type_sh_brightcontrast(), register_node_type_sh_bsdf_diffuse(), register_node_type_sh_bsdf_glass(), register_node_type_sh_bsdf_glossy(), register_node_type_sh_bsdf_hair(), register_node_type_sh_bsdf_hair_principled(), register_node_type_sh_bsdf_metallic(), register_node_type_sh_bsdf_principled(), register_node_type_sh_bsdf_ray_portal(), register_node_type_sh_bsdf_refraction(), register_node_type_sh_bsdf_sheen(), register_node_type_sh_bsdf_toon(), register_node_type_sh_bsdf_translucent(), register_node_type_sh_bsdf_transparent(), register_node_type_sh_bump(), register_node_type_sh_camera(), register_node_type_sh_clamp(), register_node_type_sh_combcolor(), register_node_type_sh_combxyz(), register_node_type_sh_curve_float(), register_node_type_sh_curve_rgb(), register_node_type_sh_curve_vec(), register_node_type_sh_displacement(), register_node_type_sh_eevee_specular(), register_node_type_sh_emission(), register_node_type_sh_fresnel(), register_node_type_sh_gamma(), register_node_type_sh_geometry(), register_node_type_sh_group(), register_node_type_sh_hair_info(), register_node_type_sh_holdout(), register_node_type_sh_hue_sat(), register_node_type_sh_invert(), register_node_type_sh_layer_weight(), register_node_type_sh_light_falloff(), register_node_type_sh_light_path(), register_node_type_sh_map_range(), register_node_type_sh_mapping(), register_node_type_sh_math(), register_node_type_sh_mix(), register_node_type_sh_mix_rgb(), register_node_type_sh_mix_shader(), register_node_type_sh_normal(), register_node_type_sh_normal_map(), register_node_type_sh_object_info(), register_node_type_sh_output_aov(), register_node_type_sh_output_light(), register_node_type_sh_output_linestyle(), register_node_type_sh_output_material(), register_node_type_sh_output_world(), register_node_type_sh_particle_info(), register_node_type_sh_point_info(), register_node_type_sh_radial_tiling(), register_node_type_sh_rgb(), register_node_type_sh_rgbtobw(), register_node_type_sh_script(), register_node_type_sh_sepcolor(), register_node_type_sh_sepxyz(), register_node_type_sh_shadertorgb(), register_node_type_sh_squeeze(), register_node_type_sh_subsurface_scattering(), register_node_type_sh_tangent(), register_node_type_sh_tex_brick(), register_node_type_sh_tex_checker(), register_node_type_sh_tex_coord(), register_node_type_sh_tex_environment(), register_node_type_sh_tex_gradient(), register_node_type_sh_tex_ies(), register_node_type_sh_tex_image(), register_node_type_sh_tex_magic(), register_node_type_sh_tex_noise(), register_node_type_sh_tex_sky(), register_node_type_sh_tex_voronoi(), register_node_type_sh_tex_wave(), register_node_type_sh_tex_white_noise(), register_node_type_sh_uvalongstroke(), register_node_type_sh_uvmap(), register_node_type_sh_valtorgb(), register_node_type_sh_value(), register_node_type_sh_vect_math(), register_node_type_sh_vect_transform(), register_node_type_sh_vector_displacement(), register_node_type_sh_vector_rotate(), register_node_type_sh_vertex_color(), register_node_type_sh_volume_absorption(), register_node_type_sh_volume_coefficients(), register_node_type_sh_volume_info(), register_node_type_sh_volume_principled(), register_node_type_sh_volume_scatter(), register_node_type_sh_wavelength(), register_node_type_sh_wireframe(), register_node_type_tex_at(), register_node_type_tex_bricks(), register_node_type_tex_checker(), register_node_type_tex_combine_color(), register_node_type_tex_coord(), register_node_type_tex_curve_rgb(), register_node_type_tex_curve_time(), register_node_type_tex_distance(), register_node_type_tex_group(), register_node_type_tex_hue_sat(), register_node_type_tex_image(), register_node_type_tex_invert(), register_node_type_tex_math(), register_node_type_tex_mix_rgb(), register_node_type_tex_output(), register_node_type_tex_rgbtobw(), register_node_type_tex_rotate(), register_node_type_tex_scale(), register_node_type_tex_separate_color(), register_node_type_tex_texture(), register_node_type_tex_translate(), register_node_type_tex_valtonor(), register_node_type_tex_valtorgb(), and register_node_type_tex_viewer().

◆ node_remove_link()

void blender::bke::node_remove_link ( bNodeTree * ntree,
bNodeLink & link )

Definition at line 3847 of file node.cc.

References BKE_ntree_update_tag_link_removed(), BLI_remlink(), bNodeSocket::link, bNodeTree::links, MEM_freeN(), and bNodeLink::tosock.

Referenced by ambient_occlusion_node_relink(), blo_do_versions_260(), blender::ed::space_node::connect_node_to_surface_output(), blender::ed::space_node::cut_links_exec(), blender::ed::space_node::displace_links(), displacement_node_insert(), do_version_alpha_over_remove_premultiply(), do_version_blur_defocus_nodes_remove_gamma(), do_version_blur_node_options_to_inputs(), do_version_bokeh_blur_pixel_size(), do_version_bright_contrast_remove_premultiplied(), do_version_color_to_float_conversion(), do_version_composite_node_in_scene_tree(), do_version_composite_viewer_remove_alpha(), do_version_displace_node_remove_xy_scale(), do_version_lift_gamma_gain_srgb_to_linear(), do_version_map_value_node(), do_version_mix_color_use_alpha(), do_version_normal_node_dot_product(), do_version_replace_image_info_node_coordinates(), do_version_scale_node_remove_translate(), do_version_sun_beams(), do_version_texture_gradient_clamp(), do_version_translate_node_remove_relative(), do_versions_material_convert_legacy_blend_mode(), blender::io::usd::dome_light_to_world_material(), blender::ed::space_node::node_group_make_from_node_declaration(), blender::ed::space_node::node_group_make_insert_selected(), blender::ed::space_node::node_group_separate_selected(), blender::ed::space_node::node_insert_on_link_flags(), node_internal_relink(), blender::ed::space_node::node_link_init(), blender::ed::space_node::node_remove_existing_links_if_needed(), node_remove_socket_ex(), node_remove_socket_links(), blender::ed::space_node::node_socket_add_replace(), blender::ed::space_node::node_socket_disconnect(), blender::ed::space_node::node_swap_links(), node_unlink_node(), ntree_shader_copy_branch(), ntree_shader_implicit_closure_cast(), ntree_shader_unlink_script_nodes(), ntree_weight_tree_merge_weight(), blender::ed::space_node::pick_link(), blender::ed::space_node::viewer_linking::remove_links_to_unavailable_viewer_sockets(), blender::ed::space_node::remove_unavailable_links(), shader_node_disconnect_input(), blender::ed::space_node::snode_autoconnect_input(), update_mapping_node_inputs_and_properties(), update_math_node_single_operand_operators(), update_noise_and_wave_distortion(), update_vector_math_node_add_and_subtract_operators(), update_vector_math_node_average_operator(), update_vector_math_node_cross_product_operator(), update_vector_math_node_dot_product_operator(), update_vector_math_node_normalize_operator(), update_voronoi_node_coloring(), update_voronoi_node_crackle(), update_voronoi_node_square_distance(), version_principled_bsdf_specular_tint(), version_principled_bsdf_subsurface(), version_replace_texcoord_normal_socket(), version_update_node_input(), versioning_eevee_material_blend_mode_settings(), versioning_eevee_material_shadow_none(), versioning_remove_microfacet_sharp_distribution(), versioning_replace_musgrave_texture_node(), and versioning_update_noise_texture_node().

◆ node_remove_node()

◆ node_remove_socket()

◆ node_remove_socket_ex()

◆ node_remove_socket_links()

void blender::bke::node_remove_socket_links ( bNodeTree & ntree,
bNodeSocket & sock )

◆ node_replace_undefined_types()

void blender::bke::node_replace_undefined_types ( bNode * node)
static

◆ node_set_active()

void blender::bke::node_set_active ( bNodeTree & ntree,
bNode & node )

Two active flags, ID nodes have special flag for buttons display.

Definition at line 4724 of file node.cc.

References bNode::flag, NODE_ACTIVE, NODE_ACTIVE_PAINT_CANVAS, NODE_ACTIVE_TEXTURE, node_supports_active_flag(), and SET_FLAG_FROM_TEST.

Referenced by blender::ed::space_node::add_node_group_asset(), blender::ed::space_node::add_reroute_exec(), BKE_linestyle_default_shader(), blender::io::obj::create_mtl_node_tree(), blender::io::usd::dome_light_to_world_material(), ED_node_composit_default_init(), ED_node_set_active(), ED_node_shader_default(), ED_node_texture_default(), ED_preview_prepare_world_simple(), Freestyle::BlenderStrokeRenderer::GetStrokeShader(), blender::io::fbx::import_material(), blender::io::usd::USDMaterialReader::import_usd_preview_nodes(), blender::ed::space_node::initialize_compositor_sequencer_node_group(), blender::ed::space_node::link_drag_search_exec_fn(), blender::eevee::LookdevWorld::LookdevWorld(), material_default_holdout_init(), material_default_surface_init(), material_default_volume_init(), blender::eevee::MaterialModule::MaterialModule(), blender::ed::space_node::node_add_collection_exec(), blender::ed::space_node::node_add_color_exec(), blender::ed::space_node::node_add_group_exec(), blender::ed::space_node::node_add_import_node_exec(), blender::ed::space_node::node_add_object_exec(), blender::ed::space_node::node_clipboard_paste_exec(), blender::ed::space_node::node_group_insert_exec(), blender::ed::space_node::node_group_make_exec(), blender::ed::space_node::node_join_in_frame_exec(), blender::ed::space_node::node_socket_add_replace(), proj_paint_add_slot(), and blender::ed::space_node::test_inline_shader_nodes_exec().

◆ node_set_selected()

bool blender::bke::node_set_selected ( bNode & node,
bool select )

◆ node_set_socket_availability()

void blender::bke::node_set_socket_availability ( bNodeTree & ntree,
bNodeSocket & sock,
bool is_available )

Definition at line 4739 of file node.cc.

References BKE_ntree_update_tag_socket_availability(), bNodeSocket::flag, and SOCK_UNAVAIL.

Referenced by cmp_node_image_verify_outputs(), blender::nodes::node_fn_random_value_cc::fn_node_random_value_update(), node_math_update(), blender::nodes::node_shader_volume_coefficients_cc::node_shader_update_coefficients(), blender::nodes::node_shader_bsdf_hair_principled_cc::node_shader_update_hair_principled(), blender::nodes::node_shader_map_range_cc::node_shader_update_map_range(), blender::nodes::node_shader_mapping_cc::node_shader_update_mapping(), blender::nodes::node_shader_bsdf_metallic_cc::node_shader_update_metallic(), blender::nodes::node_shader_bsdf_principled_cc::node_shader_update_principled(), blender::nodes::node_shader_volume_scatter_cc::node_shader_update_scatter(), blender::nodes::node_shader_tex_sky_cc::node_shader_update_sky(), blender::nodes::node_shader_subsurface_scattering_cc::node_shader_update_subsurface_scattering(), blender::nodes::node_shader_tex_gabor_cc::node_shader_update_tex_gabor(), blender::nodes::node_shader_tex_noise_cc::node_shader_update_tex_noise(), blender::nodes::node_shader_tex_voronoi_cc::node_shader_update_tex_voronoi(), blender::nodes::node_shader_tex_white_noise_cc::node_shader_update_tex_white_noise(), blender::nodes::node_shader_vector_math_cc::node_shader_update_vector_math(), blender::nodes::node_shader_vector_rotate_cc::node_shader_update_vector_rotate(), blender::nodes::node_composite_relative_to_pixel_cc::node_update(), blender::nodes::node_fn_boolean_math_cc::node_update(), blender::nodes::node_fn_compare_cc::node_update(), blender::nodes::node_fn_integer_math_cc::node_update(), blender::nodes::node_fn_rotate_euler_cc::node_update(), blender::nodes::node_geo_mesh_primitive_line_cc::node_update(), and blender::nodes::node_sh_mix_cc::sh_node_mix_update().

◆ node_set_typeinfo()

◆ node_socket_copy()

◆ node_socket_declarations_update()

void blender::bke::node_socket_declarations_update ( bNode * node)

Update socket->declaration for all sockets in the node. This assumes that the node declaration and sockets are up to date already.

Definition at line 4786 of file node.cc.

References BLI_assert, bNode::inputs, bNode::outputs, reset_socket_declarations(), bNode::runtime, and update_socket_declarations().

Referenced by node_declaration_ensure(), and blender::nodes::refresh_node().

◆ node_socket_free()

◆ node_socket_is_registered()

bool blender::bke::node_socket_is_registered ( const bNodeSocket & sock)

Definition at line 2509 of file node.cc.

References NodeSocketTypeUndefined, and bNodeSocket::typeinfo.

◆ node_socket_label()

◆ node_socket_link_limit()

◆ node_socket_move_default_value()

void blender::bke::node_socket_move_default_value ( Main & bmain,
bNodeTree & tree,
bNodeSocket & src,
bNodeSocket & dst )

Move socket default from src (input socket) to locations specified by dst (output socket). Result value moved in specific location. (potentially multiple group nodes socket values, if dst is a group input node).

Note
Conceptually, the effect should be such that the evaluation of this graph again returns the value in src.

Definition at line 3724 of file node.cc.

References BLI_strdup_null(), BUFFER_FOR_CPP_TYPE_VALUE, bNodeSocket::default_value, blender::CPPType::destruct(), ELEM, get_implicit_type_conversions(), MEM_SAFE_FREE, blender::CPPType::move_assign(), node_static_value_storage_for(), SOCK_COLLECTION, SOCK_IMAGE, SOCK_MATERIAL, SOCK_OBJECT, SOCK_STRING, SOCK_TEXTURE, socket_value_storage(), bNode::storage, tree, bNodeSocket::type, bNodeSocket::typeinfo, and blender::CPPType::value_initialize().

Referenced by blender::ed::space_node::add_group_input_node_fn(), and blender::nodes::LinkSearchOpParams::connect_socket().

◆ node_socket_set_typeinfo()

◆ node_socket_short_label()

std::optional< StringRefNull > blender::bke::node_socket_short_label ( const bNodeSocket & sock)

Get node socket short label if it is set. It is used when grouping sockets under panels, to avoid redundancy in the label.

Definition at line 4985 of file node.cc.

References blender::StringRefBase::is_empty(), and bNodeSocket::runtime.

Referenced by blender::ed::space_node::node_socket_get_label().

◆ node_socket_sub_type_label()

StringRefNull blender::bke::node_socket_sub_type_label ( int subtype)

Definition at line 2523 of file node.cc.

References name, RNA_enum_name(), and rna_enum_property_subtype_items.

Referenced by make_standard_socket_type().

◆ node_socket_translation_context()

const char * blender::bke::node_socket_translation_context ( const bNodeSocket & sock)

Get node socket translation context if it is set.

Definition at line 5001 of file node.cc.

References bNodeSocket::runtime.

Referenced by blender::ui::nodes::draw_node_input(), and blender::ed::space_node::node_socket_get_label().

◆ node_socket_type_find()

◆ node_socket_type_find_static()

◆ node_socket_type_label()

StringRefNull blender::bke::node_socket_type_label ( const bNodeSocketType & stype)

◆ node_socket_types_get()

Span< bNodeSocketType * > blender::bke::node_socket_types_get ( )

Definition at line 2457 of file node.cc.

References get_socket_type_map().

◆ node_static_socket_interface_type_new()

◆ node_static_socket_label()

◆ node_static_socket_type()

◆ node_static_value_storage_for()

void * blender::bke::node_static_value_storage_for ( bNode & node,
const bNodeSocket & socket )
static

Type of value storage related with socket is the same.

Parameters
socketNode can have multiple sockets & storages pairs.

Definition at line 3650 of file node.cc.

References ListBase::first, FN_NODE_INPUT_BOOL, FN_NODE_INPUT_COLOR, FN_NODE_INPUT_INT, FN_NODE_INPUT_VECTOR, GEO_NODE_IMAGE, bNode::id, bNode::outputs, SH_NODE_VALUE, bNode::storage, and bNode::type_legacy.

Referenced by node_socket_move_default_value().

◆ node_supports_active_flag()

bool blender::bke::node_supports_active_flag ( const bNode & node,
int sub_activity )

Does the given node supports the sub active flag.

Parameters
sub_activeThe active flag to check. NODE_ACTIVE_TEXTURE / NODE_ACTIVE_PAINT_CANVAS.

Definition at line 252 of file node_shader_util.cc.

References BLI_assert, ELEM, NODE_ACTIVE_PAINT_CANVAS, NODE_ACTIVE_TEXTURE, NODE_CLASS_TEXTURE, SH_NODE_ATTRIBUTE, SH_NODE_TEX_IMAGE, bNode::type_legacy, and bNode::typeinfo.

Referenced by node_get_active(), and node_set_active().

◆ node_system_exit()

◆ node_system_init()

◆ node_tag_update_id()

void blender::bke::node_tag_update_id ( bNode & node)

Definition at line 4833 of file node.cc.

References NODE_UPDATE_ID, and bNode::runtime.

Referenced by blender::ed::space_node::node_add_image_exec().

◆ node_tree_add_in_lib()

bNodeTree * blender::bke::node_tree_add_in_lib ( Main * bmain,
Library * owner_library,
StringRefNull name,
StringRefNull idname )

Add a new (non-embedded) node tree, like node_tree_add_tree, but allows to create it inside a given library. Used mainly by readfile code when versioning linked data.

Definition at line 4090 of file node.cc.

References name, and node_tree_add_tree_do().

Referenced by add_auto_smooth_node_tree(), and blender::bke::greasepencil::convert::offset_radius_node_tree_add().

◆ node_tree_add_tree()

◆ node_tree_add_tree_do()

◆ node_tree_add_tree_embedded()

◆ node_tree_asset_on_clear_asset()

void blender::bke::node_tree_asset_on_clear_asset ( void * asset_ptr,
AssetMetaData * asset_data )
static

◆ node_tree_asset_on_mark_asset()

void blender::bke::node_tree_asset_on_mark_asset ( void * asset_ptr,
AssetMetaData * asset_data )
static

◆ node_tree_asset_pre_save()

void blender::bke::node_tree_asset_pre_save ( void * asset_ptr,
AssetMetaData *  )
static

Definition at line 1988 of file node.cc.

References node_update_asset_metadata().

◆ node_tree_blend_read_data()

◆ node_tree_blend_write()

◆ node_tree_contains_tree()

bool blender::bke::node_tree_contains_tree ( const bNodeTree & tree_to_search_in,
const bNodeTree & tree_to_search_for )

Check recursively if a node tree contains another.

Definition at line 4663 of file node.cc.

References ntree_contains_tree_exec().

Referenced by ED_node_set_active(), and blender::ed::space_node::node_group_insert_exec().

◆ node_tree_copy_tree()

bNodeTree * blender::bke::node_tree_copy_tree ( Main * bmain,
const bNodeTree & ntree )

◆ node_tree_copy_tree_ex()

bNodeTree * blender::bke::node_tree_copy_tree_ex ( const bNodeTree & ntree,
Main * bmain,
bool do_id_user )

◆ node_tree_free_embedded_tree()

◆ node_tree_free_local_node()

void blender::bke::node_tree_free_local_node ( bNodeTree & ntree,
bNode & node )

◆ node_tree_free_tree()

void blender::bke::node_tree_free_tree ( bNodeTree & ntree)

Free (or release) any data used by this node-tree. Does not free the node-tree itself and does no ID user counting.

Definition at line 4455 of file node.cc.

References BKE_animdata_free(), BKE_libblock_free_runtime_data(), bNodeTree::id, and ntree_free_data().

Referenced by blender::ed::space_node::compo_freejob(), default_paint_slot_color_get(), free_localized_node_groups(), localize(), blender::ed::space_node::node_group_make_test_selected(), and node_tree_free_embedded_tree().

◆ node_tree_from_id()

◆ node_tree_is_registered()

bool blender::bke::node_tree_is_registered ( const bNodeTree & ntree)

◆ node_tree_iterator_init()

◆ node_tree_iterator_step()

◆ node_tree_local_merge()

void blender::bke::node_tree_local_merge ( Main * bmain,
bNodeTree * localtree,
bNodeTree * ntree )

Merge local tree results back, and free local tree.

We have to assume the editor already changed completely.

Definition at line 4629 of file node.cc.

References bNodeTree::typeinfo.

Referenced by blender::ed::space_node::compo_freejob().

◆ node_tree_localize()

bNodeTree * blender::bke::node_tree_localize ( bNodeTree * ntree,
std::optional< ID * > new_owner_id )

◆ node_tree_node_flag_set()

void blender::bke::node_tree_node_flag_set ( bNodeTree & ntree,
int flag,
bool enable )

Definition at line 4574 of file node.cc.

References bNode::flag, and flag.

Referenced by blender::ed::space_node::node_link_insert_offset_ntree().

◆ node_tree_ptr_from_id()

bNodeTree ** blender::bke::node_tree_ptr_from_id ( ID * id)

Get address of potential node-tree pointer of given ID.

Warning
Using this function directly is potentially dangerous, if you don't know or are not sure, please use node_tree_from_id() instead.

Definition at line 4543 of file node.cc.

References GS, ID_LA, ID_LS, ID_MA, ID_SCE, ID_TE, and ID_WO.

Referenced by blender::deg::DepsgraphNodeBuilder::build_animation_images(), blender::deg::DepsgraphRelationBuilder::build_animation_images(), direct_link_id_embedded_id(), id_swap(), node_tree_add_tree_do(), and node_tree_from_id().

◆ node_tree_remove_layer_n()

void blender::bke::node_tree_remove_layer_n ( bNodeTree * ntree,
Scene * scene,
int layer_index )

◆ node_tree_set_output()

void blender::bke::node_tree_set_output ( bNodeTree & ntree)

XXX: old trees handle output flags automatically based on special output node types and last active selection. New tree types have a per-output socket flag to indicate the final output to use explicitly.

Definition at line 4469 of file node.cc.

References bNode::custom1, bNode::flag, LISTBASE_FOREACH, NODE_CLASS_OUTPUT, NODE_DO_OUTPUT, NODE_VIEWER_SHORTCUT_NONE, bNodeTree::nodes, NTREE_COMPOSIT, NTREE_GEOMETRY, output, bNodeTree::type, bNode::type_legacy, and bNode::typeinfo.

Referenced by geometry_node_tree_update(), node_tree_localize(), ntreeShaderBeginExecTree_internal(), ntreeShaderOutputNode(), update(), and update().

◆ node_tree_set_type()

◆ node_tree_to_dot()

◆ node_tree_type_add()

void blender::bke::node_tree_type_add ( bNodeTreeType & nt)

◆ node_tree_type_find()

◆ node_tree_type_free_link()

void blender::bke::node_tree_type_free_link ( const bNodeTreeType & nt)

Definition at line 2363 of file node.cc.

References get_node_tree_type_map(), and ntree_free_type().

◆ node_tree_types_get()

Span< bNodeTreeType * > blender::bke::node_tree_types_get ( )

Definition at line 2374 of file node.cc.

References get_node_tree_type_map().

Referenced by blender::ed::space_node::node_create().

◆ node_tree_update_all_new()

void blender::bke::node_tree_update_all_new ( Main & main)

◆ node_tree_update_all_users()

void blender::bke::node_tree_update_all_users ( Main * main,
ID * id )

◆ node_type_base()

◆ node_type_base_custom()

◆ node_type_base_defaults()

void blender::bke::node_type_base_defaults ( bNodeType & ntype)
static

◆ node_type_find()

◆ node_type_find_alias()

StringRefNull blender::bke::node_type_find_alias ( StringRefNull alias)

Definition at line 2388 of file node.cc.

References get_node_type_alias_map().

Referenced by pyrna_struct_bl_rna_get_subclass().

◆ node_type_size()

void blender::bke::node_type_size ( bNodeType & ntype,
int width,
int minwidth,
int maxwidth )

Definition at line 5384 of file node.cc.

References FLT_MAX, blender::bke::bNodeType::maxwidth, blender::bke::bNodeType::minwidth, and blender::bke::bNodeType::width.

Referenced by blender::nodes::node_geo_curves_to_grease_pencil_cc::node_register(), blender::nodes::node_geo_deform_curves_on_surface_cc::node_register(), blender::nodes::node_geo_distribute_points_in_grid_cc::node_register(), blender::nodes::node_geo_distribute_points_in_volume_cc::node_register(), blender::nodes::node_geo_distribute_points_on_faces_cc::node_register(), blender::nodes::node_geo_edge_paths_to_selection_cc::node_register(), blender::nodes::node_geo_geometry_to_instance_cc::node_register(), blender::nodes::node_geo_grease_pencil_set_depth_mode::node_register(), blender::nodes::node_geo_grease_pencil_to_curves_cc::node_register(), blender::nodes::node_geo_input_named_layer_selection__cc::node_register(), blender::nodes::node_geo_mesh_to_volume_cc::node_register(), blender::nodes::node_geo_points_to_volume_cc::node_register(), blender::nodes::node_geo_remove_attribute_cc::node_register(), blender::nodes::node_geo_set_grease_pencil_color_cc::node_register(), blender::nodes::node_geo_set_grease_pencil_softness_cc::node_register(), blender::nodes::node_geo_set_instance_transform_cc::node_register(), blender::nodes::node_geo_store_named_attribute_cc::node_register(), blender::nodes::node_geo_string_to_curves_cc::node_register(), blender::nodes::node_geo_volume_to_mesh_cc::node_register(), node_type_size_preset(), register_node_type_cmp_antialiasing(), register_node_type_cmp_bokehblur(), register_node_type_cmp_bokehimage(), register_node_type_cmp_chroma_matte(), register_node_type_cmp_color_matte(), register_node_type_cmp_color_spill(), register_node_type_cmp_convert_color_space(), blender::nodes::node_composite_convert_to_display_cc::register_node_type_cmp_convert_to_display(), register_node_type_cmp_cryptomatte(), register_node_type_cmp_curve_rgb(), register_node_type_cmp_curve_time(), register_node_type_cmp_distance_matte(), register_node_type_cmp_doubleedgemask(), register_node_type_cmp_group(), register_node_type_cmp_huecorrect(), register_node_type_cmp_keying(), register_node_type_cmp_kuwahara(), register_node_type_frame(), blender::nodes::register_node_type_geo_group(), register_node_type_group_input(), register_node_type_group_output(), register_node_type_sh_bsdf_hair(), register_node_type_sh_group(), register_node_type_sh_tex_brick(), register_node_type_sh_tex_noise(), register_node_type_sh_tex_voronoi(), register_node_type_sh_tex_wave(), register_node_type_tex_at(), and register_node_type_tex_group().

◆ node_type_size_preset()

void blender::bke::node_type_size_preset ( bNodeType & ntype,
eNodeSizePreset size )

Definition at line 5396 of file node.cc.

References Default, Large, Middle, NODE_DEFAULT_MAX_WIDTH, node_type_size(), size(), and Small.

Referenced by blender::nodes::node_geo_image_cc::node_register(), blender::nodes::node_geo_image_info_cc::node_register(), blender::nodes::node_geo_image_texture_cc::node_register(), blender::nodes::node_geo_input_curve_handles_cc::node_register(), blender::nodes::node_geo_mesh_face_group_boundaries_cc::node_register(), blender::nodes::node_geo_raycast_cc::node_register(), blender::nodes::node_geo_sample_nearest_surface_cc::node_register(), blender::nodes::node_geo_subdivision_surface_cc::node_register(), node_type_base_defaults(), register_node_type_cmp_convert_color_space(), blender::nodes::node_composite_convert_to_display_cc::register_node_type_cmp_convert_to_display(), register_node_type_cmp_rgb(), register_node_type_cmp_rgbtobw(), register_node_type_cmp_rlayers(), register_node_type_cmp_switch(), register_node_type_sh_blackbody(), register_node_type_sh_bsdf_diffuse(), register_node_type_sh_bsdf_glass(), register_node_type_sh_bsdf_glossy(), register_node_type_sh_bsdf_hair_principled(), register_node_type_sh_bsdf_metallic(), register_node_type_sh_bsdf_principled(), register_node_type_sh_bsdf_refraction(), register_node_type_sh_bsdf_toon(), register_node_type_sh_curve_float(), register_node_type_sh_curve_rgb(), register_node_type_sh_curve_vec(), register_node_type_sh_hue_sat(), register_node_type_sh_light_falloff(), register_node_type_sh_normal_map(), register_node_type_sh_subsurface_scattering(), register_node_type_sh_tangent(), register_node_type_sh_tex_brick(), register_node_type_sh_tex_environment(), register_node_type_sh_tex_image(), register_node_type_sh_tex_sky(), register_node_type_sh_tex_wave(), register_node_type_sh_uvmap(), register_node_type_sh_valtorgb(), register_node_type_sh_volume_coefficients(), register_node_type_sh_volume_principled(), register_node_type_sh_volume_scatter(), register_node_type_sh_wavelength(), register_node_type_tex_bricks(), register_node_type_tex_curve_rgb(), register_node_type_tex_curve_time(), register_node_type_tex_hue_sat(), register_node_type_tex_output(), and register_node_type_tex_valtorgb().

◆ node_type_socket_templates()

◆ node_type_storage()

void blender::bke::node_type_storage ( bNodeType & ntype,
std::optional< StringRefNull > storagename,
void(* freefunc )(bNode *node),
void(* copyfunc )(bNodeTree *dest_ntree, bNode *dest_node, const bNode *src_node) )
Warning
Nodes defining a storage type must allocate this for new nodes. Otherwise nodes will reload as undefined (#46619). #storagename is optional due to some compositor nodes use non-DNA storage type.

Definition at line 5414 of file node.cc.

References blender::bke::bNodeType::copyfunc, blender::bke::bNodeType::freefunc, and blender::bke::bNodeType::storagename.

Referenced by blender::nodes::node_composite_file_output_cc::node_register(), blender::nodes::node_fn_combine_color_cc::node_register(), blender::nodes::node_fn_compare_cc::node_register(), blender::nodes::node_fn_format_string_cc::node_register(), blender::nodes::node_fn_input_bool_cc::node_register(), blender::nodes::node_fn_input_color_cc::node_register(), blender::nodes::node_fn_input_int_cc::node_register(), blender::nodes::node_fn_input_rotation_cc::node_register(), blender::nodes::node_fn_input_string_cc::node_register(), blender::nodes::node_fn_input_vector_cc::node_register(), blender::nodes::node_fn_random_value_cc::node_register(), blender::nodes::node_fn_separate_color_cc::node_register(), blender::nodes::node_geo_accumulate_field_cc::node_register(), blender::nodes::node_geo_attribute_capture_cc::node_register(), blender::nodes::node_geo_bake_cc::node_register(), blender::nodes::node_geo_closure_cc::input_node::node_register(), blender::nodes::node_geo_closure_cc::output_node::node_register(), blender::nodes::node_geo_collection_info_cc::node_register(), blender::nodes::node_geo_combine_bundle_cc::node_register(), blender::nodes::node_geo_curve_fill_cc::node_register(), blender::nodes::node_geo_curve_fillet_cc::node_register(), blender::nodes::node_geo_curve_handle_type_selection_cc::node_register(), blender::nodes::node_geo_curve_primitive_arc_cc::node_register(), blender::nodes::node_geo_curve_primitive_bezier_segment_cc::node_register(), blender::nodes::node_geo_curve_primitive_circle_cc::node_register(), blender::nodes::node_geo_curve_primitive_line_cc::node_register(), blender::nodes::node_geo_curve_primitive_quadrilateral_cc::node_register(), blender::nodes::node_geo_curve_resample_cc::node_register(), blender::nodes::node_geo_curve_sample_cc::node_register(), blender::nodes::node_geo_curve_set_handle_type_cc::node_register(), blender::nodes::node_geo_curve_spline_type_cc::node_register(), blender::nodes::node_geo_curve_to_points_cc::node_register(), blender::nodes::node_geo_curve_trim_cc::node_register(), blender::nodes::node_geo_delete_geometry_cc::node_register(), blender::nodes::node_geo_distribute_points_in_volume_cc::node_register(), blender::nodes::node_geo_duplicate_elements_cc::node_register(), blender::nodes::node_geo_evaluate_closure_cc::node_register(), blender::nodes::node_geo_extrude_mesh_cc::node_register(), blender::nodes::node_geo_field_to_grid_cc::node_register(), blender::nodes::node_geo_foreach_geometry_element_cc::input_node::node_register(), blender::nodes::node_geo_foreach_geometry_element_cc::output_node::node_register(), blender::nodes::node_geo_gizmo_dial_cc::node_register(), blender::nodes::node_geo_gizmo_linear_cc::node_register(), blender::nodes::node_geo_gizmo_transform_cc::node_register(), blender::nodes::node_geo_image_texture_cc::node_register(), blender::nodes::node_geo_input_named_attribute_cc::node_register(), blender::nodes::node_geo_merge_by_distance_cc::node_register(), blender::nodes::node_geo_merge_layers_cc::node_register(), blender::nodes::node_geo_mesh_primitive_circle_cc::node_register(), blender::nodes::node_geo_mesh_primitive_cone_cc::node_register(), blender::nodes::node_geo_mesh_primitive_cylinder_cc::node_register(), blender::nodes::node_geo_mesh_primitive_line_cc::node_register(), blender::nodes::node_geo_mesh_to_points_cc::node_register(), blender::nodes::node_geo_mesh_to_volume_cc::node_register(), blender::nodes::node_geo_object_info_cc::node_register(), blender::nodes::node_geo_points_to_volume_cc::node_register(), blender::nodes::node_geo_proximity_cc::node_register(), blender::nodes::node_geo_raycast_cc::node_register(), blender::nodes::node_geo_repeat_cc::repeat_input_node::node_register(), blender::nodes::node_geo_repeat_cc::repeat_output_node::node_register(), blender::nodes::node_geo_sample_index_cc::node_register(), blender::nodes::node_geo_separate_bundle_cc::node_register(), blender::nodes::node_geo_separate_geometry_cc::node_register(), blender::nodes::node_geo_set_curve_handles_cc::node_register(), blender::nodes::node_geo_simulation_cc::sim_input_node::node_register(), blender::nodes::node_geo_simulation_cc::sim_output_node::node_register(), blender::nodes::node_geo_store_named_attribute_cc::node_register(), blender::nodes::node_geo_string_to_curves_cc::node_register(), blender::nodes::node_geo_subdivision_surface_cc::node_register(), blender::nodes::node_geo_uv_unwrap_cc::node_register(), blender::nodes::node_geo_viewer_cc::node_register(), blender::nodes::node_geo_volume_to_mesh_cc::node_register(), blender::nodes::node_geo_index_switch_cc::register_node(), blender::nodes::node_geo_menu_switch_cc::register_node(), blender::nodes::node_geo_switch_cc::register_node(), register_node_type_cmp_blur(), register_node_type_cmp_channel_matte(), register_node_type_cmp_color_spill(), register_node_type_cmp_combine_color(), register_node_type_cmp_convert_color_space(), blender::nodes::node_composite_convert_to_display_cc::register_node_type_cmp_convert_to_display(), register_node_type_cmp_cornerpin(), register_node_type_cmp_cryptomatte(), register_node_type_cmp_cryptomatte_legacy(), register_node_type_cmp_curve_rgb(), register_node_type_cmp_curve_time(), register_node_type_cmp_defocus(), register_node_type_cmp_denoise(), register_node_type_cmp_dilateerode(), register_node_type_cmp_displace(), register_node_type_cmp_distance_matte(), register_node_type_cmp_glare(), register_node_type_cmp_huecorrect(), register_node_type_cmp_image(), register_node_type_cmp_keying(), register_node_type_cmp_keyingscreen(), register_node_type_cmp_kuwahara(), register_node_type_cmp_lensdist(), register_node_type_cmp_mapuv(), register_node_type_cmp_movieclip(), register_node_type_cmp_moviedistortion(), register_node_type_cmp_planetrackdeform(), register_node_type_cmp_rlayers(), register_node_type_cmp_rotate(), register_node_type_cmp_scale(), register_node_type_cmp_separate_color(), register_node_type_cmp_setalpha(), register_node_type_cmp_tonemap(), register_node_type_cmp_trackpos(), register_node_type_cmp_transform(), register_node_type_cmp_translate(), register_node_type_cmp_viewer(), register_node_type_frame(), register_node_type_sh_attribute(), register_node_type_sh_bsdf_hair_principled(), register_node_type_sh_combcolor(), register_node_type_sh_curve_float(), register_node_type_sh_curve_rgb(), register_node_type_sh_curve_vec(), register_node_type_sh_map_range(), register_node_type_sh_mix(), register_node_type_sh_normal_map(), register_node_type_sh_output_aov(), register_node_type_sh_radial_tiling(), register_node_type_sh_script(), register_node_type_sh_sepcolor(), register_node_type_sh_tangent(), register_node_type_sh_tex_brick(), register_node_type_sh_tex_checker(), register_node_type_sh_tex_environment(), register_node_type_sh_tex_gradient(), register_node_type_sh_tex_ies(), register_node_type_sh_tex_image(), register_node_type_sh_tex_magic(), register_node_type_sh_tex_noise(), register_node_type_sh_tex_sky(), register_node_type_sh_tex_voronoi(), register_node_type_sh_tex_wave(), register_node_type_sh_uvmap(), register_node_type_sh_valtorgb(), register_node_type_sh_vect_transform(), register_node_type_sh_vertex_color(), register_node_type_tex_curve_rgb(), register_node_type_tex_curve_time(), register_node_type_tex_image(), register_node_type_tex_output(), and register_node_type_tex_valtorgb().

◆ node_types_get()

◆ node_unique_id()

◆ node_unique_name()

◆ node_unlink_attached()

void blender::bke::node_unlink_attached ( bNodeTree * ntree,
const bNode * parent )

Definition at line 4282 of file node.cc.

References node_detach_node(), and bNode::parent.

Referenced by node_remove_node(), node_tree_free_local_node(), and version_node_remove().

◆ node_unlink_node()

◆ node_unregister_socket_type()

void blender::bke::node_unregister_socket_type ( bNodeSocketType & stype)

Definition at line 2503 of file node.cc.

References get_socket_type_map(), and node_free_socket_type().

◆ node_unregister_type()

void blender::bke::node_unregister_type ( bNodeType & ntype)

Definition at line 2441 of file node.cc.

References get_node_type_map(), and node_free_type().

◆ node_update_asset_metadata()

◆ node_update_idname_from_experimental()

void blender::bke::node_update_idname_from_experimental ( bNode & node)
static

Update idnames of nodes. Note that this is not forward-compatible and thus should only be done if the node was not officially released yet. It's ok to add it here while it's still an experimental feature.

Definition at line 1794 of file node.cc.

References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), bNode::idname, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_ptr_as(), and STRNCPY_UTF8.

Referenced by node_tree_blend_read_data().

◆ normal_mode_from_legacy()

NormalMode blender::bke::normal_mode_from_legacy ( const short twist_mode)
static

◆ normalize_span()

void blender::bke::normalize_span ( MutableSpan< float3 > data)
static

◆ normalize_vecs()

void blender::bke::normalize_vecs ( MutableSpan< float3 > normals)
static

◆ ntree_blend_read_after_liblink()

void blender::bke::ntree_blend_read_after_liblink ( BlendLibReader * reader,
ID * id )
static

◆ ntree_blend_read_data()

void blender::bke::ntree_blend_read_data ( BlendDataReader * reader,
ID * id )
static

Definition at line 1927 of file node.cc.

References node_tree_blend_read_data().

◆ ntree_blend_write()

void blender::bke::ntree_blend_write ( BlendWriter * writer,
ID * id,
const void * id_address )
static

◆ ntree_contains_tree_exec()

bool blender::bke::ntree_contains_tree_exec ( const bNodeTree & tree_to_search_in,
const bNodeTree & tree_to_search_for,
Set< const bNodeTree * > & already_passed )
static

◆ ntree_copy_data()

◆ ntree_free_data()

◆ ntree_free_type()

void blender::bke::ntree_free_type ( void * treetype_v)
static

Definition at line 2349 of file node.cc.

References defer_free_tree_type(), G_MAIN, and update_typeinfo().

Referenced by node_system_exit(), and node_tree_type_free_link().

◆ ntree_init_data()

void blender::bke::ntree_init_data ( ID * id)
static

◆ ntree_set_typeinfo()

void blender::bke::ntree_set_typeinfo ( bNodeTree * ntree,
bNodeTreeType * typeinfo )
static

◆ object_get_datamask()

◆ object_get_evaluated_geometry_set()

◆ object_has_geometry_set_instances()

◆ offsets_contain_single_point()

bool blender::bke::offsets_contain_single_point ( const OffsetIndices< int > offsets)
static

◆ operator<<() [1/4]

std::ostream & blender::bke::operator<< ( std::ostream & stream,
const bNodeTreeZone & zone )

Definition at line 627 of file node_tree_zones.cc.

◆ operator<<() [2/4]

std::ostream & blender::bke::operator<< ( std::ostream & stream,
const bNodeTreeZones & zones )

Definition at line 616 of file node_tree_zones.cc.

◆ operator<<() [3/4]

std::ostream & blender::bke::operator<< ( std::ostream & stream,
const GeometrySet & geometry_set )

Definition at line 214 of file geometry_set.cc.

◆ operator<<() [4/4]

std::ostream & blender::bke::operator<< ( std::ostream & stream,
const SocketValueVariant & value_variant )

Definition at line 475 of file node_socket_value.cc.

◆ operator==()

bool blender::bke::operator== ( const InstanceReference & a,
const InstanceReference & b )

Definition at line 135 of file instances.cc.

◆ orco_coord_layer_ensure()

MutableSpan< float3 > blender::bke::orco_coord_layer_ensure ( Mesh & mesh,
const eCustomDataType layer )
static

◆ partition_faces_recursively()

◆ pchan_bone_deform()

template<typename MixerT>
float blender::bke::pchan_bone_deform ( const bPoseChannel & pchan,
const float weight,
const float3 & co,
MixerT & mixer )
static

◆ pointcloud_attribute_accessor_functions()

const AttributeAccessorFunctions & blender::bke::pointcloud_attribute_accessor_functions ( )

◆ pointcloud_convert_customdata_to_storage()

◆ pointcloud_new_no_attributes()

◆ quaternion_to_float3()

float3 blender::bke::quaternion_to_float3 ( const math::Quaternion & a)
static

Definition at line 515 of file type_conversions.cc.

References blender::math::to_euler().

◆ quaternion_to_float4()

float4 blender::bke::quaternion_to_float4 ( const math::Quaternion & a)
static

Definition at line 519 of file type_conversions.cc.

◆ quaternion_to_float4x4()

float4x4 blender::bke::quaternion_to_float4x4 ( const math::Quaternion & a)
static

Definition at line 523 of file type_conversions.cc.

References blender::math::from_rotation().

◆ read_array_data()

void blender::bke::read_array_data ( BlendDataReader & reader,
const int8_t dna_attr_type,
const int64_t size,
void ** data )
static

◆ read_attr_data()

std::optional< Attribute::DataVariant > blender::bke::read_attr_data ( BlendDataReader & reader,
const int8_t dna_storage_type,
const int8_t dna_attr_type,
::Attribute & dna_attr )
static

◆ read_attr_domain()

std::optional< AttrDomain > blender::bke::read_attr_domain ( const int8_t dna_domain)
static

Definition at line 468 of file attribute_storage.cc.

References Corner, Curve, Edge, Face, Instance, Layer, and Point.

Referenced by blender::bke::AttributeStorage::blend_read().

◆ read_channelbag()

◆ read_layers()

◆ read_shared_array()

void blender::bke::read_shared_array ( BlendDataReader & reader,
const int8_t dna_attr_type,
const int64_t size,
void ** data,
const ImplicitSharingInfo ** sharing_info )
static

◆ read_slots()

void blender::bke::read_slots ( BlendDataReader * reader,
animrig::Action & action )
static

◆ read_strip_keyframe_data()

void blender::bke::read_strip_keyframe_data ( BlendDataReader * reader,
animrig::StripKeyframeData & strip_keyframe_data )
static

◆ read_strip_keyframe_data_array()

void blender::bke::read_strip_keyframe_data_array ( BlendDataReader * reader,
animrig::Action & action )
static

◆ register_node_zone_type()

void blender::bke::register_node_zone_type ( const bNodeZoneType & zone_type)

◆ remember_deformed_curve_positions_if_necessary()

◆ remember_deformed_grease_pencil_if_necessary()

◆ remove_defgroup_index()

◆ remove_unsupported_sockets()

void blender::bke::remove_unsupported_sockets ( ListBase * sockets,
ListBase * links )
static

◆ reset_bits_and_count()

int blender::bke::reset_bits_and_count ( MutableBitSpan bits,
const Span< int > indices_to_reset )
static

Definition at line 70 of file mesh_runtime.cc.

References count, and i.

Referenced by bit_vector_with_reset_bits_or_empty().

◆ reset_socket_declarations()

void blender::bke::reset_socket_declarations ( ListBase * sockets)
static

Definition at line 4779 of file node.cc.

References LISTBASE_FOREACH.

Referenced by node_socket_declarations_update().

◆ retrieve_attributes_for_transfer()

Vector< AttributeTransferData > blender::bke::retrieve_attributes_for_transfer ( const AttributeAccessor src_attributes,
MutableAttributeAccessor dst_attributes,
AttrDomainMask domain_mask,
const AttributeFilter & attribute_filter = {} )

◆ reverse_curve_point_data()

template<typename T>
void blender::bke::reverse_curve_point_data ( const CurvesGeometry & curves,
const IndexMask & curve_selection,
MutableSpan< T > data )
static

◆ reverse_custom_knots()

void blender::bke::reverse_custom_knots ( MutableSpan< float > custom_knots)
static

◆ reverse_swap_curve_point_data()

template<typename T>
void blender::bke::reverse_swap_curve_point_data ( const CurvesGeometry & curves,
const IndexMask & curve_selection,
MutableSpan< T > data_a,
MutableSpan< T > data_b )
static

◆ rotate_directions_around_axes()

void blender::bke::rotate_directions_around_axes ( MutableSpan< float3 > directions,
const Span< float3 > axes,
const Span< float > angles )
static

◆ save_shared_attribute()

◆ segments_num_no_duplicate_edge()

int blender::bke::segments_num_no_duplicate_edge ( const int points_num,
const bool cyclic )
static

Definition at line 20 of file curve_to_mesh_convert.cc.

References blender::bke::curves::segments_num().

Referenced by fill_mesh_topology().

◆ set_rest_position()

◆ set_transform_position()

void blender::bke::set_transform_position ( float4x4 & transform,
const float3 position )
static

Definition at line 524 of file instances.cc.

References transform().

◆ short2_to_bool()

bool blender::bke::short2_to_bool ( const short2 & a)
static

Definition at line 264 of file type_conversions.cc.

References blender::math::is_zero().

◆ short2_to_byte_color()

ColorGeometry4b blender::bke::short2_to_byte_color ( const short2 & a)
static

Definition at line 300 of file type_conversions.cc.

References blender::color::encode(), and short2_to_color().

◆ short2_to_color()

ColorGeometry4f blender::bke::short2_to_color ( const short2 & a)
static

Definition at line 296 of file type_conversions.cc.

Referenced by short2_to_byte_color().

◆ short2_to_float()

float blender::bke::short2_to_float ( const short2 & a)
static

Definition at line 284 of file type_conversions.cc.

References float2_to_float().

◆ short2_to_float2()

float2 blender::bke::short2_to_float2 ( const short2 & a)
static

Definition at line 268 of file type_conversions.cc.

◆ short2_to_float3()

float3 blender::bke::short2_to_float3 ( const short2 & a)
static

Definition at line 288 of file type_conversions.cc.

◆ short2_to_float4()

float4 blender::bke::short2_to_float4 ( const short2 & a)
static

Definition at line 292 of file type_conversions.cc.

◆ short2_to_int()

int blender::bke::short2_to_int ( const short2 & a)
static

Definition at line 272 of file type_conversions.cc.

References blender::math::midpoint().

Referenced by short2_to_int8().

◆ short2_to_int2()

int2 blender::bke::short2_to_int2 ( const short2 & a)
static

Definition at line 276 of file type_conversions.cc.

◆ short2_to_int8()

int8_t blender::bke::short2_to_int8 ( const short2 & a)
static

Definition at line 280 of file type_conversions.cc.

References int_to_int8(), and short2_to_int().

◆ should_add_attribute_to_mesh()

bool blender::bke::should_add_attribute_to_mesh ( const AttributeAccessor & curve_attributes,
const AttributeAccessor & mesh_attributes,
const StringRef id,
const AttributeMetaData & meta_data,
const AttributeFilter & attribute_filter )
static

◆ slow_socket_type_to_geo_nodes_base_cpp_type()

const CPPType * blender::bke::slow_socket_type_to_geo_nodes_base_cpp_type ( const eNodeSocketDatatype type)
static

◆ socket_id_user_decrement()

◆ socket_id_user_increment()

◆ socket_type_to_custom_data_type()

◆ socket_type_to_geo_nodes_base_cpp_type()

◆ socket_type_to_grid_type()

◆ socket_value_storage()

◆ static_type_is_base_socket_type()

template<typename T>
bool blender::bke::static_type_is_base_socket_type ( const eNodeSocketDatatype socket_type)
static

◆ static_type_to_socket_type()

template<typename T>
std::optional< eNodeSocketDatatype > blender::bke::static_type_to_socket_type ( )
static

Very fast (compile-time) conversion from a static C++ type to the corresponding socket type.

Definition at line 42 of file node_socket_value.cc.

References blender::is_same_any_v, is_single_or_field_or_grid_v, SOCK_BOOLEAN, SOCK_BUNDLE, SOCK_CLOSURE, SOCK_COLLECTION, SOCK_FLOAT, SOCK_GEOMETRY, SOCK_IMAGE, SOCK_INT, SOCK_MATERIAL, SOCK_MATRIX, SOCK_MENU, SOCK_OBJECT, SOCK_RGBA, SOCK_ROTATION, SOCK_STRING, SOCK_TEXTURE, and SOCK_VECTOR.

◆ tag_component_positions_changed()

void blender::bke::tag_component_positions_changed ( void * owner)
static

◆ tag_component_reference_index_changed()

void blender::bke::tag_component_reference_index_changed ( void * owner)
static

◆ tag_component_sharpness_changed()

void blender::bke::tag_component_sharpness_changed ( void * owner)
static

◆ tag_material_index_changed()

void blender::bke::tag_material_index_changed ( void * owner)
static

◆ tag_position_changed()

void blender::bke::tag_position_changed ( void * owner)
static

Definition at line 15 of file pointcloud_attributes.cc.

Referenced by changed_tags().

◆ tag_radius_changed()

void blender::bke::tag_radius_changed ( void * owner)
static

Definition at line 21 of file pointcloud_attributes.cc.

Referenced by changed_tags().

◆ transform_custom_normal_attribute()

◆ translate_positions() [1/2]

void blender::bke::translate_positions ( MutableSpan< float3 > positions,
const float3 & translation )
static

◆ translate_positions() [2/2]

void blender::bke::translate_positions ( MutableSpan< float3 > positions,
const float3 & translation )
static

◆ try_adapt_data_type()

GVArray blender::bke::try_adapt_data_type ( GVArray varray,
const CPPType & to_type )
static

◆ try_add_shared_field_attribute()

bool blender::bke::try_add_shared_field_attribute ( MutableAttributeAccessor attributes,
const StringRef id_to_create,
const AttrDomain domain,
const fn::GField & field )
static

◆ try_capture_field_on_geometry() [1/3]

bool blender::bke::try_capture_field_on_geometry ( GeometryComponent & component,
const StringRef attribute_id,
AttrDomain domain,
const fn::Field< bool > & selection,
const fn::GField & field )
inline

Definition at line 496 of file BKE_geometry_fields.hh.

References try_capture_fields_on_geometry().

◆ try_capture_field_on_geometry() [2/3]

bool blender::bke::try_capture_field_on_geometry ( GeometryComponent & component,
const StringRef attribute_id,
AttrDomain domain,
const fn::GField & field )
inline

Definition at line 482 of file BKE_geometry_fields.hh.

References try_capture_fields_on_geometry().

◆ try_capture_field_on_geometry() [3/3]

bool blender::bke::try_capture_field_on_geometry ( MutableAttributeAccessor attributes,
const fn::FieldContext & field_context,
const StringRef attribute_id,
AttrDomain domain,
const fn::Field< bool > & selection,
const fn::GField & field )
inline

◆ try_capture_fields_on_geometry() [1/3]

bool blender::bke::try_capture_fields_on_geometry ( GeometryComponent & component,
Span< StringRef > attribute_ids,
AttrDomain domain,
const fn::Field< bool > & selection,
Span< fn::GField > fields )

◆ try_capture_fields_on_geometry() [2/3]

bool blender::bke::try_capture_fields_on_geometry ( GeometryComponent & component,
Span< StringRef > attribute_ids,
AttrDomain domain,
Span< fn::GField > fields )

◆ try_capture_fields_on_geometry() [3/3]

bool blender::bke::try_capture_fields_on_geometry ( MutableAttributeAccessor attributes,
const fn::FieldContext & field_context,
Span< StringRef > attribute_ids,
AttrDomain domain,
const fn::Field< bool > & selection,
Span< fn::GField > fields )

Definition at line 833 of file geometry_fields.cc.

References blender::bke::MutableAttributeAccessor::add(), blender::fn::FieldEvaluator::add(), blender::fn::FieldEvaluator::add_with_destination(), blender::CPPType::alignment, blender::Vector< T, InlineBufferCapacity, Allocator >::append(), attribute_data_matches_varray(), BLI_assert, blender::array_utils::copy(), blender::fn::GFieldBase< NodePtr >::cpp_type(), cpp_type_to_attribute_type(), blender::fn::FieldNode::depends_on_input(), blender::CPPType::destruct_n(), blender::bke::AttributeAccessor::domain_size(), blender::fn::FieldEvaluator::evaluate(), blender::fn::evaluate_constant_field(), blender::bke::GSpanAttributeWriter::finish(), blender::bke::AttributeAccessor::get_builtin_domain_and_type(), blender::fn::FieldEvaluator::get_evaluated(), blender::fn::FieldEvaluator::get_evaluated_selection_as_mask(), i, blender::Span< T >::index_range(), initialize_new_data(), blender::bke::AttributeAccessor::lookup(), blender::bke::MutableAttributeAccessor::lookup_for_write_span(), blender::bke::AttributeAccessor::lookup_validator(), mask(), MEM_freeN(), MEM_mallocN_aligned(), blender::fn::GFieldBase< NodePtr >::node(), blender::bke::MutableAttributeAccessor::remove(), result, blender::fn::FieldEvaluator::set_selection(), blender::CPPType::size, blender::Span< T >::size(), blender::bke::GSpanAttributeWriter::span, try_add_shared_field_attribute(), and blender::bke::AttributeValidator::validate_field_if_necessary().

Referenced by blender::nodes::node_geo_attribute_capture_cc::node_geo_exec(), blender::nodes::node_geo_set_grease_pencil_color_cc::node_geo_exec(), blender::nodes::node_geo_set_grease_pencil_softness_cc::node_geo_exec(), blender::nodes::node_geo_set_position_cc::set_curves_position(), try_capture_field_on_geometry(), try_capture_field_on_geometry(), try_capture_field_on_geometry(), and try_capture_fields_on_geometry().

◆ try_detect_field_domain()

◆ try_direct_evaluate_point_data()

◆ try_get_field_direct_attribute_id()

std::optional< StringRefNull > blender::bke::try_get_field_direct_attribute_id ( const fn::GField & any_field)
static

◆ try_sharing_point_data()

◆ try_tag_verts_no_face_none()

void blender::bke::try_tag_verts_no_face_none ( const Mesh & mesh)
static

If there are no loose edges and no loose vertices, all vertices are used by faces.

Definition at line 98 of file mesh_runtime.cc.

References blender::bits::BitVector< InlineBufferCapacity, Allocator >::clear_and_shrink(), blender::bke::LooseGeomCache::count, and blender::bke::LooseGeomCache::is_loose_bits.

◆ unique_socket_template_identifier()

void blender::bke::unique_socket_template_identifier ( bNodeSocketTemplate * list,
bNodeSocketTemplate * ntemp,
const char defname[],
const char delim )
static

◆ update_socket_declarations()

void blender::bke::update_socket_declarations ( ListBase * sockets,
Span< nodes::SocketDeclaration * > declarations )
static

Definition at line 4769 of file node.cc.

References LISTBASE_FOREACH_INDEX.

Referenced by node_socket_declarations_update().

◆ update_typeinfo()

◆ update_zone_border_links()

void blender::bke::update_zone_border_links ( const bNodeTree & tree,
bNodeTreeZones & tree_zones )
static

◆ update_zone_depths()

void blender::bke::update_zone_depths ( bNodeTreeZone & zone)
static

◆ update_zone_per_node()

◆ varray_for_deform_verts()

◆ varray_for_mutable_deform_verts()

◆ verify_armature_deform_valid()

◆ volume_grid_type_to_custom_data_type()

std::optional< eCustomDataType > blender::bke::volume_grid_type_to_custom_data_type ( VolumeGridType type)

◆ write_array_data()

◆ write_channelbag()

◆ write_layers()

void blender::bke::write_layers ( BlendWriter * writer,
Span< animrig::Layer * > layers )
static

◆ write_node_socket()

void blender::bke::write_node_socket ( BlendWriter * writer,
const bNodeSocket * sock )
static

◆ write_node_socket_default_value()

◆ write_shared_array()

void blender::bke::write_shared_array ( BlendWriter & writer,
const AttrType data_type,
const void * data,
const int64_t size,
const ImplicitSharingInfo * sharing_info )
static

◆ write_sharp_bezier_edges()

◆ write_slots()

void blender::bke::write_slots ( BlendWriter * writer,
Span< animrig::Slot * > slots )
static

◆ write_strip_keyframe_data()

void blender::bke::write_strip_keyframe_data ( BlendWriter * writer,
animrig::StripKeyframeData & strip_keyframe_data )
static

◆ write_strip_keyframe_data_array()

void blender::bke::write_strip_keyframe_data_array ( BlendWriter * writer,
Span< animrig::StripKeyframeData * > strip_keyframe_data_array )
static

◆ write_strips()

void blender::bke::write_strips ( BlendWriter * writer,
Span< animrig::Strip * > strips )
static

◆ zone_type_by_node_type()

Variable Documentation

◆ AssetType_AC

AssetTypeInfo blender::bke::AssetType_AC
static
Initial value:
= {
nullptr,
}
static void action_asset_metadata_ensure(void *asset_ptr, AssetMetaData *asset_data)

Definition at line 734 of file blenkernel/intern/action.cc.

◆ ATTR_CURVE_TYPE

StringRef blender::bke::ATTR_CURVE_TYPE = "curve_type"
constexpr

◆ ATTR_CYCLIC

StringRef blender::bke::ATTR_CYCLIC = "cyclic"
constexpr

◆ ATTR_HANDLE_POSITION_LEFT

◆ ATTR_HANDLE_POSITION_RIGHT

◆ ATTR_HANDLE_TYPE_LEFT

◆ ATTR_HANDLE_TYPE_RIGHT

◆ ATTR_NORMAL_MODE

StringRef blender::bke::ATTR_NORMAL_MODE = "normal_mode"
constexpr

◆ ATTR_NURBS_KNOTS_MODE

◆ ATTR_NURBS_ORDER

◆ ATTR_NURBS_WEIGHT

◆ ATTR_POSITION

StringRef blender::bke::ATTR_POSITION = "position"
constexpr

◆ ATTR_RADIUS

StringRef blender::bke::ATTR_RADIUS = "radius"
constexpr

◆ ATTR_RESOLUTION

◆ ATTR_SURFACE_UV_COORDINATE

StringRef blender::bke::ATTR_SURFACE_UV_COORDINATE = "surface_uv_coordinate"
constexpr

◆ ATTR_TILT

StringRef blender::bke::ATTR_TILT = "tilt"
constexpr

◆ is_geometry_component_v

◆ is_single_or_field_or_grid_v

template<typename T, typename U>
bool blender::bke::is_single_or_field_or_grid_v
staticconstexpr
Initial value:
U,
>
#define U
#define T
constexpr bool is_same_any_v

Definition at line 30 of file node_socket_value.cc.

Referenced by static_type_to_socket_type().

◆ is_VolumeGrid_v

template<typename T>
bool blender::bke::volume_grid::is_VolumeGrid_v
staticconstexpr

Compile time check to see of a type is a VolumeGrid, e.g. false for float or GVolumeGrid and true for VolumeGrid<int> and VolumeGrid<float>.

Definition at line 52 of file BKE_volume_grid_fwd.hh.

Referenced by blender::bke::SocketValueVariant::extract().

◆ no_procedural_access_message

const char * blender::bke::no_procedural_access_message
Initial value:
= N_(
"This attribute cannot be accessed in a procedural context")
#define N_(msgid)

Definition at line 196 of file attribute_access.cc.

Referenced by blender::nodes::node_geo_input_named_attribute_cc::node_geo_exec(), and blender::nodes::node_geo_store_named_attribute_cc::node_geo_exec().

◆ NODE_INSTANCE_KEY_BASE

◆ NODE_INSTANCE_KEY_NONE

◆ NodeSocketTypeUndefined

◆ NodeTreeTypeUndefined

bNodeTreeType blender::bke::NodeTreeTypeUndefined

Definition at line 125 of file node.cc.

Referenced by node_tree_is_registered(), ntree_set_typeinfo(), and register_undefined_types().

◆ NodeTypeUndefined