Blender V4.5
blender::bke Namespace Reference

Namespaces

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

Classes

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

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 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)
 
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)
 
eCustomDataType attribute_data_type_highest_complexity (Span< eCustomDataType > 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_storage_to_customdata (CurvesGeometry &curves)
 
void curves_convert_customdata_to_storage (CurvesGeometry &curves)
 
void pointcloud_convert_storage_to_customdata (PointCloud &pointcloud)
 
void pointcloud_convert_customdata_to_storage (PointCloud &pointcloud)
 
void grease_pencil_convert_storage_to_customdata (GreasePencil &grease_pencil)
 
void grease_pencil_convert_customdata_to_storage (GreasePencil &grease_pencil)
 
void attribute_storage_blend_write_prepare (AttributeStorage &data, const Map< AttrDomain, Vector< CustomDataLayer, 16 > * > &layers_to_write, 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< float > varray_for_deform_verts (Span< MDeformVert > dverts, int defgroup_index)
 
VMutableArray< float > varray_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_custom_normals_to_legacy (MutableSpan< CustomDataLayer > corner_layers)
 
void mesh_custom_normals_to_generic (Mesh &mesh)
 
void mesh_sculpt_mask_to_legacy (MutableSpan< CustomDataLayer > vert_layers)
 
void mesh_sculpt_mask_to_generic (Mesh &mesh)
 
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)
 
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 std::optional< blender::bke::MutableAttributeAccessorget_attribute_accessor_for_write (AttributeOwner &owner)
 
static int attribute_data_type_complexity (const eCustomDataType 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 AttributeStorage attribute_legacy_convert_customdata_to_storage (const Map< AttrDomain, CustomDataAndSize > &domains)
 
static void convert_storage_to_customdata (AttributeStorage &storage, const Map< AttrDomain, CustomDataAndSizeMutable > &custom_data_domains)
 
static ImplicitSharingInfocreate_sharing_info_for_array (void *data, const int64_t size, const CPPType &type)
 
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)
 
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 eCustomDataType 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 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 GeometryAttributeProviders create_attribute_providers_for_instances ()
 
static AttributeAccessorFunctions get_instances_accessor_functions ()
 
static bool meta_data_matches (const std::optional< bke::AttributeMetaData > meta_data, const AttrDomainMask domains, const eCustomDataMask types)
 
static void transform_positions (MutableSpan< float3 > positions, const float4x4 &matrix)
 
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)
 
template<typename T >
void adapt_mesh_domain_face_to_point_impl (const Mesh &mesh, const VArray< T > &src, MutableSpan< T > r_dst)
 
template<>
void adapt_mesh_domain_face_to_point_impl (const Mesh &mesh, const VArray< bool > &src, MutableSpan< bool > r_dst)
 
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 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 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, const 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 void node_unlink_attached (bNodeTree *ntree, const bNode *parent)
 
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_component_positions_changed (void *owner)
 
static void tag_component_radius_changed (void *owner)
 
static GeometryAttributeProviders create_attribute_providers_for_pointcloud ()
 
static 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< eCustomDataType > 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 transform_positions (MutableSpan< float3 > positions, const float4x4 &matrix)
 
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)
 
static int domain_num (const CurvesGeometry &curves, const AttrDomain domain)
 
static CustomDatadomain_custom_data (CurvesGeometry &curves, const AttrDomain domain)
 
static const CustomDatadomain_custom_data (const CurvesGeometry &curves, const AttrDomain domain)
 
template<typename T >
static VArray< Tget_varray_attribute (const CurvesGeometry &curves, const AttrDomain domain, const StringRef name, const T default_value)
 
template<typename T >
static Span< Tget_span_attribute (const CurvesGeometry &curves, const AttrDomain domain, const StringRef name)
 
template<typename T >
static MutableSpan< Tget_mutable_attribute (CurvesGeometry &curves, const AttrDomain domain, const StringRef name, const T default_value=T())
 
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)
 
static void gather_mutable_geometry_sets (GeometrySet &geometry_set, Vector< GeometrySet * > &r_geometry_sets)
 
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_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, eCustomDataType 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)
 
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)
 
void node_tree_free_local_tree (bNodeTree *ntree)
 
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:866
#define FOREACH_NODETREE_BEGIN(bmain, _nodetree, _id)
Definition BKE_node.hh:856
#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_rebuild_id_vector (bNodeTree &node_tree)
 
bNodenode_copy_with_mapping (bNodeTree *dst_tree, const bNode &node_src, int flag, bool use_unique, Map< const bNodeSocket *, bNodeSocket * > &new_socket_map)
 
bNodenode_copy (bNodeTree *dst_tree, const bNode &src_node, int flag, bool use_unique)
 
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, const 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< float > construct_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
 

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 = void (*)(const void *socket_value, void *r_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)
 
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)
 
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.

◆ bNodeClassCallback

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

Definition at line 478 of file BKE_node.hh.

◆ BoneNameSet

Definition at line 696 of file BKE_armature.hh.

◆ Clock

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

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

◆ FoundFCurveCallback

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

Definition at line 374 of file BKE_action.hh.

◆ FoundFCurveCallbackConst

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

Definition at line 375 of file BKE_action.hh.

◆ GeometryComponentPtr

◆ NodeBlendDataReadFunction

Definition at line 145 of file BKE_node.hh.

◆ NodeBlendWriteFunction

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

Definition at line 142 of file BKE_node.hh.

◆ NodeDeclareDynamicFunction

◆ NodeDeclareFunction

Definition at line 116 of file BKE_node.hh.

◆ NodeElemEvalFunction

◆ NodeExecFunction

Initial value:
void (*)(
void *data, int thread, bNode *, bNodeExecData *execdata, bNodeStack **in, bNodeStack **out)
std::string data
#define in
#define out

Definition at line 214 of file BKE_node.hh.

◆ NodeExtraInfoFunction

◆ NodeFreeExecFunction

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

Definition at line 213 of file BKE_node.hh.

◆ NodeGatherAddOperationsFunction

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

Definition at line 128 of file BKE_node.hh.

◆ NodeGatherSocketLinkOperationsFunction

◆ NodeGeometryExecFunction

◆ NodeGetCompositorOperationFunction

◆ NodeGPUExecFunction

◆ NodeIDVectorSet

◆ NodeInitExecFunction

Initial value:

Definition at line 210 of file BKE_node.hh.

◆ NodeInternallyLinkedInputFunction

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

Definition at line 139 of file BKE_node.hh.

◆ NodeInverseElemEvalFunction

◆ NodeInverseEvalFunction

◆ NodeMaterialXFunction

Definition at line 218 of file BKE_node.hh.

◆ NodeMultiFunctionBuildFunction

◆ NodeSocketPair

Definition at line 203 of file node_tree_update.cc.

◆ ObjectModifierPair

Definition at line 202 of file node_tree_update.cc.

◆ SelectedBoneCallback

Definition at line 692 of file BKE_armature.hh.

◆ SocketGetCPPValueFunction

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

Definition at line 120 of file BKE_node.hh.

◆ SocketGetGeometryNodesCPPValueFunction

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

Definition at line 121 of file BKE_node.hh.

◆ TreeNodePair

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

Definition at line 201 of file node_tree_update.cc.

Enumeration Type Documentation

◆ AttrDomain

Enumerator
Auto 
Point 
Edge 
Face 
Corner 
Curve 
Instance 
Layer 

Definition at line 63 of file BKE_attribute.hh.

◆ AttrStorageType

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

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

Enumerator
Default 
Small 
Middle 
Large 

Definition at line 1135 of file BKE_node.hh.

◆ FieldSocketState

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

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

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 458 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()

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

◆ action_asset_type_property()

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

Definition at line 742 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()

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

Definition at line 445 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()

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

Definition at line 489 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()

static 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 411 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()

static 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 470 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()

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

◆ adapt_curve_domain_curve_to_point()

static 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 >
static 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 1792 of file curves_geometry.cc.

References adapt_curve_domain_curve_to_point_impl(), blender::bke::CurvesGeometry::curves_num(), blender::MutableSpan< T >::fill(), blender::bke::CurvesGeometry::points_by_curve(), and blender::MutableSpan< T >::slice().

Referenced by adapt_curve_domain_curve_to_point_impl().

◆ adapt_curve_domain_point_to_curve()

static 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 1753 of file curves_geometry.cc.

References adapt_curve_domain_point_to_curve_impl(), blender::bke::CurvesGeometry::curves_num(), blender::MutableSpan< T >::fill(), and blender::bke::CurvesGeometry::points_by_curve().

◆ adapt_curve_domain_point_to_curve_impl() [2/2]

template<typename T >
static 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 1728 of file curves_geometry.cc.

References adapt_curve_domain_point_to_curve_impl(), blender::bke::CurvesGeometry::curves_range(), blender::threading::parallel_for(), blender::bke::CurvesGeometry::points_by_curve(), and range.

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()

static 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 >
static 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()

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

◆ adapt_mesh_domain_corner_to_point()

static 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 >
static 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()

static 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()

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

◆ adapt_mesh_domain_edge_to_point()

static 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 >
static 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()

static 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()

static 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()

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

◆ adapt_mesh_domain_face_to_point_impl() [1/2]

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

◆ adapt_mesh_domain_face_to_point_impl() [2/2]

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

◆ adapt_mesh_domain_point_to_corner()

static 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(), mesh, and blender::GVArrayCommon::type().

Referenced by adapt_mesh_attribute_domain(), and adapt_mesh_domain_point_to_corner().

◆ adapt_mesh_domain_point_to_edge()

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

◆ adapt_mesh_domain_point_to_face()

static 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()

static 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()

static 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()

static 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>
static void blender::bke::add_implicit_conversion ( DataTypeConversions & conversions)
static

◆ add_orco_mesh()

◆ adjust_multi_input_indices_after_removed_link()

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

Definition at line 4171 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()

◆ asset_blendfile_path_for_save()

static 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 290 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()

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

◆ asset_root_path_for_save()

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

◆ asset_weak_reference_for_essentials()

static 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()

static bool blender::bke::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

◆ attr_type_to_custom_data_type()

◆ attribute_data_matches_varray()

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

◆ attribute_data_type_complexity()

◆ attribute_data_type_highest_complexity()

eCustomDataType blender::bke::attribute_data_type_highest_complexity ( Span< eCustomDataType > 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 314 of file attribute_access.cc.

References attribute_domain_priority(), and Corner.

Referenced by blender::bke::GeometrySet::gather_attributes_for_propagation(), and blender::geometry::get_final_attribute_info().

◆ attribute_domain_priority()

static 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 290 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]

auto blender::bke::attribute_filter_with_skip_ref ( AttributeFilter filter,
const Span< StringRef > skip )
inline

Combines an existing #AttributeFilter and tags a few additional attributes that can/should be skipped.

Definition at line 39 of file BKE_attribute_filters.hh.

References blender::Span< T >::contains(), filter, and name.

Referenced by blender::geometry::extract_instances(), and blender::geometry::filter_builtin_attributes().

◆ attribute_is_builtin_on_component_type()

◆ attribute_kind_matches()

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

◆ attribute_legacy_convert_customdata_to_storage()

◆ attribute_name_is_anonymous()

◆ 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()

◆ attribute_type_to_cpp_type()

◆ bit_vector_with_reset_bits_or_empty()

static 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(), and callback.

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()

◆ bool_to_byte_color()

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

◆ bool_to_color()

static 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()

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

Definition at line 387 of file type_conversions.cc.

◆ bool_to_float2()

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

Definition at line 407 of file type_conversions.cc.

◆ bool_to_float3()

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

Definition at line 411 of file type_conversions.cc.

◆ bool_to_float4()

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

Definition at line 415 of file type_conversions.cc.

◆ bool_to_int()

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

Definition at line 395 of file type_conversions.cc.

◆ bool_to_int2()

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

Definition at line 403 of file type_conversions.cc.

◆ bool_to_int8()

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

Definition at line 391 of file type_conversions.cc.

◆ bool_to_short2()

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

Definition at line 399 of file type_conversions.cc.

◆ build_mesh_positions()

◆ build_offsets()

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

◆ build_pbvh_for_dynamic_topology()

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

◆ build_pbvh_from_ccg()

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

◆ build_pbvh_from_regular_mesh()

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

◆ build_point_matrix()

static float4x4 blender::bke::build_point_matrix ( const float3 & location,
const float3 & tangent,
const float3 & normal )
static

◆ build_socket_indices()

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

◆ 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(), Mesh::edges_num, mesh, 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(), mesh, blender::index_mask::IndexMask::size(), and Mesh::verts_num.

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

◆ bvhtree_from_pointcloud_get()

◆ bvhtree_new_common()

static 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()

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

◆ byte_color_to_float()

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

◆ byte_color_to_float2()

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

◆ byte_color_to_float3()

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

◆ byte_color_to_float4()

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

◆ byte_color_to_int()

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

◆ byte_color_to_int2()

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

◆ byte_color_to_int8()

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

◆ byte_color_to_short2()

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

◆ calc_edge_centers()

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

◆ calc_face_centers()

static 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()

static ResultOffsets blender::bke::calculate_result_offsets ( const CurvesInfo & info,
const bool fill_caps )
static

◆ 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]

static 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]

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

Definition at line 700 of file type_conversions.cc.

References call_convert_to_uninitialized_fn(), and from.

◆ can_read_node_type()

◆ can_simple_adapt_for_single()

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

◆ collect_used_previews()

◆ color_to_bool()

static 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()

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

◆ color_to_float()

static 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()

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

◆ color_to_float3()

◆ color_to_float4()

static 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()

static 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()

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

◆ color_to_int8()

static 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()

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

◆ construct_curve_length_gvarray()

◆ convert_collection_to_instances()

◆ convert_storage_to_customdata()

◆ copy_attributes()

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

◆ copy_attributes_group_to_group()

◆ copy_curve_domain_attribute_to_mesh()

static void blender::bke::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

◆ copy_curve_selection_custom_knots()

◆ copy_indices_to_offset_ranges()

template<typename T >
static 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 >
static 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 >
static 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 >
static 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 >
static 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 >
static 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 >
static 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()

static 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)

◆ cpp_type_to_custom_data_type()

eCustomDataType blender::bke::cpp_type_to_custom_data_type ( const CPPType & type)

Definition at line 150 of file attribute_access.cc.

References 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, and blender::CPPType::is().

Referenced by blender::bke::MutableAttributeAccessor::add(), gather_attributes(), blender::bke::AttributeIter::get(), get_mutable_attribute(), blender::bke::greasepencil::get_mutable_attribute(), get_mutable_attribute(), get_span_attribute(), get_span_attribute(), get_varray_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::bke::AttributeAccessor::lookup(), blender::bke::MutableAttributeAccessor::lookup_or_add_for_write(), 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::bke::bake::serialize_bake_item(), 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(), and blender::draw::pbvh::update_generic_attribute_mesh().

◆ create_attribute_providers_for_instances()

static GeometryAttributeProviders blender::bke::create_attribute_providers_for_instances ( )
static

IDs of the instances. They are used for consistency over multiple frames for things like motion blur. Proper stable ID data that actually helps when rendering can only be generated in some situations, so this vector is allowed to be empty, in which case the index of each instance will be used for the final ID.

Indices into Instances::references_. Determines what data is instanced.

Definition at line 17 of file instances_attributes.cc.

References CD_PROP_FLOAT4X4, CD_PROP_INT32, blender::bke::Instances::custom_data_attributes(), blender::bke::BuiltinAttributeProvider::Deletable, Instance, blender::bke::Instances::instances_num(), blender::bke::BuiltinAttributeProvider::NonDeletable, and tag_component_reference_index_changed().

Referenced by get_instances_accessor_functions().

◆ create_attribute_providers_for_mesh()

static GeometryAttributeProviders blender::bke::create_attribute_providers_for_mesh ( )
static

◆ create_attribute_providers_for_pointcloud()

static GeometryAttributeProviders blender::bke::create_attribute_providers_for_pointcloud ( )
static

In this function all the attribute providers for a point cloud component are created. Most data in this function is statically allocated, because it does not change over time.

Definition at line 29 of file pointcloud_attributes.cc.

References CD_PROP_FLOAT, CD_PROP_FLOAT3, CD_PROP_INT32, blender::bke::BuiltinAttributeProvider::Deletable, blender::bke::BuiltinAttributeProvider::NonDeletable, PointCloud::pdata, Point, tag_component_positions_changed(), tag_component_radius_changed(), and PointCloud::totpoint.

Referenced by get_pointcloud_accessor_functions().

◆ create_auto_smooth_modifier()

◆ create_edges_tree_data() [1/2]

static 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]

static 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()

static 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()

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

◆ create_orco_mesh()

◆ create_pointcloud_tree_data() [1/2]

static 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, blender::bke::BVHTreeFromPointCloud::tree, and tree.

Referenced by bvhtree_from_pointcloud_get().

◆ create_pointcloud_tree_data() [2/2]

static 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()

static 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, blender::bke::BVHTreeFromPointCloud::tree, and tree.

Referenced by create_pointcloud_tree_data().

◆ create_sharing_info_for_array()

static ImplicitSharingInfo * blender::bke::create_sharing_info_for_array ( void * data,
const int64_t size,
const CPPType & type )
static

Definition at line 73 of file attribute_storage.cc.

References data, and size().

Referenced by blender::bke::Attribute::data_for_write().

◆ create_tree_from_edges()

static 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()

static 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]

static 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()

static 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]

static 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]

static 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]

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

◆ create_verts_tree_data() [2/2]

static 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 )

Convert the old curve type to the new data type using a specific list of Nurb for the actual geometry data. Caller owns the returned pointer.

Definition at line 86 of file curve_legacy_convert.cc.

References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::bke::CurvesGeometry::attributes_for_write(), Nurb::bezt, Nurb::bp, blender::MutableSpan< T >::copy_from(), CU_NURB_CYCLIC, blender::bke::CurvesGeometry::curve_type_counts(), curve_type_from_legacy(), blender::bke::CurvesGeometry::curve_types(), blender::bke::CurvesGeometry::curve_types_for_write(), curves_new_nomain(), blender::bke::CurvesGeometry::curves_num(), blender::bke::CurvesGeometry::curves_range(), blender::bke::CurvesGeometry::cyclic_for_write(), blender::bke::SpanAttributeWriter< T >::finish(), Nurb::flagu, blender::bke::curves::foreach_curve_by_type(), Curves::geometry, BezTriple::h1, BezTriple::h2, blender::bke::CurvesGeometry::handle_positions_left_for_write(), blender::bke::CurvesGeometry::handle_positions_right_for_write(), handle_type_from_legacy(), blender::bke::CurvesGeometry::handle_types_left_for_write(), blender::bke::CurvesGeometry::handle_types_right_for_write(), blender::Span< T >::index_range(), blender::Vector< T, InlineBufferCapacity, Allocator >::index_range(), blender::Vector< T, InlineBufferCapacity, Allocator >::is_empty(), knots_mode_from_legacy(), Nurb::knotsu, blender::MutableSpan< T >::last(), blender::Span< T >::last(), LISTBASE_FOREACH, blender::bke::MutableAttributeAccessor::lookup_or_add_for_write_only_span(), Curve::mat, Curves::mat, MEM_dupallocN(), blender::bke::CurvesGeometry::normal_mode_for_write(), normal_mode_from_legacy(), blender::bke::CurvesGeometry::nurbs_custom_knots_by_curve(), blender::bke::CurvesGeometry::nurbs_custom_knots_for_write(), blender::bke::CurvesGeometry::nurbs_custom_knots_update_size(), blender::bke::CurvesGeometry::nurbs_has_custom_knots(), NURBS_KNOT_MODE_CUSTOM, blender::bke::CurvesGeometry::nurbs_knots_modes_for_write(), blender::bke::CurvesGeometry::nurbs_orders_for_write(), blender::bke::CurvesGeometry::nurbs_weights_for_write(), blender::bke::CurvesGeometry::offsets(), blender::bke::CurvesGeometry::offsets_for_write(), Nurb::orderu, Nurb::pntsu, Point, blender::bke::CurvesGeometry::points_by_curve(), blender::bke::CurvesGeometry::positions_for_write(), BezTriple::radius, BPoint::radius, blender::bke::CurvesGeometry::resize(), Nurb::resolu, blender::bke::CurvesGeometry::resolution_for_write(), blender::IndexRange::size(), blender::Vector< T, InlineBufferCapacity, Allocator >::size(), blender::MutableSpan< T >::slice(), blender::bke::SpanAttributeWriter< T >::span, BezTriple::tilt, BPoint::tilt, blender::bke::CurvesGeometry::tilt_for_write(), Curve::totcol, Curves::totcol, Curve::twist_mode, Nurb::type, types, blender::bke::CurvesGeometry::update_curve_types(), BezTriple::vec, and BPoint::vec.

◆ curve_normal_point_domain()

◆ 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 833 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_to_mesh_sweep(), CustomData_free_layer_named(), blender::bke::AttributeIter::data_type, blender::bke::AttributeIter::domain, blender::bke::ResultOffsets::edge, blender::bke::CurvesGeometry::ensure_can_interpolate_to_evaluated(), evaluate_attribute(), blender::bke::ResultOffsets::face, 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(), info, blender::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, main, blender::bke::ResultOffsets::main_indices, mesh, blender::bke::AttributeIter::name, blender::bke::ResultOffsets::profile_indices, should_add_attribute_to_mesh(), blender::bke::GSpanAttributeWriter::span, blender::bke::SpanAttributeWriter< T >::span, blender::bke::ResultOffsets::vert, Mesh::vert_data, Mesh::verts_num, 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 = {} )

Create a loose-edge mesh based on the evaluated path of the curve's splines. Transfer curve attributes to the mesh.

Definition at line 1017 of file curve_to_mesh_convert.cc.

References curve, curve_to_mesh_sweep(), curve_to_wire_mesh(), and get_curve_single_vert().

Referenced by blender::nodes::node_geo_curve_to_mesh_cc::curve_to_mesh(), curve_to_wire_mesh(), blender::io::alembic::ABCCurveMeshWriter::get_export_mesh(), and mesh_new_from_evaluated_curve_type_object().

◆ curve_type_from_legacy()

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

◆ curves_convert_customdata_to_storage()

◆ curves_convert_storage_to_customdata()

◆ curves_copy_curve_selection()

◆ 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 300 of file blenkernel/intern/curves.cc.

References BKE_id_new_nomain(), and Curves::geometry.

◆ curves_new_nomain() [2/2]

◆ curves_new_nomain_single()

◆ curves_normals_point_domain_calc()

◆ custom_data_type_to_attr_type()

◆ custom_data_type_to_cpp_type()

const blender::CPPType * blender::bke::custom_data_type_to_cpp_type ( eCustomDataType 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()

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

◆ defer_free_socket_type()

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

◆ defer_free_tree_type()

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

Definition at line 2644 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()

◆ discover_tree_zones()

◆ domain_custom_data() [1/2]

static const CustomData & blender::bke::domain_custom_data ( const CurvesGeometry & curves,
const AttrDomain domain )
static

Definition at line 240 of file curves_geometry.cc.

References CurvesGeometry::curve_data, Point, and CurvesGeometry::point_data.

◆ domain_custom_data() [2/2]

static CustomData & blender::bke::domain_custom_data ( CurvesGeometry & curves,
const AttrDomain domain )
static

◆ domain_num()

◆ editbmesh_build_data()

static void blender::bke::editbmesh_build_data ( Depsgraph & depsgraph,
const Scene & scene,
Object & obedit,
CustomData_MeshMasks & dataMask )
static

◆ editbmesh_calc_modifiers()

static 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 758 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, Mesh::corner_data, Mesh::corners_num, 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, CDMaskLink::mask, mask(), mesh, 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, scene, 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.

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)

Returns a file_handler that have a specific idname, otherwise return nullptr.

Definition at line 27 of file file_handler.cc.

References begin(), and file_handlers().

Referenced by blender::ed::object::collection_exporter_add_exec(), blender::ed::object::collection_exporter_export(), file_handler_add(), blender::bke::tests::TEST(), and blender::bke::tests::TEST().

◆ 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(), blender::bke::FileHandlerType::file_extensions, file_handlers(), blender::bke::FileHandlerType::poll_drop, and result.

Referenced by blender::ed::vse::test_single_file_handler_poll().

◆ file_handlers_vector()

static 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()

static 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()

static 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()

static 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()

static 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()

static 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()

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

◆ find_nearest_verts()

static 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 >
static 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, and blender::index_mask::IndexMask::foreach_index().

Referenced by flip_custom_data_type().

◆ flip_custom_data_type()

template<typename T >
static 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()

static 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()

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

◆ float2_to_color()

static 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()

static 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()

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

Definition at line 91 of file type_conversions.cc.

◆ float2_to_float4()

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

Definition at line 95 of file type_conversions.cc.

◆ float2_to_int()

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

Definition at line 103 of file type_conversions.cc.

◆ float2_to_int2()

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

Definition at line 111 of file type_conversions.cc.

◆ float2_to_int8()

static 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()

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

Definition at line 107 of file type_conversions.cc.

◆ float3_to_bool()

static 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()

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

◆ float3_to_color()

static 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()

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

Definition at line 140 of file type_conversions.cc.

◆ float3_to_float2()

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

Definition at line 156 of file type_conversions.cc.

◆ float3_to_float4()

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

Definition at line 160 of file type_conversions.cc.

◆ float3_to_int()

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

Definition at line 144 of file type_conversions.cc.

◆ float3_to_int2()

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

Definition at line 152 of file type_conversions.cc.

◆ float3_to_int8()

static 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()

static 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()

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

Definition at line 148 of file type_conversions.cc.

◆ float4_to_bool()

static 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()

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

◆ float4_to_color()

static 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()

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

Definition at line 185 of file type_conversions.cc.

◆ float4_to_float2()

static 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()

static 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()

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

Definition at line 189 of file type_conversions.cc.

◆ float4_to_int2()

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

Definition at line 197 of file type_conversions.cc.

◆ float4_to_int8()

static 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()

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

Definition at line 217 of file type_conversions.cc.

◆ float4_to_short2()

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

Definition at line 193 of file type_conversions.cc.

◆ float4x4_to_quaternion()

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

◆ float_to_bool()

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

Definition at line 69 of file type_conversions.cc.

◆ float_to_byte_color()

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

◆ float_to_color()

static 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()

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

Definition at line 45 of file type_conversions.cc.

◆ float_to_float3()

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

Definition at line 49 of file type_conversions.cc.

◆ float_to_float4()

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

Definition at line 53 of file type_conversions.cc.

◆ float_to_int()

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

Definition at line 57 of file type_conversions.cc.

◆ float_to_int2()

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

Definition at line 65 of file type_conversions.cc.

◆ float_to_int8()

static 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()

static 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()

static 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()

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

◆ free_bvh_caches()

◆ free_localized_node_groups()

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

◆ free_mesh_eval()

static 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 962 of file attribute_access.cc.

References blender::bke::MutableAttributeAccessor::add(), blender::bke::AttributeFilter::allow_skip(), CD_PROP_STRING, 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(), gather_attributes(), blender::bke::AttributeIter::get(), if(), init(), blender::bke::MutableAttributeAccessor::lookup_or_add_for_write_only_span(), blender::bke::AttributeIter::name, blender::index_mask::IndexMask::size(), and blender::bke::GSpanAttributeWriter::span.

Referenced by 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(), curves_copy_curve_selection(), 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(), gather_attributes(), gather_attributes(), gather_attributes(), blender::geometry::mesh_faces_to_curves_convert(), mesh_remesh_reproject_attributes(), blender::bke::Instances::remove(), 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 1821 of file deform.cc.

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

◆ gather_deform_verts() [2/2]

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

Definition at line 1808 of file deform.cc.

References gather_deform_verts(), indices, and range.

Referenced by gather_deform_verts(), and gather_deform_verts().

◆ gather_mutable_geometry_sets()

◆ generate_unique_instance_ids()

◆ geo_nodes_base_cpp_type_to_socket_type()

std::optional< eNodeSocketDatatype > blender::bke::geo_nodes_base_cpp_type_to_socket_type ( const CPPType & type)

◆ get_attribute_accessor_for_write()

◆ get_attribute_domain_for_mesh()

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

◆ get_current_time_in_seconds()

static double blender::bke::get_current_time_in_seconds ( )
static

◆ get_curve_single_vert()

◆ get_curves_info()

static 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 blender::bke::CurvesGeometry::cyclic(), and main.

Referenced by curve_to_mesh_sweep().

◆ get_direct_zone_relations()

◆ get_implicit_type_conversions()

◆ get_instances_accessor_functions()

◆ get_internal_link_type_priority()

static 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 96 of file node_tree_update.cc.

References from, 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()

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

◆ get_mesh_accessor_functions()

◆ get_mutable_attribute()

◆ get_next_auto_legacy_type()

static int16_t blender::bke::get_next_auto_legacy_type ( )
static

◆ get_node_tree_type_map()

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

◆ get_node_type_alias_map()

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

Definition at line 2623 of file node.cc.

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

◆ get_node_type_map()

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

◆ get_orco_coords()

◆ get_pointcloud_accessor_functions()

◆ get_random_id_attribute_name()

static 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()

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

◆ get_span_attribute()

template<typename T >
static Span< T > blender::bke::get_span_attribute ( const CurvesGeometry & curves,
const AttrDomain domain,
const StringRef name )
static

◆ get_tag_modified_function()

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

◆ get_transform_position()

static 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 363 of file node_tree_zones.cc.

References discover_tree_zones(), and tree.

◆ get_varray_attribute()

template<typename T >
static VArray< T > blender::bke::get_varray_attribute ( const CurvesGeometry & curves,
const AttrDomain domain,
const StringRef name,
const T default_value )
static

◆ get_zone_types_vector()

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

Definition at line 504 of file node_tree_zones.cc.

Referenced by all_zone_types(), and register_node_zone_type().

◆ grease_pencil_convert_customdata_to_storage()

◆ grease_pencil_convert_storage_to_customdata()

◆ grid_type_to_socket_type()

◆ handle_type_from_legacy()

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

◆ has_caps()

static 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()

◆ 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()

static 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()

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

◆ int2_to_color()

static 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()

static 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()

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

Definition at line 309 of file type_conversions.cc.

◆ int2_to_float3()

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

Definition at line 329 of file type_conversions.cc.

◆ int2_to_float4()

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

Definition at line 333 of file type_conversions.cc.

◆ int2_to_int()

static 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()

static 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()

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

Definition at line 317 of file type_conversions.cc.

◆ int8_to_bool()

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

Definition at line 346 of file type_conversions.cc.

◆ int8_to_byte_color()

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

◆ int8_to_color()

static 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()

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

Definition at line 362 of file type_conversions.cc.

◆ int8_to_float2()

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

Definition at line 366 of file type_conversions.cc.

◆ int8_to_float3()

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

Definition at line 370 of file type_conversions.cc.

◆ int8_to_float4()

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

Definition at line 374 of file type_conversions.cc.

◆ int8_to_int()

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

Definition at line 350 of file type_conversions.cc.

◆ int8_to_int2()

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

Definition at line 358 of file type_conversions.cc.

◆ int8_to_short2()

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

Definition at line 354 of file type_conversions.cc.

◆ int_to_bool()

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

Definition at line 222 of file type_conversions.cc.

◆ int_to_byte_color()

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

◆ int_to_color()

static 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()

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

Definition at line 239 of file type_conversions.cc.

◆ int_to_float2()

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

Definition at line 243 of file type_conversions.cc.

◆ int_to_float3()

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

Definition at line 247 of file type_conversions.cc.

◆ int_to_float4()

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

Definition at line 251 of file type_conversions.cc.

◆ int_to_int2()

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

Definition at line 235 of file type_conversions.cc.

◆ int_to_int8()

static 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()

static 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()

static 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 1568 of file node.cc.

References is_node_socket_supported(), 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 is_node_socket_supported(), and remove_unsupported_sockets().

◆ is_tree_changed()

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

◆ iter_backwards_ex()

static void blender::bke::iter_backwards_ex ( const bNodeTree * ntree,
const bNode * node_start,
bool(* callback )(bNode *, bNode *, void *),
void * userdata,
const char recursion_mask )
static

◆ 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()

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

◆ mark_bezier_vector_edges_sharp()

static 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::IndexRange::drop_front(), blender::MutableSpan< T >::fill(), blender::bke::curves::bezier::point_is_sharp(), and blender::MutableSpan< T >::slice().

◆ mesh_attribute_accessor_functions()

◆ mesh_build_data()

◆ mesh_build_extra_data()

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

◆ mesh_calc_edges()

◆ mesh_calc_finalize()

static 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 210 of file mesh_data_update.cc.

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

Referenced by mesh_calc_modifiers().

◆ mesh_calc_modifiers()

static 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 290 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, Mesh::corner_data, Mesh::corners_num, 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, Mesh::edge_data, Mesh::edges_num, CustomData_MeshMasks::emask, eModifierMode_Realtime, eModifierMode_Render, eModifierType_Multires, eModifierTypeFlag_RequiresOriginalData, Mesh::face_data, Mesh::faces_num, 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, 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, scene, Object::sculpt, ToolSettings::sculpt, SCULPT_ONLY_DEFORM, set_rest_position(), ID::tag, Scene::toolsettings, ModifierData::type, ModifierTypeInfo::type, Mesh::vert_data, Mesh::verts_num, 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 266 of file attribute_legacy_convert.cc.

References Mesh::attribute_storage, Mesh::corner_data, Mesh::corners_num, Mesh::edge_data, Mesh::edges_num, Mesh::face_data, Mesh::faces_num, mesh, mesh_convert_customdata_to_storage(), Mesh::vert_data, and Mesh::verts_num.

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 242 of file attribute_legacy_convert.cc.

References Mesh::attribute_storage, convert_storage_to_customdata(), and mesh.

Referenced by mesh_blend_read_data().

◆ mesh_corner_tris_nearest_point()

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

◆ mesh_corner_tris_spherecast()

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

◆ 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 1207 of file mesh_data_update.cc.

References depsgraph, mesh_calc_modifiers(), result, and scene.

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 1218 of file mesh_data_update.cc.

References depsgraph, mesh_calc_modifiers(), result, and scene.

Referenced by bvh_get_mesh().

◆ mesh_custom_normals_to_generic()

◆ mesh_custom_normals_to_legacy()

void blender::bke::mesh_custom_normals_to_legacy ( MutableSpan< CustomDataLayer > corner_layers)

◆ 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(), blender::threading::parallel_for(), and range.

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

◆ mesh_edges_nearest_point()

static 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()

static 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,
eCustomDataType 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()

static 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()

static 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_get_eval_deform()

◆ mesh_get_mapped_verts_coords()

◆ mesh_hide_face_flush()

◆ mesh_hide_vert_flush()

◆ mesh_init_origspace()

◆ mesh_new_no_attributes()

Mesh * blender::bke::mesh_new_no_attributes ( int verts_num,
int edges_num,
int faces_num,
int corners_num )

◆ 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)

◆ mesh_sculpt_mask_to_generic()

◆ mesh_sculpt_mask_to_legacy()

void blender::bke::mesh_sculpt_mask_to_legacy ( MutableSpan< CustomDataLayer > vert_layers)

◆ 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 1631 of file mesh_normals.cc.

References mesh, mesh_set_custom_normals(), and normalize_vecs().

Referenced by blender::io::fbx::import_meshes(), blender::bke::mesh::mesh_set_custom_normals(), 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 1642 of file mesh_normals.cc.

References mesh, 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 )

Definition at line 1637 of file mesh_normals.cc.

References mesh, and mesh_set_custom_normals_normalized().

Referenced by mesh_set_custom_normals_normalized().

◆ mesh_set_only_copy()

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

◆ mesh_sharp_edges_set_from_angle()

◆ mesh_smooth_set()

◆ mesh_transform()

void blender::bke::mesh_transform ( Mesh & mesh,
const float4x4 & transform,
bool do_shape_keys )

◆ mesh_translate()

void blender::bke::mesh_translate ( Mesh & mesh,
const float3 & translation,
bool do_shape_keys )

◆ 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 47 of file mesh_normals.cc.

References mesh, and Mesh::runtime.

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 53 of file mesh_normals.cc.

References mesh, and Mesh::runtime.

◆ mesh_verts_spherecast()

static 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()

static 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()

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

◆ meta_data_matches()

static 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()

static 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 225 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().

◆ 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 4087 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(), bc_node_add_link(), BKE_linestyle_default_shader(), blo_do_versions_300(), change_input_socket_to_rotation_type(), change_output_socket_to_rotation_type(), blender::nodes::LinkSearchOpParams::connect_available_socket(), blender::ed::space_node::connect_nested_node_to_node(), blender::eevee::DefaultSurfaceNodeTree::DefaultSurfaceNodeTree(), blender::eevee::DefaultWorldNodeTree::DefaultWorldNodeTree(), displacement_node_insert(), do_versions_material_convert_legacy_blend_mode(), ED_node_composit_default(), ED_node_shader_default(), ED_node_texture_default(), blender::ed::curves::ensure_surface_deformation_node_exists(), fix_geometry_nodes_object_info_scale(), flatten_group_do(), Freestyle::BlenderStrokeRenderer::GetStrokeShader(), 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_viewer_cc::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_expand_socket_default(), ntree_shader_groups_expand_inputs(), ntree_shader_implicit_closure_cast(), ntree_shader_weight_tree_invert(), ntree_weight_tree_merge_weight(), 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::node_geo_closure_cc::output_node::try_initialize_closure_from_evaluator(), 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()

◆ node_add_socket()

◆ node_add_sockets_from_type()

static 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 3804 of file node.cc.

References CLOG_ERROR, bNode::idname, 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(), bc_add_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(), blender::eevee::DefaultSurfaceNodeTree::DefaultSurfaceNodeTree(), blender::eevee::DefaultWorldNodeTree::DefaultWorldNodeTree(), 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_map_value_node(), do_version_mix_color_use_alpha(), do_version_scale_node_remove_translate(), do_versions_material_convert_legacy_blend_mode(), blender::io::usd::dome_light_to_world_material(), ED_node_composit_default(), ED_node_shader_default(), ED_node_texture_default(), blender::ed::curves::ensure_surface_deformation_node_exists(), Freestyle::BlenderStrokeRenderer::GetStrokeShader(), 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_expand_socket_default(), ntree_shader_groups_expand_inputs(), 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 3529 of file node.cc.

References CLOG_ERROR, LOG, name, node, 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_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 3672 of file node.cc.

References callback, 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,
const 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 3732 of file node.cc.

References BLI_assert, callback, iter_backwards_ex(), LISTBASE_FOREACH, node, 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 4989 of file node.cc.

References node.

◆ node_copy()

bNode * blender::bke::node_copy ( bNodeTree * dst_tree,
const bNode & src_node,
int flag,
bool use_unique )

◆ node_copy_with_mapping()

◆ node_count_links()

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

Definition at line 4076 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 5090 of file node.cc.

References node, 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 5070 of file node.cc.

References node, 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 5099 of file node.cc.

References node.

◆ 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 3638 of file node.cc.

References input.

◆ 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 3613 of file node.cc.

Referenced by 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 3619 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 3625 of file node.cc.

References bNodeSocket::in_out, LISTBASE_FOREACH, node, and SOCK_IN.

◆ node_find_root_parent()

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

Definition at line 3650 of file node.cc.

References node, and bNode::parent.

◆ node_find_socket() [1/2]

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

Definition at line 2864 of file node.cc.

References LISTBASE_FOREACH, node, 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(), bc_get_cot_from_shader(), bc_get_float_from_shader(), 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::io::usd::configure_displacement(), 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(), blender::eevee::DefaultSurfaceNodeTree::DefaultSurfaceNodeTree(), blender::eevee::DefaultWorldNodeTree::DefaultWorldNodeTree(), 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_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_bright_contrast_remove_premultiplied(), do_version_bump_filter_width(), 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_composite_viewer_remove_alpha(), do_version_convert_to_generic_nodes(), 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_map_value_node(), do_version_mask_node_options_to_inputs(), do_version_mix_color_use_alpha(), do_version_new_glare_clamp_input(), do_version_pixelate_node_options_to_inputs(), do_version_plane_track_deform_node_options_to_inputs(), do_version_replace_image_info_node_coordinates(), do_version_scale_node_remove_translate(), do_version_split_node_options_to_inputs(), 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_translate_node_remove_relative(), do_version_vector_blur_node_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(), blender::ed::curves::ensure_surface_deformation_node_exists(), fix_geometry_nodes_object_info_scale(), MaterialNode::get_diffuse_image(), 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_colorbalance_cc::node_update(), blender::nodes::node_composite_dilate_cc::node_update(), blender::nodes::node_composite_glare_cc::node_update(), blender::nodes::node_composite_kuwahara_cc::node_update(), blender::nodes::node_composite_lensdist_cc::node_update(), blender::nodes::node_composite_mask_cc::node_update(), blender::nodes::node_composite_relative_to_pixel_cc::node_update(), blender::nodes::node_composite_tonemap_cc::node_update(), blender::ed::space_node::prepare_viewlayer_update(), blender::io::usd::process_inputs(), proj_paint_add_slot(), blender::io::usd::USDPointInstancerReader::read_object_data(), MaterialNode::set_alpha(), blender::io::usd::USDPointInstancerReader::set_collection(), MaterialNode::set_diffuse(), blender::io::usd::USDMaterialReader::set_displacement_node_inputs(), MaterialNode::set_emission(), MaterialNode::set_ior(), blender::io::usd::USDMaterialReader::set_node_input(), MaterialNode::set_opacity(), blender::io::usd::USDMaterialReader::set_principled_node_inputs(), blender::io::obj::set_property_of_socket(), MaterialNode::set_reflectivity(), blender::io::fbx::set_socket_float(), blender::io::fbx::set_socket_rgb(), blender::io::fbx::set_socket_vector(), MaterialNode::set_specular(), 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(), 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_sbeam_refresh(), and blender::bke::forward_compat::write_compositor_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 2877 of file node.cc.

References node, and node_find_socket().

◆ node_foreach_cache()

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

◆ node_foreach_id()

◆ node_foreach_path()

◆ node_free_node()

◆ node_free_socket_type()

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

Definition at line 2812 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()

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

◆ node_get_active()

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

Definition at line 4957 of file node.cc.

References node, 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_output_file_add_socket_exec(), blender::ed::space_node::node_output_file_move_active_socket_exec(), blender::ed::space_node::node_output_file_remove_active_socket_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::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_mask_refresh(), blender::ed::space_node::WIDGETGROUP_node_sbeam_poll(), blender::ed::space_node::WIDGETGROUP_node_sbeam_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 309 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 304 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()

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

Definition at line 5125 of file node.cc.

References hash, str, and bNodeInstanceKey::value.

Referenced by node_instance_key().

◆ node_ids_to_vector()

◆ 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 5110 of file node.cc.

References node.

◆ 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 3662 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)

Definition at line 4164 of file node.cc.

References bNode::flag, bNodeLink::fromnode, NODE_SELECT, and bNodeLink::tonode.

◆ 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 4141 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()

◆ node_node_foreach_id()

◆ node_owner_pointer_get()

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

◆ 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 3754 of file node.cc.

References callback, node, and node_parents_iterator().

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

◆ node_poll_default()

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

Definition at line 5283 of file node.cc.

Referenced by node_type_base().

◆ node_poll_instance_default()

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

Definition at line 5290 of file node.cc.

References node.

Referenced by node_type_base().

◆ node_position_propagate()

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

◆ 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()

static 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 4517 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 4403 of file node.cc.

References node, and NODE_PREVIEW.

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 4568 of file node.cc.

References LISTBASE_FOREACH_INDEX, node, bNodeTree::nodes, 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(), and version_geometry_nodes_primitive_uv_maps().

◆ 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 2826 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 2748 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_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_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_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_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_info_cc::node_register(), blender::nodes::node_geo_grid_to_mesh_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_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_geometry_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_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_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_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(), 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_combhsva(), register_node_type_cmp_combine_color(), register_node_type_cmp_combine_xyz(), register_node_type_cmp_combrgba(), register_node_type_cmp_combycca(), register_node_type_cmp_combyuva(), register_node_type_cmp_composite(), register_node_type_cmp_convert_color_space(), 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_curve_vec(), 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_gamma(), 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_map_range(), register_node_type_cmp_map_value(), register_node_type_cmp_mapuv(), register_node_type_cmp_mask(), register_node_type_cmp_math(), register_node_type_cmp_mix_rgb(), register_node_type_cmp_movieclip(), register_node_type_cmp_moviedistortion(), register_node_type_cmp_normal(), register_node_type_cmp_normalize(), register_node_type_cmp_output_file(), 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_separate_xyz(), register_node_type_cmp_sephsva(), register_node_type_cmp_seprgba(), register_node_type_cmp_sepycca(), register_node_type_cmp_sepyuva(), register_node_type_cmp_setalpha(), register_node_type_cmp_split(), register_node_type_cmp_stabilize2d(), register_node_type_cmp_sunbeams(), register_node_type_cmp_switch(), register_node_type_cmp_switch_view(), register_node_type_cmp_texture(), register_node_type_cmp_tonemap(), register_node_type_cmp_trackpos(), register_node_type_cmp_transform(), register_node_type_cmp_translate(), register_node_type_cmp_valtorgb(), register_node_type_cmp_value(), 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_combhsv(), register_node_type_sh_combrgb(), 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_rgb(), register_node_type_sh_rgbtobw(), register_node_type_sh_script(), register_node_type_sh_sepcolor(), register_node_type_sh_sephsv(), register_node_type_sh_seprgb(), 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_pointdensity(), 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_compose(), register_node_type_tex_coord(), register_node_type_tex_curve_rgb(), register_node_type_tex_curve_time(), register_node_type_tex_decompose(), 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 4124 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_bright_contrast_remove_premultiplied(), do_version_color_to_float_conversion(), do_version_composite_viewer_remove_alpha(), do_version_map_value_node(), do_version_mix_color_use_alpha(), do_version_replace_image_info_node_coordinates(), do_version_scale_node_remove_translate(), 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_groups_remove_muted_links(), ntree_shader_implicit_closure_cast(), ntree_shader_unlink_hidden_value_sockets(), 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(), 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()

static 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 4996 of file node.cc.

References node, 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(), BKE_linestyle_default_shader(), blender::io::obj::create_mtl_node_tree(), blender::eevee::DefaultSurfaceNodeTree::DefaultSurfaceNodeTree(), blender::eevee::DefaultWorldNodeTree::DefaultWorldNodeTree(), blender::io::usd::dome_light_to_world_material(), ED_node_composit_default(), ED_node_set_active(), ED_node_shader_default(), ED_node_texture_default(), Freestyle::BlenderStrokeRenderer::GetStrokeShader(), blender::io::fbx::import_material(), blender::io::usd::USDMaterialReader::import_usd_preview_nodes(), 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_exec(), blender::ed::space_node::node_socket_add_replace(), and proj_paint_add_slot().

◆ node_set_selected()

◆ node_set_socket_availability()

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

Definition at line 5011 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(), blender::nodes::node_composite_scale_cc::node_composite_update_scale(), 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_colorbalance_cc::node_update(), blender::nodes::node_composite_dilate_cc::node_update(), blender::nodes::node_composite_glare_cc::node_update(), blender::nodes::node_composite_kuwahara_cc::node_update(), blender::nodes::node_composite_lensdist_cc::node_update(), blender::nodes::node_composite_mask_cc::node_update(), blender::nodes::node_composite_relative_to_pixel_cc::node_update(), blender::nodes::node_composite_tonemap_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()

static void blender::bke::node_set_typeinfo ( const bContext * C,
bNodeTree * ntree,
bNode * node,
bNodeType * typeinfo )
static

◆ 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 5058 of file node.cc.

References BLI_assert, node, reset_socket_declarations(), 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 2841 of file node.cc.

References NodeSocketTypeUndefined, and bNodeSocket::typeinfo.

◆ node_socket_label()

StringRefNull blender::bke::node_socket_label ( const bNodeSocket & sock)

◆ 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 4010 of file node.cc.

References BLI_strdup_null(), bNodeSocket::default_value, blender::CPPType::destruct(), ELEM, get_implicit_type_conversions(), MEM_SAFE_FREE, 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_available_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 5257 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 2855 of file node.cc.

References name, RNA_enum_name(), and rna_enum_property_subtype_items.

Referenced by make_standard_socket_type().

◆ 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 2789 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()

static 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 3936 of file node.cc.

References FN_NODE_INPUT_BOOL, FN_NODE_INPUT_COLOR, FN_NODE_INPUT_INT, FN_NODE_INPUT_VECTOR, GEO_NODE_IMAGE, node, and SH_NODE_VALUE.

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 230 of file node_shader_util.cc.

References BLI_assert, ELEM, node, NODE_ACTIVE_PAINT_CANVAS, NODE_ACTIVE_TEXTURE, NODE_CLASS_TEXTURE, SH_NODE_ATTRIBUTE, and SH_NODE_TEX_IMAGE.

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 5105 of file node.cc.

References node, and NODE_UPDATE_ID.

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 4367 of file node.cc.

References name, and node_tree_add_tree_do().

Referenced by add_auto_smooth_node_tree().

◆ node_tree_add_tree()

◆ node_tree_add_tree_do()

◆ node_tree_add_tree_embedded()

◆ node_tree_asset_on_clear_asset()

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

◆ node_tree_asset_on_mark_asset()

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

◆ node_tree_asset_pre_save()

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

Definition at line 2321 of file node.cc.

References node_tree_asset_pre_save(), and node_update_asset_metadata().

Referenced by node_tree_asset_pre_save().

◆ 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 4935 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()

◆ node_tree_free_local_tree()

void blender::bke::node_tree_free_local_tree ( bNodeTree * ntree)

◆ node_tree_free_tree()

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

◆ 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 4901 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 4846 of file node.cc.

References bNodeTree::flag, flag, and node.

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 4816 of file node.cc.

References GS, ID_LA, ID_LS, ID_MA, ID_SCE, ID_TE, ID_WO, and ID::name.

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 )

Definition at line 5714 of file node.cc.

References BLI_assert, CMP_NODE_R_LAYERS, Scene::id, node, and scene.

Referenced by view_layer_remove_unset_nodetrees().

◆ 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 4742 of file node.cc.

References LISTBASE_FOREACH, node, NODE_CLASS_OUTPUT, NODE_DO_OUTPUT, NODE_VIEWER_SHORTCUT_NONE, bNodeTree::nodes, NTREE_COMPOSIT, NTREE_GEOMETRY, output, and bNodeTree::type.

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

◆ node_tree_set_type()

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

Try to initialize all type-info in a node tree.

Note
In general undefined type-info is a perfectly valid case, the type may just be registered later. In that case the update_typeinfo function will set type-info on registration and do necessary updates.

Definition at line 2586 of file node.cc.

References bNodeTree::idname, LISTBASE_FOREACH, node, node_set_typeinfo(), node_socket_set_typeinfo(), node_socket_type_find(), node_tree_type_find(), node_type_find(), and ntree_set_typeinfo().

Referenced by blo_do_versions_270(), do_versions_after_linking_270(), ntree_blend_read_after_liblink(), and version_geometry_nodes_replace_transfer_attribute_node().

◆ 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 2695 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 2706 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()

static 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 2720 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 5573 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_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_cryptomatte(), register_node_type_cmp_curve_rgb(), register_node_type_cmp_curve_time(), register_node_type_cmp_curve_vec(), register_node_type_cmp_group(), register_node_type_cmp_huecorrect(), register_node_type_cmp_valtorgb(), 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_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 5585 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_input_mesh_face_neighbors_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(), register_node_type_cmp_rgb(), register_node_type_cmp_rgbtobw(), register_node_type_cmp_rlayers(), register_node_type_cmp_switch(), register_node_type_cmp_value(), 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 5603 of file node.cc.

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

Referenced by 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_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(), 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_curve_vec(), register_node_type_cmp_defocus(), register_node_type_cmp_denoise(), register_node_type_cmp_dilateerode(), 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_map_value(), register_node_type_cmp_movieclip(), register_node_type_cmp_moviedistortion(), register_node_type_cmp_output_file(), register_node_type_cmp_planetrackdeform(), register_node_type_cmp_rlayers(), 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_translate(), register_node_type_cmp_valtorgb(), 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_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_pointdensity(), 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()

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

Definition at line 4559 of file node.cc.

References node, and node_detach_node().

Referenced by node_remove_node(), and node_tree_free_local_node().

◆ node_unlink_node()

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

◆ node_unregister_socket_type()

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

Definition at line 2835 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 2773 of file node.cc.

References get_node_type_map(), and node_free_type().

◆ node_update_asset_metadata()

◆ normal_mode_from_legacy()

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

◆ normalize_span()

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

◆ normalize_vecs()

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

◆ ntree_blend_read_after_liblink()

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

◆ ntree_blend_read_data()

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

Definition at line 2260 of file node.cc.

References node_tree_blend_read_data(), and ntree_blend_read_data().

Referenced by ntree_blend_read_data().

◆ ntree_blend_write()

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

◆ ntree_contains_tree_exec()

static 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()

static void blender::bke::ntree_copy_data ( Main * ,
std::optional< Library * > ,
ID * id_dst,
const ID * id_src,
const int flag )
static

◆ ntree_free_data()

◆ ntree_free_type()

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

Definition at line 2681 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()

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

◆ ntree_set_typeinfo()

static 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()

static 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 613 of file node_tree_zones.cc.

◆ operator<<() [2/4]

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

Definition at line 602 of file node_tree_zones.cc.

◆ operator<<() [3/4]

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

Definition at line 227 of file geometry_set.cc.

◆ operator<<() [4/4]

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

Definition at line 381 of file node_socket_value.cc.

◆ operator==()

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

Definition at line 134 of file instances.cc.

◆ orco_coord_layer_ensure()

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

◆ pointcloud_attribute_accessor_functions()

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

◆ pointcloud_convert_customdata_to_storage()

◆ pointcloud_convert_storage_to_customdata()

◆ pointcloud_new_no_attributes()

PointCloud * blender::bke::pointcloud_new_no_attributes ( int totpoint)

◆ quaternion_to_float3()

static 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()

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

Definition at line 519 of file type_conversions.cc.

◆ quaternion_to_float4x4()

static 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()

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

◆ read_attr_data()

static 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()

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

Definition at line 328 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()

static 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()

◆ read_strip_keyframe_data()

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

◆ read_strip_keyframe_data_array()

static 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()

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

◆ reset_bits_and_count()

static 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 blender::bits::MutableBitSpan::size().

Referenced by bit_vector_with_reset_bits_or_empty().

◆ reset_socket_declarations()

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

Definition at line 5051 of file node.cc.

References LISTBASE_FOREACH.

Referenced by node_socket_declarations_update().

◆ retrieve_attributes_for_transfer()

◆ reverse_curve_point_data()

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

◆ reverse_custom_knots()

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

◆ reverse_swap_curve_point_data()

template<typename T >
static 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()

static 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()

static 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()

static 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()

static 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()

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

◆ short2_to_color()

static 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()

static 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()

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

Definition at line 268 of file type_conversions.cc.

◆ short2_to_float3()

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

Definition at line 288 of file type_conversions.cc.

◆ short2_to_float4()

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

Definition at line 292 of file type_conversions.cc.

◆ short2_to_int()

static 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()

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

Definition at line 276 of file type_conversions.cc.

◆ short2_to_int8()

static 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()

static 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()

static 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 >
static bool blender::bke::static_type_is_base_socket_type ( const eNodeSocketDatatype socket_type)
static

◆ static_type_to_socket_type()

template<typename T >
static 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 38 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_FLOAT, SOCK_INT, SOCK_MATRIX, SOCK_RGBA, SOCK_ROTATION, SOCK_STRING, and SOCK_VECTOR.

◆ tag_component_positions_changed() [1/2]

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

◆ tag_component_positions_changed() [2/2]

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

Definition at line 13 of file pointcloud_attributes.cc.

◆ tag_component_radius_changed()

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

Definition at line 19 of file pointcloud_attributes.cc.

Referenced by create_attribute_providers_for_pointcloud().

◆ tag_component_reference_index_changed()

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

◆ tag_component_sharpness_changed()

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

◆ tag_material_index_changed()

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

◆ transform_custom_normal_attribute()

◆ transform_positions() [1/2]

static void blender::bke::transform_positions ( MutableSpan< float3 > positions,
const float4x4 & matrix )
static

◆ transform_positions() [2/2]

static void blender::bke::transform_positions ( MutableSpan< float3 > positions,
const float4x4 & matrix )
static

◆ translate_positions() [1/2]

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

◆ translate_positions() [2/2]

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

◆ try_adapt_data_type()

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

◆ try_add_shared_field_attribute()

static 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]

◆ 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 808 of file geometry_fields.cc.

References blender::bke::MutableAttributeAccessor::add(), 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_custom_data_type(), blender::fn::FieldNode::depends_on_input(), blender::CPPType::destruct_n(), blender::bke::AttributeAccessor::domain_size(), blender::fn::evaluate_constant_field(), blender::bke::GSpanAttributeWriter::finish(), blender::bke::AttributeAccessor::get_builtin_domain_and_type(), blender::Span< T >::index_range(), blender::bke::AttributeAccessor::lookup(), blender::bke::MutableAttributeAccessor::lookup_for_write_span(), blender::bke::AttributeAccessor::lookup_or_default(), blender::bke::AttributeAccessor::lookup_validator(), mask(), blender::GVArrayCommon::materialize(), MEM_freeN(), MEM_mallocN_aligned(), blender::fn::GFieldBase< NodePtr >::node(), blender::bke::MutableAttributeAccessor::remove(), result, blender::CPPType::size, blender::Span< T >::size(), blender::bke::GSpanAttributeWriter::span, try_add_shared_field_attribute(), blender::bke::AttributeValidator::validate_field_if_necessary(), and blender::bke::GAttributeReader::varray.

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()

static 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()

static 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, blender::bke::LooseGeomCache::is_loose_bits, mesh, and Mesh::runtime.

◆ unique_socket_template_identifier()

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

◆ update_socket_declarations()

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

Definition at line 5041 of file node.cc.

References LISTBASE_FOREACH_INDEX.

Referenced by node_socket_declarations_update().

◆ update_typeinfo()

◆ update_zone_border_links()

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

◆ update_zone_depths()

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

◆ update_zone_per_node()

◆ varray_for_deform_verts()

◆ varray_for_mutable_deform_verts()

◆ 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()

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

◆ write_node_socket()

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

◆ write_node_socket_default_value()

◆ write_shared_array()

static 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()

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

◆ write_strip_keyframe_data()

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

◆ write_strip_keyframe_data_array()

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

◆ write_strips()

static 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 758 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

Definition at line 42 of file curves_geometry.cc.

◆ ATTR_RADIUS

◆ 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

template<typename T >
bool blender::bke::is_geometry_component_v = std::is_base_of_v<GeometryComponent, T>
inlineconstexpr

◆ 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,
fn::Field<U>
>
#define U
#define T
constexpr bool is_same_any_v

Definition at line 26 of file node_socket_value.cc.

Referenced by static_type_to_socket_type().

◆ 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 194 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

const bNodeInstanceKey blender::bke::NODE_INSTANCE_KEY_NONE = {0}

◆ NodeSocketTypeUndefined

◆ NodeTreeTypeUndefined

bNodeTreeType blender::bke::NodeTreeTypeUndefined

Definition at line 121 of file node.cc.

Referenced by node_tree_is_registered(), ntree_set_typeinfo(), and register_undefined_types().

◆ NodeTypeUndefined