Blender V4.3
blender::bke Namespace Reference

Namespaces

namespace  anonymous_attribute_inferencing
 
namespace  attribute_accessor_functions
 
namespace  attribute_math
 
namespace  bake
 
namespace  blendfile
 
namespace  calc_edges
 
namespace  ccg
 
namespace  compare_meshes
 
namespace  compositor
 
namespace  crazyspace
 
namespace  cryptomatte
 
namespace  curves
 
namespace  forward_compat
 
namespace  greasepencil
 
namespace  id
 
namespace  idprop
 
namespace  image
 
namespace  mesh
 
namespace  mesh_surface_sample
 
namespace  nla
 
namespace  node_field_inferencing
 
namespace  node_interface
 
namespace  node_tree_runtime
 
namespace  object
 
namespace  outliner
 
namespace  paint
 
namespace  pbvh
 
namespace  shrinkwrap
 
namespace  subdiv
 
namespace  tests
 
namespace  volume_grid
 

Classes

class  AnonymousAttributeSet
 
class  AttributeAccessor
 
struct  AttributeAccessorFunctions
 
class  AttributeExistsFieldInput
 
class  AttributeFieldInput
 
struct  AttributeFilter
 
struct  AttributeFilterFromFunc
 
struct  AttributeInit
 
struct  AttributeInitConstruct
 
struct  AttributeInitDefaultValue
 
struct  AttributeInitMoveArray
 
struct  AttributeInitShared
 
struct  AttributeInitVArray
 
class  AttributeIter
 
struct  AttributeKind
 
struct  AttributeMetaData
 
struct  AttributeReader
 
struct  AttributeTransferData
 
struct  AttributeValidator
 
struct  AttributeWriter
 
struct  bNodeInstanceHash
 
class  bNodePanelRuntime
 
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  CombinationInfo
 
class  ComponentAttributeProviders
 
class  CompositorRuntime
 
struct  ConversionFunctions
 
class  CurveComponent
 
class  CurveLengthFieldInput
 
class  CurvesEditHints
 
class  CurvesFieldContext
 
class  CurvesFieldInput
 
class  CurvesGeometry
 
class  CurvesGeometryRuntime
 
struct  CurvesInfo
 
struct  CurvesSurfaceTransforms
 
class  CurvesVertexGroupsAttributeProvider
 
struct  CustomDataAccessInfo
 
class  CustomDataAttributeProvider
 
class  DataTypeConversions
 
class  DynamicAttributesProvider
 
struct  EditMeshData
 
struct  EvalData
 
class  EvaluateAtIndexInput
 
class  EvaluateOnDomainInput
 
struct  FileHandlerType
 
struct  FinishCallChecker
 
class  ForeachGeometryElementZoneComputeContext
 
struct  GAttributeReader
 
struct  GAttributeWriter
 
class  GeometryComponent
 
class  GeometryComponentEditData
 
class  GeometryFieldContext
 
class  GeometryFieldInput
 
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
 
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  MeshVertexGroupsAttributeProvider
 
class  ModifierComputeContext
 
class  MutableAttributeAccessor
 
class  NamedLayerSelectionFieldInput
 
struct  NodeGizmoID
 
struct  NodeLinkError
 
struct  NodeTreeIterStore
 
class  NodeTreeMainUpdater
 
struct  NodeTreeRelations
 
class  NormalFieldInput
 
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
 
struct  SocketTemplateIdentifierCallbackData
 
class  SocketValueVariant
 
struct  SpanAttributeWriter
 
struct  TreeUpdateResult
 
struct  TrianglesCache
 
class  VArrayImpl_For_VertexWeights
 
class  VolumeComponent
 
struct  VolumeRuntime
 
struct  VolumeToMeshResolution
 
class  WindowManagerRuntime
 
struct  WorkSpaceRuntime
 
struct  WorkSpaceStatusItem
 
struct  ZoneRelation
 

Typedefs

using FoundFCurveCallback = blender::FunctionRef<void(FCurve *fcurve, const char *bone_name)>
 
using SelectedBoneCallback = blender::FunctionRef<void(Bone *bone)>
 
using BoneNameSet = blender::Set<std::string>
 
using AttributeForeachCallback
 
using GeometryComponentPtr = ImplicitSharingPtr<GeometryComponent>
 
using bNodeInstanceHashIterator = GHashIterator
 
using NodeIDVectorSet = VectorSet<bNode *, DefaultProbingStrategy, NodeIDHash, NodeIDEquality>
 
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  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 { RequiresSingle , CanBeField , IsField }
 

Functions

void BKE_action_find_fcurves_with_bones (const bAction *action, FoundFCurveCallback 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)
 
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)
 
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)
 
Curvescurve_legacy_to_curves (const Curve &curve_legacy)
 
Curvescurve_legacy_to_curves (const Curve &curve_legacy, const ListBase &nurbs_list)
 
Meshcurve_to_mesh_sweep (const CurvesGeometry &main, const CurvesGeometry &profile, bool fill_caps, const bke::AttributeFilter &attribute_filter={})
 
Meshcurve_to_wire_mesh (const CurvesGeometry &curve, const bke::AttributeFilter &attribute_filter={})
 
void curves_normals_point_domain_calc (const CurvesGeometry &curves, MutableSpan< float3 > normals)
 
Curvescurves_new_nomain (int points_num, int curves_num)
 
Curvescurves_new_nomain (CurvesGeometry curves)
 
Curvescurves_new_nomain_single (int points_num, CurveType type)
 
void curves_copy_parameters (const Curves &src, Curves &dst)
 
VArray< floatvarray_for_deform_verts (Span< MDeformVert > dverts, int defgroup_index)
 
VMutableArray< floatvarray_for_mutable_deform_verts (MutableSpan< MDeformVert > dverts, int defgroup_index)
 
void remove_defgroup_index (MutableSpan< MDeformVert > dverts, int defgroup_index)
 
void gather_deform_verts (Span< MDeformVert > src, Span< int > indices, MutableSpan< MDeformVert > dst)
 
void gather_deform_verts (Span< MDeformVert > src, const IndexMask &indices, MutableSpan< MDeformVert > dst)
 
void file_handler_add (std::unique_ptr< FileHandlerType > file_handler)
 
FileHandlerTypefile_handler_find (StringRef idname)
 
void file_handler_remove (FileHandlerType *file_handler)
 
Span< std::unique_ptr< FileHandlerType > > file_handlers ()
 
blender::Vector< FileHandlerType * > file_handlers_poll_file_drop (const bContext *C, const blender::Span< std::string > paths)
 
void copy_with_checked_indices (const GVArray &src, const VArray< int > &indices, const IndexMask &mask, GMutableSpan dst)
 
bool try_capture_fields_on_geometry (MutableAttributeAccessor attributes, const fn::FieldContext &field_context, Span< StringRef > attribute_ids, AttrDomain domain, const fn::Field< bool > &selection, Span< fn::GField > fields)
 
bool try_capture_field_on_geometry (MutableAttributeAccessor attributes, const fn::FieldContext &field_context, const StringRef attribute_id, AttrDomain domain, const fn::Field< bool > &selection, const fn::GField &field)
 
bool try_capture_fields_on_geometry (GeometryComponent &component, Span< StringRef > attribute_ids, AttrDomain domain, Span< fn::GField > fields)
 
bool try_capture_field_on_geometry (GeometryComponent &component, const StringRef attribute_id, AttrDomain domain, const fn::GField &field)
 
bool try_capture_fields_on_geometry (GeometryComponent &component, Span< StringRef > attribute_ids, AttrDomain domain, const fn::Field< bool > &selection, Span< fn::GField > fields)
 
bool try_capture_field_on_geometry (GeometryComponent &component, const StringRef attribute_id, AttrDomain domain, const fn::Field< bool > &selection, const fn::GField &field)
 
std::optional< AttrDomaintry_detect_field_domain (const GeometryComponent &component, const fn::GField &field)
 
GeometrySet object_get_evaluated_geometry_set (const Object &object)
 
VArray< float3instance_position_varray (const Instances &instances)
 
VMutableArray< float3instance_position_varray_for_write (Instances &instances)
 
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_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_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_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)
 
void mesh_eval_to_meshkey (const Mesh *me_deformed, Mesh *mesh, KeyBlock *kb)
 
void node_system_init ()
 
void node_system_exit ()
 
bNodeTreenode_tree_add_tree_embedded (Main *bmain, ID *owner_id, const char *name, const char *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 (const 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_type_is_undefined (const bNode *node)
 
bool node_is_static_socket_type (const bNodeSocketType *stype)
 
const char * 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, const char *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)
 
float2 node_to_view (const bNode *node, float2 loc)
 
float2 node_from_view (const bNode *node, float2 view_loc)
 
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_active)
 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)
 
BLI_INLINE bNodeInstanceHashIteratornode_instance_hash_iterator_new (bNodeInstanceHash *hash)
 
BLI_INLINE void node_instance_hash_iterator_init (bNodeInstanceHashIterator *iter, bNodeInstanceHash *hash)
 
BLI_INLINE void node_instance_hash_iterator_free (bNodeInstanceHashIterator *iter)
 
BLI_INLINE bNodeInstanceKey node_instance_hash_iterator_get_key (bNodeInstanceHashIterator *iter)
 
BLI_INLINE void * node_instance_hash_iterator_get_value (bNodeInstanceHashIterator *iter)
 
BLI_INLINE void node_instance_hash_iterator_step (bNodeInstanceHashIterator *iter)
 
BLI_INLINE bool node_instance_hash_iterator_done (bNodeInstanceHashIterator *iter)
 
bool node_preview_used (const bNode *node)
 
bNodePreviewnode_preview_verify (bNodeInstanceHash *previews, bNodeInstanceKey key, int xsize, int ysize, bool create)
 
bNodePreviewnode_preview_copy (bNodePreview *preview)
 
void node_preview_free (bNodePreview *preview)
 
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)
 
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 DataTypeConversionsget_implicit_type_conversions ()
 
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 action_blend_write (BlendWriter *writer, ID *id, const void *id_address)
 
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 void asset_main_create_expander (void *, Main *, void *vid)
 
static Mainasset_main_create_from_ID (Main &bmain_src, ID &id_asset, ID **id_asset_new)
 
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 bool custom_data_layer_matches_attribute_id (const CustomDataLayer &layer, const StringRef attribute_id)
 
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 KnotsMode knots_mode_from_legacy (const short flag)
 
static int segments_num_no_duplicate_edge (const int points_num, const bool cyclic)
 
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 > radii, 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, 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 AttributeAccessorFunctions get_curves_accessor_functions ()
 
static const AttributeAccessorFunctionsget_curves_accessor_functions_ref ()
 
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)
 
static void convert_collection_to_instances (const Collection &collection, bke::Instances &instances)
 
bool operator== (const InstanceReference &a, const InstanceReference &b)
 
static Array< intgenerate_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 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 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_bvh_cache (MeshRuntime &mesh_runtime)
 
static void free_batch_cache (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)
 
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 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 (BlendDataReader *reader, bNodeSocket *sock)
 
static void remove_unsupported_sockets (ListBase *sockets, ListBase *links)
 
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, const bContext *C, bNodeTreeType *treetype, bNodeType *nodetype, bNodeSocketType *socktype, const bool unregister)
 
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 bool unique_identifier_check (void *arg, const char *identifier)
 
static bNodeSocketmake_socket (bNodeTree *ntree, bNode *, const int in_out, ListBase *lb, const char *idname, const char *identifier, const char *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 char *name, const char *idname)
 
static void node_preview_init_tree_recursive (bNodeInstanceHash *previews, bNodeTree *ntree, bNodeInstanceKey parent_key, const int xsize, const int ysize)
 
static void node_preview_tag_used_recursive (bNodeInstanceHash *previews, bNodeTree *ntree, bNodeInstanceKey parent_key)
 
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 uint node_instance_hash_key (const void *key)
 
static bool node_instance_hash_key_cmp (const void *a, const void *b)
 
static Set< intget_known_node_types_set ()
 
static bool can_read_node_type (const int type)
 
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 const CPPTypeslow_socket_type_to_geo_nodes_base_cpp_type (const eNodeSocketDatatype type)
 
static bool unique_socket_template_identifier_check (void *arg, const char *name)
 
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< std::unique_ptr< bNodeTreeZone > > all_zones, const BitGroupVector<> &depend_on_input_flag_array)
 
static bool update_zone_per_node (const Span< const bNode * > all_nodes, const Span< std::unique_ptr< 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< const bNode * > &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 ()
 
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)
 
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 int32_t float_to_int (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 float float2_to_float (const float2 &a)
 
static int float2_to_int (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 int2 float3_to_int2 (const float3 &a)
 
static float2 float3_to_float2 (const float3 &a)
 
static ColorGeometry4f float3_to_color (const float3 &a)
 
static ColorGeometry4b float3_to_byte_color (const float3 &a)
 
static bool int_to_bool (const int32_t &a)
 
static int8_t int_to_int8 (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 ColorGeometry4f int_to_color (const int32_t &a)
 
static ColorGeometry4b int_to_byte_color (const int32_t &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 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 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 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 math::Quaternion float3_to_quaternion (const float3 &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 int2 bool_to_int2 (const bool &a)
 
static float2 bool_to_float2 (const bool &a)
 
static float3 bool_to_float3 (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 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 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 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 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 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)
 
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 transform_normals (MutableSpan< float3 > normals, const float4x4 &matrix)
 
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)
 
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)
 
Selection Interpolation
void mesh_select_vert_flush (Mesh &mesh)
 
void mesh_select_edge_flush (Mesh &mesh)
 
void mesh_select_face_flush (Mesh &mesh)
 
Generic API, Trees
bNodeTreeTypenode_tree_type_find (const char *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)
 
GHashIteratornode_tree_type_get_iterator ()
 
void node_tree_set_type (const bContext *C, bNodeTree *ntree)
 
bNodeTreenode_tree_add_tree (Main *bmain, const char *name, const char *idname)
 
bNodeTreenode_tree_add_in_lib (Main *bmain, Library *owner_library, const char *name, const char *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, 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:870
#define FOREACH_NODETREE_BEGIN(bmain, _nodetree, _id)
Definition BKE_node.hh:860
#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)
 
Evaluation
template<typename CountFn >
void build_offsets (MutableSpan< int > offsets, const CountFn &count_fn)
 
static void calculate_evaluated_offsets (const CurvesGeometry &curves, MutableSpan< int > offsets, MutableSpan< int > all_bezier_offsets)
 
static void rotate_directions_around_axes (MutableSpan< float3 > directions, const Span< float3 > axes, const Span< float > angles)
 
static void normalize_span (MutableSpan< float3 > data)
 
static void evaluate_generic_data_for_curve (const EvalData &eval_data, const int curve_index, const GSpan src, GMutableSpan dst)
 
Domain Interpolation
template<typename T >
static void adapt_curve_domain_point_to_curve_impl (const CurvesGeometry &curves, const VArray< T > &old_values, MutableSpan< T > r_values)
 
template<>
void adapt_curve_domain_point_to_curve_impl (const CurvesGeometry &curves, const VArray< bool > &old_values, MutableSpan< bool > r_values)
 
static GVArray adapt_curve_domain_point_to_curve (const CurvesGeometry &curves, const GVArray &varray)
 
template<typename T >
static void adapt_curve_domain_curve_to_point_impl (const CurvesGeometry &curves, const VArray< T > &old_values, MutableSpan< T > r_values)
 
static GVArray adapt_curve_domain_curve_to_point (const CurvesGeometry &curves, const GVArray &varray)
 
Curve Length Field Input
static VArray< floatconstruct_curve_length_gvarray (const CurvesGeometry &curves, const AttrDomain domain)
 
Attribute Access Helper Functions
static void tag_component_topology_changed (void *owner)
 
static void tag_component_curve_types_changed (void *owner)
 
static void tag_component_positions_changed (void *owner)
 
static void tag_component_radii_changed (void *owner)
 
static void tag_component_normals_changed (void *owner)
 
Attribute Provider Declaration
static ComponentAttributeProviders create_attribute_providers_for_curve ()
 
Geometry Component Implementation
static ComponentAttributeProviders create_attribute_providers_for_grease_pencil ()
 
static GVArray adapt_grease_pencil_attribute_domain (const GreasePencil &, const GVArray &varray, const AttrDomain from, const AttrDomain to)
 
static AttributeAccessorFunctions get_grease_pencil_accessor_functions ()
 
static const AttributeAccessorFunctionsget_grease_pencil_accessor_functions_ref ()
 
static void tag_component_reference_index_changed (void *owner)
 
static ComponentAttributeProviders create_attribute_providers_for_instances ()
 
static AttributeAccessorFunctions get_instances_accessor_functions ()
 
static const AttributeAccessorFunctionsget_instances_accessor_functions_ref ()
 
Attribute Access
template<typename T >
static void adapt_mesh_domain_corner_to_point_impl (const Mesh &mesh, const VArray< T > &old_values, MutableSpan< T > r_values)
 
template<>
void adapt_mesh_domain_corner_to_point_impl (const Mesh &mesh, const VArray< bool > &old_values, MutableSpan< bool > r_values)
 
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 > &old_values, MutableSpan< T > r_values)
 
template<>
void adapt_mesh_domain_face_to_point_impl (const Mesh &mesh, const VArray< bool > &old_values, MutableSpan< bool > r_values)
 
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 ComponentAttributeProviders create_attribute_providers_for_mesh ()
 
static AttributeAccessorFunctions get_mesh_accessor_functions ()
 
static const AttributeAccessorFunctionsget_mesh_accessor_functions_ref ()
 
static void tag_component_positions_changed (void *owner)
 
static void tag_component_radius_changed (void *owner)
 
static ComponentAttributeProviders create_attribute_providers_for_point_cloud ()
 
static AttributeAccessorFunctions get_pointcloud_accessor_functions ()
 
static const AttributeAccessorFunctionsget_pointcloud_accessor_functions_ref ()
 

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
 
static const std::string ATTR_POSITION = "position"
 
static const std::string ATTR_RADIUS = "radius"
 
static const std::string ATTR_TILT = "tilt"
 
static const std::string ATTR_CURVE_TYPE = "curve_type"
 
static const std::string ATTR_CYCLIC = "cyclic"
 
static const std::string ATTR_RESOLUTION = "resolution"
 
static const std::string ATTR_NORMAL_MODE = "normal_mode"
 
static const std::string ATTR_HANDLE_TYPE_LEFT = "handle_type_left"
 
static const std::string ATTR_HANDLE_TYPE_RIGHT = "handle_type_right"
 
static const std::string ATTR_HANDLE_POSITION_LEFT = "handle_left"
 
static const std::string ATTR_HANDLE_POSITION_RIGHT = "handle_right"
 
static const std::string ATTR_NURBS_ORDER = "nurbs_order"
 
static const std::string ATTR_NURBS_WEIGHT = "nurbs_weight"
 
static const std::string ATTR_NURBS_KNOTS_MODE = "knots_mode"
 
static const std::string ATTR_SURFACE_UV_COORDINATE = "surface_uv_coordinate"
 
static GHashnodetreetypes_hash = nullptr
 
static GHashnodetypes_hash = nullptr
 
static GHashnodetypes_alias_hash = nullptr
 
static GHashnodesockettypes_hash = nullptr
 
template<typename T , typename U >
static constexpr bool is_single_or_field_or_grid_v
 

Node Type Definitions

enum class  NodeGroupColorTag {
  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
}
 
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 NodeGetCompositorShaderNodeFunction
 
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 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, const char *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, const char *idname, const char *name, const char *enum_name, short nclass)
 
void node_type_storage (bNodeType *ntype, const char *storagename, void(*freefunc)(bNode *node), void(*copyfunc)(bNodeTree *dest_ntree, bNode *dest_node, const bNode *src_node))
 
void nodeLabel (const bNodeTree *ntree, const bNode *node, char *label, int maxlen)
 
const char * nodeSocketLabel (const bNodeSocket *sock)
 
const char * nodeSocketShortLabel (const bNodeSocket *sock)
 
void node_type_base (bNodeType *ntype, int type, const char *name, short nclass)
 
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

using bNodeInstanceValueFP = void (*)(void *value)
 
const bNodeInstanceKey NODE_INSTANCE_KEY_BASE = {5381}
 
const bNodeInstanceKey NODE_INSTANCE_KEY_NONE = {0}
 
bNodeTypenode_type_find (const char *idname)
 
const char * node_type_find_alias (const char *idname)
 
void node_register_type (bNodeType *ntype)
 
void node_unregister_type (bNodeType *ntype)
 
void node_register_alias (bNodeType *nt, const char *alias)
 
GHashIteratornode_type_get_iterator ()
 
bNodeSocketTypenode_socket_type_find (const char *idname)
 
void node_register_socket_type (bNodeSocketType *stype)
 
void node_unregister_socket_type (bNodeSocketType *stype)
 
bool node_socket_is_registered (const bNodeSocket *sock)
 
GHashIteratornode_socket_type_get_iterator ()
 
const char * node_socket_type_label (const bNodeSocketType *stype)
 
const char * node_static_socket_type (int type, int subtype)
 
const char * node_static_socket_interface_type_new (int type, int subtype)
 
const char * node_static_socket_label (int type, int subtype)
 
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, const char *idname, const char *identifier, const char *name)
 
bNodeSocketnode_add_static_socket (bNodeTree *ntree, bNode *node, eNodeSocketInOut in_out, int type, int subtype, const char *identifier, const char *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, const char *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)
 
void node_dimensions_get (const bNode *node, float *r_width, float *r_height)
 
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)
 
bool node_find_node_try (bNodeTree *ntree, bNodeSocket *sock, bNode **r_node, int *r_sockindex)
 
void node_find_node (bNodeTree *ntree, bNodeSocket *sock, bNode **r_node, int *r_sockindex)
 
bNodenode_find_node_by_name (bNodeTree *ntree, const char *name)
 
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)
 
bNodeInstanceHashnode_instance_hash_new (const char *info)
 
void node_instance_hash_free (bNodeInstanceHash *hash, bNodeInstanceValueFP valfreefp)
 
void node_instance_hash_insert (bNodeInstanceHash *hash, bNodeInstanceKey key, void *value)
 
void * node_instance_hash_lookup (bNodeInstanceHash *hash, bNodeInstanceKey key)
 
int node_instance_hash_remove (bNodeInstanceHash *hash, bNodeInstanceKey key, bNodeInstanceValueFP valfreefp)
 
void node_instance_hash_clear (bNodeInstanceHash *hash, bNodeInstanceValueFP valfreefp)
 
void * node_instance_hash_pop (bNodeInstanceHash *hash, bNodeInstanceKey key)
 
int node_instance_hash_haskey (bNodeInstanceHash *hash, bNodeInstanceKey key)
 
int node_instance_hash_size (bNodeInstanceHash *hash)
 
void node_instance_hash_clear_tags (bNodeInstanceHash *hash)
 
void node_instance_hash_tag (bNodeInstanceHash *hash, void *value)
 
bool node_instance_hash_tag_key (bNodeInstanceHash *hash, bNodeInstanceKey key)
 
void node_instance_hash_remove_untagged (bNodeInstanceHash *hash, bNodeInstanceValueFP valfreefp)
 

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< intall_zone_node_types ()
 
Span< intall_zone_input_node_types ()
 
Span< intall_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 146 of file BKE_attribute.hh.

◆ bNodeClassCallback

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

Definition at line 446 of file BKE_node.hh.

◆ bNodeInstanceHashIterator

◆ bNodeInstanceValueFP

using blender::bke::bNodeInstanceValueFP = void (*)(void *value)

Definition at line 739 of file BKE_node.hh.

◆ BoneNameSet

Definition at line 686 of file BKE_armature.hh.

◆ Clock

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

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

◆ FoundFCurveCallback

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

Definition at line 355 of file BKE_action.hh.

◆ GeometryComponentPtr

◆ NodeDeclareDynamicFunction

◆ NodeDeclareFunction

Definition at line 121 of file BKE_node.hh.

◆ NodeElemEvalFunction

◆ NodeExecFunction

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

Definition at line 206 of file BKE_node.hh.

◆ NodeExtraInfoFunction

◆ NodeFreeExecFunction

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

Definition at line 205 of file BKE_node.hh.

◆ NodeGatherAddOperationsFunction

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

Definition at line 133 of file BKE_node.hh.

◆ NodeGatherSocketLinkOperationsFunction

◆ NodeGeometryExecFunction

◆ NodeGetCompositorOperationFunction

◆ NodeGetCompositorShaderNodeFunction

◆ NodeGPUExecFunction

Initial value:
int (*)(
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int

Definition at line 208 of file BKE_node.hh.

◆ NodeIDVectorSet

◆ NodeInitExecFunction

Initial value:

Definition at line 202 of file BKE_node.hh.

◆ NodeInverseElemEvalFunction

◆ NodeInverseEvalFunction

◆ NodeMaterialXFunction

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

Definition at line 210 of file BKE_node.hh.

◆ NodeMultiFunctionBuildFunction

◆ NodeSocketPair

Definition at line 185 of file node_tree_update.cc.

◆ ObjectModifierPair

Definition at line 184 of file node_tree_update.cc.

◆ SelectedBoneCallback

Definition at line 682 of file BKE_armature.hh.

◆ SocketGetCPPValueFunction

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

Definition at line 125 of file BKE_node.hh.

◆ SocketGetGeometryNodesCPPValueFunction

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

Definition at line 126 of file BKE_node.hh.

◆ TreeNodePair

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

Definition at line 183 of file node_tree_update.cc.

Enumeration Type Documentation

◆ AttrDomain

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

Definition at line 32 of file BKE_attribute.hh.

◆ eNodeSizePreset

Enumerator
Default 
Small 
Middle 
Large 

Definition at line 1726 of file BKE_node.hh.

◆ FieldSocketState

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

Definition at line 212 of file BKE_node_runtime.hh.

◆ GeometryOwnershipType

Enumerator
Owned 
Editable 
ReadOnly 

Definition at line 48 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 53 of file BKE_mesh_types.hh.

◆ NodeGroupColorTag

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 

Definition at line 429 of file BKE_node.hh.

◆ NodeSocketValueMenuRuntimeFlag

Enumerator
NODE_MENU_ITEMS_CONFLICT 

Definition at line 15 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 743 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_copy_data()

◆ action_foreach_id()

◆ action_free_data()

◆ 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 1519 of file curves_geometry.cc.

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

Referenced by adapt_curve_domain_curve_to_point_impl().

◆ adapt_curve_domain_point_to_curve()

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

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

◆ adapt_curve_domain_point_to_curve_impl() [2/2]

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

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

Referenced by adapt_curve_domain_point_to_curve_impl(), and adapt_curve_domain_point_to_curve_impl().

◆ adapt_domain_and_type_if_necessary()

static GAttributeReader blender::bke::adapt_domain_and_type_if_necessary ( GAttributeReader attribute,
const std::optional< AttrDomain > domain,
const std::optional< eCustomDataType > data_type,
const AttributeAccessor & accessor )
static

◆ adapt_grease_pencil_attribute_domain()

static GVArray blender::bke::adapt_grease_pencil_attribute_domain ( const GreasePencil & ,
const GVArray & varray,
const AttrDomain from,
const AttrDomain to )
static

◆ 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 > & old_values,
MutableSpan< bool > r_values )

◆ 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 > & old_values,
MutableSpan< T > r_values )
static

Definition at line 179 of file geometry_component_mesh.cc.

References BLI_assert, and blender::MutableSpan< T >::size().

◆ 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 > & old_values,
MutableSpan< bool > r_values )

◆ 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 > & old_values,
MutableSpan< T > r_values )

◆ 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 243 of file geometry_component_mesh.cc.

References adapt_mesh_domain_point_to_corner(), 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 )
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 3005 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_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 360 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_main_create_expander()

static void blender::bke::asset_main_create_expander ( void * ,
Main * ,
void * vid )
static

Definition at line 152 of file asset_edit.cc.

References ID_TAG_DOIT, ID_TAG_NEED_EXPAND, and ID::tag.

Referenced by asset_main_create_from_ID().

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

◆ 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 226 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 ComponentAttributeProviders.

Definition at line 202 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]

auto blender::bke::attribute_filter_from_skip_ref ( const Span< StringRef > skip)
inline

◆ 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

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

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

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

Use hash_to_anonymous_attribute_name to generate names for anonymous attributes.

Definition at line 37 of file BKE_anonymous_attribute_id.hh.

Referenced by blender::bke::attribute_accessor_functions::add(), blender::bke::AttributeFieldInput::AttributeFieldInput(), blender::nodes::node_geo_attribute_capture_cc::clean_unused_attributes(), CustomData_blend_write_prepare(), CustomData_layer_is_anonymous(), CustomData_number_of_anonymous_layers(), blender::bke::ProcessAllAttributeExceptAnonymous::filter(), blender::nodes::NodeAttributeFilter::filter(), blender::ed::spreadsheet::GeometryDataSource::foreach_default_column_ids(), blender::geometry::gather_curve_attributes_to_interpolate(), blender::nodes::geo_eval_log::GeometryInfoLog::GeometryInfoLog(), blender::bke::compare_meshes::ignored_attribute(), blender::geometry::interpolate_attribute_to_curves(), blender::bke::attribute_accessor_functions::is_builtin(), blender::io::ply::load_custom_attributes(), blender::bke::attribute_accessor_functions::lookup(), blender::bke::attribute_accessor_functions::lookup_for_write(), blender::bke::attribute_accessor_functions::lookup_validator(), mesh_ensure_default_color_attribute_on_add(), blender::nodes::node_geo_input_named_attribute_cc::node_geo_exec(), blender::nodes::node_geo_remove_attribute_cc::node_geo_exec(), blender::nodes::node_geo_store_named_attribute_cc::node_geo_exec(), blender::bke::attribute_accessor_functions::remove(), blender::bke::MutableAttributeAccessor::remove_anonymous(), blender::ed::curves::resize_curves(), blender::bke::bake::serialize_attributes(), blender::bke::CurvesVertexGroupsAttributeProvider::try_delete(), blender::bke::CurvesVertexGroupsAttributeProvider::try_get_for_read(), and blender::bke::CurvesVertexGroupsAttributeProvider::try_get_for_write().

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

void blender::bke::BKE_action_find_fcurves_with_bones ( const bAction * action,
FoundFCurveCallback callback )

◆ BKE_armature_find_selected_bone_names()

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

Return a set of names of the selected bones. An empty set means "ignore bone selection", which either means all bones are selected, or none are.

Definition at line 52 of file armature_selection.cc.

References blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), BKE_armature_find_selected_bones(), and callback.

Referenced by BKE_pose_backup_create_selected_bones().

◆ 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 277 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 253 of file type_conversions.cc.

◆ bool_to_float2()

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

Definition at line 269 of file type_conversions.cc.

◆ bool_to_float3()

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

Definition at line 273 of file type_conversions.cc.

◆ bool_to_int()

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

Definition at line 261 of file type_conversions.cc.

◆ bool_to_int2()

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

Definition at line 265 of file type_conversions.cc.

◆ bool_to_int8()

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

Definition at line 257 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

◆ byte_color_to_bool()

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

◆ byte_color_to_color()

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

Definition at line 347 of file type_conversions.cc.

◆ byte_color_to_float()

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

Definition at line 323 of file type_conversions.cc.

References color_to_float().

◆ byte_color_to_float2()

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

Definition at line 339 of file type_conversions.cc.

References color_to_float2().

◆ byte_color_to_float3()

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

Definition at line 343 of file type_conversions.cc.

References color_to_float3().

◆ byte_color_to_int()

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

Definition at line 327 of file type_conversions.cc.

References color_to_int().

◆ byte_color_to_int2()

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

Definition at line 331 of file type_conversions.cc.

◆ byte_color_to_int8()

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

Definition at line 335 of file type_conversions.cc.

References color_to_int8().

◆ calc_edge_centers()

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

Definition at line 271 of file mesh_remesh_voxel.cc.

References blender::math::midpoint().

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

static void blender::bke::calculate_evaluated_offsets ( const CurvesGeometry & curves,
MutableSpan< int > offsets,
MutableSpan< int > all_bezier_offsets )
static

◆ calculate_result_offsets()

◆ calculate_type_counts()

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

◆ call_convert_to_uninitialized_fn() [1/2]

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 497 of file type_conversions.cc.

References call_convert_to_uninitialized_fn().

◆ can_read_node_type()

static bool blender::bke::can_read_node_type ( const int type)
static

◆ 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

◆ color_to_bool()

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

Definition at line 286 of file type_conversions.cc.

References rgb_to_grayscale().

◆ color_to_byte_color()

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

Definition at line 314 of file type_conversions.cc.

◆ color_to_float()

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

Definition at line 290 of file type_conversions.cc.

References rgb_to_grayscale().

Referenced by byte_color_to_float().

◆ color_to_float2()

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

Definition at line 306 of file type_conversions.cc.

Referenced by byte_color_to_float2().

◆ color_to_float3()

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

Definition at line 310 of file type_conversions.cc.

Referenced by byte_color_to_float3().

◆ color_to_int()

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

Definition at line 294 of file type_conversions.cc.

References int, and rgb_to_grayscale().

Referenced by byte_color_to_int(), and color_to_int8().

◆ color_to_int2()

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

Definition at line 298 of file type_conversions.cc.

◆ color_to_int8()

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

Definition at line 302 of file type_conversions.cc.

References color_to_int(), and int_to_int8().

Referenced by byte_color_to_int8().

◆ construct_curve_length_gvarray()

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

◆ convert_collection_to_instances()

static void blender::bke::convert_collection_to_instances ( const Collection & collection,
bke::Instances & instances )
static

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

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

◆ create_attribute_providers_for_curve()

◆ create_attribute_providers_for_grease_pencil()

static ComponentAttributeProviders blender::bke::create_attribute_providers_for_grease_pencil ( )
static

◆ create_attribute_providers_for_instances()

static ComponentAttributeProviders 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 126 of file geometry_component_instances.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 ComponentAttributeProviders blender::bke::create_attribute_providers_for_mesh ( )
static

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

Definition at line 997 of file geometry_component_mesh.cc.

References CD_PROP_BOOL, CD_PROP_FLOAT3, CD_PROP_INT32, CD_PROP_INT32_2D, create_attribute_providers_for_mesh(), MAKE_CONST_CUSTOM_DATA_GETTER, MAKE_GET_ELEMENT_NUM_GETTER, MAKE_MUTABLE_CUSTOM_DATA_GETTER, blender::math::max(), tag_component_positions_changed(), and tag_component_sharpness_changed().

Referenced by create_attribute_providers_for_mesh(), and get_mesh_accessor_functions().

◆ create_attribute_providers_for_point_cloud()

static ComponentAttributeProviders blender::bke::create_attribute_providers_for_point_cloud ( )
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 138 of file geometry_component_pointcloud.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_implicit_conversions()

static DataTypeConversions blender::bke::create_implicit_conversions ( )
static

Definition at line 367 of file type_conversions.cc.

References add_implicit_conversion().

Referenced by get_implicit_type_conversions().

◆ create_orco_mesh()

◆ curve_legacy_to_curves() [1/2]

◆ curve_legacy_to_curves() [2/2]

◆ curve_normal_point_domain()

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

Definition at line 156 of file geometry_component_curves.cc.

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

Referenced by curve_normals_varray().

◆ curve_normals_varray()

◆ curve_to_mesh_sweep()

Mesh * blender::bke::curve_to_mesh_sweep ( const CurvesGeometry & main,
const CurvesGeometry & profile,
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 815 of file curve_to_mesh_convert.cc.

References blender::bke::ResultOffsets::any_single_point_main, blender::bke::ResultOffsets::any_single_point_profile, 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::CombinationInfo::edge_range, evaluate_attribute(), blender::bke::ResultOffsets::face, blender::bke::CombinationInfo::face_range, fill_mesh_topology(), blender::bke::GSpanAttributeWriter::finish(), blender::bke::SpanAttributeWriter< T >::finish(), blender::bke::AttributeAccessor::foreach_attribute(), foreach_curve_combination(), blender::bke::AttributeIter::get(), get_attribute_domain_for_mesh(), get_curves_info(), 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, blender::bke::CombinationInfo::loop_range, main(), blender::bke::CombinationInfo::main_cyclic, blender::bke::ResultOffsets::main_indices, blender::bke::CombinationInfo::main_points, blender::bke::CombinationInfo::main_segment_num, mesh, blender::bke::AttributeIter::name, blender::bke::CombinationInfo::profile_cyclic, blender::bke::ResultOffsets::profile_indices, blender::bke::CombinationInfo::profile_points, blender::bke::CombinationInfo::profile_segment_num, should_add_attribute_to_mesh(), blender::IndexRange::size(), blender::bke::GSpanAttributeWriter::span, blender::bke::SpanAttributeWriter< T >::span, blender::IndexRange::start(), blender::bke::ResultOffsets::vert, blender::bke::CombinationInfo::vert_range, and write_sharp_bezier_edges().

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

◆ curve_to_wire_mesh()

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

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

Definition at line 999 of file curve_to_mesh_convert.cc.

References 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_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 298 of file blenkernel/intern/curves.cc.

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

◆ curves_new_nomain() [2/2]

◆ curves_new_nomain_single()

◆ curves_normals_point_domain_calc()

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

◆ custom_data_layer_matches_attribute_id()

◆ custom_data_type_to_cpp_type()

◆ custom_data_type_to_socket_type()

◆ custom_data_type_to_volume_grid_type()

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

◆ direct_link_node_socket()

◆ 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 209 of file curves_geometry.cc.

References Point.

◆ domain_custom_data() [2/2]

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

Definition at line 204 of file curves_geometry.cc.

References Point.

Referenced by get_mutable_attribute(), get_span_attribute(), and get_varray_attribute().

◆ domain_num()

static int blender::bke::domain_num ( const CurvesGeometry & curves,
const AttrDomain domain )
static

◆ editbmesh_build_data()

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

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

Referenced by editbmesh_build_data().

◆ editbmesh_get_eval_cage()

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

◆ editbmesh_get_eval_cage_from_orig()

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

◆ editbmesh_modifier_is_enabled()

◆ evaluate_attribute()

◆ evaluate_generic_data_for_curve()

◆ file_handler_add()

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

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

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

Load all extensions from the string list into the list.

Load all extensions from the string list into the list.

Definition at line 38 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 25 of file file_handler.cc.

References 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 58 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 66 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 test_single_file_handler_poll().

◆ file_handlers_vector()

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

Definition at line 14 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 > radii,
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()

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

◆ 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 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 98 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 106 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 86 of file type_conversions.cc.

Referenced by int2_to_float().

◆ float2_to_float3()

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

Definition at line 82 of file type_conversions.cc.

◆ float2_to_int()

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

Definition at line 90 of file type_conversions.cc.

◆ float2_to_int2()

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

Definition at line 94 of file type_conversions.cc.

◆ float2_to_int8()

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

Definition at line 102 of file type_conversions.cc.

References float_to_int8().

◆ float3_to_bool()

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

Definition at line 115 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 139 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 123 of file type_conversions.cc.

◆ float3_to_float2()

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

Definition at line 135 of file type_conversions.cc.

◆ float3_to_int()

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

Definition at line 127 of file type_conversions.cc.

References int.

◆ float3_to_int2()

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

Definition at line 131 of file type_conversions.cc.

◆ float3_to_int8()

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

Definition at line 119 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 239 of file type_conversions.cc.

References blender::math::to_quaternion().

◆ 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 60 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 69 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 44 of file type_conversions.cc.

◆ float_to_float3()

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

Definition at line 48 of file type_conversions.cc.

◆ float_to_int()

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

Definition at line 52 of file type_conversions.cc.

◆ float_to_int2()

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

Definition at line 56 of file type_conversions.cc.

◆ float_to_int8()

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

Definition at line 64 of file type_conversions.cc.

Referenced by float2_to_int8(), and float3_to_int8().

◆ float_to_quaternion()

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

Definition at line 77 of file type_conversions.cc.

References blender::math::to_quaternion().

◆ foreach_curve_combination()

◆ free_batch_cache()

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

◆ free_bvh_cache()

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

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

◆ gather_attributes() [2/3]

◆ gather_attributes() [3/3]

◆ gather_attributes_group_to_group()

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

◆ 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 1824 of file deform.cc.

References gather_deform_verts(), 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 1811 of file deform.cc.

References gather_deform_verts().

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

static CurvesGeometry blender::bke::get_curve_single_vert ( )
static

Definition at line 989 of file curve_to_mesh_convert.cc.

References CURVE_TYPE_POLY, and get_curve_single_vert().

Referenced by curve_to_wire_mesh(), and get_curve_single_vert().

◆ get_curves_accessor_functions()

◆ get_curves_accessor_functions_ref()

◆ get_curves_info()

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

Definition at line 233 of file curve_to_mesh_convert.cc.

References main().

Referenced by curve_to_mesh_sweep().

◆ get_direct_zone_relations()

◆ get_grease_pencil_accessor_functions()

◆ get_grease_pencil_accessor_functions_ref()

static const AttributeAccessorFunctions & blender::bke::get_grease_pencil_accessor_functions_ref ( )
static

◆ get_implicit_type_conversions()

◆ get_instances_accessor_functions()

◆ get_instances_accessor_functions_ref()

◆ 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 87 of file node_tree_update.cc.

References SOCK_BOOLEAN, SOCK_CUSTOM, SOCK_FLOAT, SOCK_INT, SOCK_RGBA, SOCK_ROTATION, SOCK_VECTOR, and STREQ.

◆ get_known_node_types_set()

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

◆ get_mesh_accessor_functions()

◆ get_mesh_accessor_functions_ref()

◆ get_mutable_attribute()

◆ get_orco_coords()

◆ get_pointcloud_accessor_functions()

◆ get_pointcloud_accessor_functions_ref()

static const AttributeAccessorFunctions & blender::bke::get_pointcloud_accessor_functions_ref ( )
static

◆ get_random_id_attribute_name()

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

Definition at line 488 of file geometry_fields.cc.

References Instance, and Point.

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

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

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

Definition at line 515 of file instances.cc.

◆ get_tree_zones()

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

Definition at line 359 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 464 of file node_tree_zones.cc.

Referenced by all_zone_types(), and register_node_zone_type().

◆ grid_type_to_socket_type()

std::optional< eNodeSocketDatatype > blender::bke::grid_type_to_socket_type ( VolumeGridType type)

◆ handle_type_from_legacy()

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

◆ hash_to_anonymous_attribute_name()

◆ 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 182 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 206 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 198 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 186 of file type_conversions.cc.

◆ int2_to_float3()

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

Definition at line 202 of file type_conversions.cc.

◆ int2_to_int()

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

Definition at line 190 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 194 of file type_conversions.cc.

References int2_to_int(), and int_to_int8().

◆ int8_to_bool()

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

Definition at line 215 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 244 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 227 of file type_conversions.cc.

References float.

◆ int8_to_float2()

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

Definition at line 231 of file type_conversions.cc.

◆ int8_to_float3()

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

Definition at line 235 of file type_conversions.cc.

◆ int8_to_int()

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

Definition at line 219 of file type_conversions.cc.

References int.

◆ int8_to_int2()

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

Definition at line 223 of file type_conversions.cc.

◆ int_to_bool()

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

Definition at line 148 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 173 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 161 of file type_conversions.cc.

References float.

◆ int_to_float2()

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

Definition at line 165 of file type_conversions.cc.

◆ int_to_float3()

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

Definition at line 169 of file type_conversions.cc.

◆ int_to_int2()

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

Definition at line 157 of file type_conversions.cc.

◆ int_to_int8()

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

Definition at line 152 of file type_conversions.cc.

Referenced by color_to_int8(), and int2_to_int8().

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

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

static KnotsMode blender::bke::knots_mode_from_legacy ( const short flag)
static

◆ library_foreach_node_socket()

◆ 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 156 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_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 227 of file mesh_data_update.cc.

References Mesh::id, ID::name, Mesh::runtime, 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 309 of file mesh_data_update.cc.

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

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

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

References depsgraph, mesh_calc_modifiers(), and result.

Referenced by bvh_get_mesh().

◆ mesh_create_eval_no_deform_render()

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

Definition at line 1246 of file mesh_data_update.cc.

References depsgraph, mesh_calc_modifiers(), and result.

Referenced by bvh_get_mesh().

◆ 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 508 of file mesh_evaluate.cc.

References blender::threading::parallel_for().

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

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

Set the default name when adding a color attribute if there is no default yet.

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

References ATTR_DOMAIN_AS_MASK, ATTR_DOMAIN_MASK_COLOR, attribute_name_is_anonymous(), BLI_strdupn(), CD_MASK_COLOR_ALL, CD_TYPE_AS_MASK, data, and size().

Referenced by blender::nodes::node_geo_store_named_attribute_cc::node_geo_exec().

◆ mesh_ensure_required_data_layers()

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

◆ mesh_eval_to_meshkey()

void blender::bke::mesh_eval_to_meshkey ( const Mesh * me_deformed,
Mesh * mesh,
KeyBlock * kb )

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

Create a mesh with no built-in attributes.

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

References BKE_mesh_new_nomain(), and CustomData_free_layer_named().

Referenced by blender::bke::subdiv::subdiv_mesh_topology_info().

◆ mesh_normals_varray()

◆ mesh_remesh_reproject_attributes()

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

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

Definition at line 99 of file mesh_data_update.cc.

References CustomData_set_only_copy().

Referenced by editbmesh_calc_modifiers(), and mesh_calc_modifiers().

◆ mesh_sharp_edges_set_from_angle()

void blender::bke::mesh_sharp_edges_set_from_angle ( Mesh & mesh,
float angle,
bool keep_sharp_edges = false )

◆ mesh_smooth_set()

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

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

◆ mesh_vert_normals_assign() [2/2]

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

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

Definition at line 55 of file mesh_normals.cc.

◆ mesh_wrapper_vert_coords_ensure_for_write()

static MutableSpan< float3 > blender::bke::mesh_wrapper_vert_coords_ensure_for_write ( Mesh * mesh)
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 244 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 2912 of file node.cc.

References BKE_ntree_update_tag_link_added(), BLI_addtail(), BLI_assert, bNodeLink::fromnode, bNodeLink::fromsock, bNodeSocket::in_out, bNodeTree::links, 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::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_viewer_cc::node_gather_link_searches(), blender::ed::space_node::node_group_make_insert_selected(), 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(), 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 2642 of file node.cc.

References CLOG_ERROR, bNode::idname, LOG, node_add_node(), NODE_TYPES_BEGIN, and NODE_TYPES_END.

Referenced by blender::io::usd::add_input_named_attrib_node(), 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_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_join_exec(), 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()

◆ node_attach_node()

◆ 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 2501 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_frame_chains(), 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 2561 of file node.cc.

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

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

◆ node_clear_active()

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

Definition at line 3885 of file node.cc.

◆ node_copy()

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

Definition at line 2895 of file node.cc.

References flag, and node_copy_with_mapping().

Referenced by ntree_shader_copy_branch().

◆ node_copy_with_mapping()

◆ node_count_links()

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

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

References node_declaration_ensure_on_outdated_node(), and node_socket_declarations_update().

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

◆ node_declaration_ensure_on_outdated_node()

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

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

Definition at line 3970 of file node.cc.

References BLI_assert, and blender::nodes::update_node_declaration_and_sockets().

Referenced by node_declaration_ensure(), and node_verify_sockets().

◆ node_detach_node()

◆ node_dimensions_get()

void blender::bke::node_dimensions_get ( const bNode * node,
float * r_width,
float * r_height )

Definition at line 4001 of file node.cc.

◆ node_find_enabled_input_socket()

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

◆ node_find_enabled_output_socket()

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

Definition at line 1868 of file node.cc.

References node_find_enabled_socket(), and SOCK_OUT.

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

◆ node_find_enabled_socket()

◆ node_find_node()

void blender::bke::node_find_node ( bNodeTree * ntree,
bNodeSocket * sock,
bNode ** r_node,
int * r_sockindex )

Same as node_find_node_try but expects that the socket definitely is in the node tree.

Definition at line 2442 of file node.cc.

References BLI_assert, BLI_findindex(), bNodeSocket::in_out, node, node_find_node_try(), bNodeTree::runtime, SOCK_IN, and UNUSED_VARS_NDEBUG.

◆ node_find_node_by_name()

◆ node_find_node_try()

bool blender::bke::node_find_node_try ( bNodeTree * ntree,
bNodeSocket * sock,
bNode ** r_node,
int * r_sockindex )

Finds a node based on given socket and returns true on success.

Definition at line 2459 of file node.cc.

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

Referenced by node_find_node(), and UI_context_copy_to_selected_list().

◆ node_find_root_parent()

bNode * blender::bke::node_find_root_parent ( bNode * node)

◆ node_find_socket() [1/2]

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

Definition at line 1829 of file node.cc.

References LISTBASE_FOREACH, 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(), 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_hue_sat_node(), 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(), light_emission_node_to_energy(), link_nodes(), 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_object_exec(), blender::ed::space_node::node_clipboard_paste_exec(), node_find_socket(), 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::ed::space_node::prepare_viewlayer_update(), proj_paint_add_slot(), blender::io::usd::USDPointInstancerReader::read_object_data(), MaterialNode::set_alpha(), blender::io::usd::USDPointInstancerReader::set_collection(), MaterialNode::set_diffuse(), 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(), 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(), and versioning_update_noise_texture_node().

◆ node_find_socket() [2/2]

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

Definition at line 1842 of file node.cc.

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

static void blender::bke::node_foreach_path ( ID * id,
BPathForeachPathData * bpath_data )
static

◆ node_free_node()

void blender::bke::node_free_node ( bNodeTree * tree,
bNode * node )

◆ node_free_socket_type()

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

◆ node_free_type()

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

◆ node_from_view()

float2 blender::bke::node_from_view ( const bNode * node,
float2 view_loc )

◆ node_get_active()

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

Definition at line 3849 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_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_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_sbeam_poll(), blender::ed::space_node::WIDGETGROUP_node_sbeam_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 303 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 298 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 4027 of file node.cc.

References hash, str, and bNodeInstanceKey::value.

Referenced by node_instance_key().

◆ node_init()

◆ node_instance_hash_clear()

void blender::bke::node_instance_hash_clear ( bNodeInstanceHash * hash,
bNodeInstanceValueFP valfreefp )

Definition at line 4102 of file node.cc.

References BLI_ghash_clear(), and hash.

◆ node_instance_hash_clear_tags()

void blender::bke::node_instance_hash_clear_tags ( bNodeInstanceHash * hash)

◆ node_instance_hash_free()

void blender::bke::node_instance_hash_free ( bNodeInstanceHash * hash,
bNodeInstanceValueFP valfreefp )

Definition at line 4076 of file node.cc.

References BLI_ghash_free(), hash, and MEM_freeN().

Referenced by node_preview_merge_tree(), and ntree_free_data().

◆ node_instance_hash_haskey()

int blender::bke::node_instance_hash_haskey ( bNodeInstanceHash * hash,
bNodeInstanceKey key )

Definition at line 4112 of file node.cc.

References BLI_ghash_haskey(), and hash.

◆ node_instance_hash_insert()

void blender::bke::node_instance_hash_insert ( bNodeInstanceHash * hash,
bNodeInstanceKey key,
void * value )

◆ node_instance_hash_iterator_done()

BLI_INLINE bool blender::bke::node_instance_hash_iterator_done ( bNodeInstanceHashIterator * iter)

Definition at line 1672 of file BKE_node.hh.

References BLI_ghashIterator_done().

◆ node_instance_hash_iterator_free()

BLI_INLINE void blender::bke::node_instance_hash_iterator_free ( bNodeInstanceHashIterator * iter)

Definition at line 1652 of file BKE_node.hh.

References BLI_ghashIterator_free().

◆ node_instance_hash_iterator_get_key()

BLI_INLINE bNodeInstanceKey blender::bke::node_instance_hash_iterator_get_key ( bNodeInstanceHashIterator * iter)

◆ node_instance_hash_iterator_get_value()

BLI_INLINE void * blender::bke::node_instance_hash_iterator_get_value ( bNodeInstanceHashIterator * iter)

◆ node_instance_hash_iterator_init()

BLI_INLINE void blender::bke::node_instance_hash_iterator_init ( bNodeInstanceHashIterator * iter,
bNodeInstanceHash * hash )

Definition at line 1646 of file BKE_node.hh.

References BLI_ghashIterator_init(), and hash.

◆ node_instance_hash_iterator_new()

BLI_INLINE bNodeInstanceHashIterator * blender::bke::node_instance_hash_iterator_new ( bNodeInstanceHash * hash)

Definition at line 1641 of file BKE_node.hh.

References BLI_ghashIterator_new(), and hash.

◆ node_instance_hash_iterator_step()

BLI_INLINE void blender::bke::node_instance_hash_iterator_step ( bNodeInstanceHashIterator * iter)

Definition at line 1667 of file BKE_node.hh.

References BLI_ghashIterator_step().

◆ node_instance_hash_key()

static uint blender::bke::node_instance_hash_key ( const void * key)
static

Definition at line 4054 of file node.cc.

Referenced by node_instance_hash_new().

◆ node_instance_hash_key_cmp()

static bool blender::bke::node_instance_hash_key_cmp ( const void * a,
const void * b )
static

Definition at line 4059 of file node.cc.

References b.

Referenced by node_instance_hash_new().

◆ node_instance_hash_lookup()

void * blender::bke::node_instance_hash_lookup ( bNodeInstanceHash * hash,
bNodeInstanceKey key )

◆ node_instance_hash_new()

◆ node_instance_hash_pop()

void * blender::bke::node_instance_hash_pop ( bNodeInstanceHash * hash,
bNodeInstanceKey key )

Definition at line 4107 of file node.cc.

References BLI_ghash_popkey(), and hash.

◆ node_instance_hash_remove()

int blender::bke::node_instance_hash_remove ( bNodeInstanceHash * hash,
bNodeInstanceKey key,
bNodeInstanceValueFP valfreefp )

Definition at line 4095 of file node.cc.

References BLI_ghash_remove(), and hash.

Referenced by node_instance_hash_remove_untagged(), and node_preview_merge_tree().

◆ node_instance_hash_remove_untagged()

◆ node_instance_hash_size()

int blender::bke::node_instance_hash_size ( bNodeInstanceHash * hash)

Definition at line 4117 of file node.cc.

References BLI_ghash_len(), and hash.

Referenced by node_instance_hash_remove_untagged().

◆ node_instance_hash_tag()

void blender::bke::node_instance_hash_tag ( bNodeInstanceHash * hash,
void * value )

Definition at line 4134 of file node.cc.

References bNodeInstanceHashEntry::tag.

◆ node_instance_hash_tag_key()

bool blender::bke::node_instance_hash_tag_key ( bNodeInstanceHash * hash,
bNodeInstanceKey key )

Definition at line 4140 of file node.cc.

References hash, node_instance_hash_lookup(), and bNodeInstanceHashEntry::tag.

Referenced by node_preview_tag_used_recursive().

◆ node_instance_key()

◆ node_internal_links()

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

Definition at line 4012 of file node.cc.

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

◆ node_is_static_socket_type()

◆ node_link_is_hidden()

◆ node_link_is_selected()

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

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

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

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

◆ node_modify_socket_type()

◆ node_modify_socket_type_static()

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

◆ node_node_foreach_id()

◆ node_owner_pointer_get()

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

Definition at line 462 of file node.cc.

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

◆ node_parents_iterator()

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

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

Note
Recursive

Definition at line 2583 of file node.cc.

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

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

bNodePreview * blender::bke::node_preview_copy ( bNodePreview * preview)

Definition at line 3307 of file node.cc.

References bNodePreview::ibuf, IMB_dupImBuf(), and MEM_dupallocN.

Referenced by ntree_copy_data().

◆ node_preview_free()

void blender::bke::node_preview_free ( bNodePreview * preview)

◆ 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 ( bNodeInstanceHash * previews,
bNodeTree * ntree,
bNodeInstanceKey parent_key,
const int xsize,
const int ysize )
static

◆ node_preview_merge_tree()

◆ node_preview_remove_unused()

◆ node_preview_tag_used_recursive()

static void blender::bke::node_preview_tag_used_recursive ( bNodeInstanceHash * previews,
bNodeTree * ntree,
bNodeInstanceKey parent_key )
static

◆ node_preview_used()

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

Definition at line 3267 of file node.cc.

References NODE_PREVIEW.

Referenced by node_preview_init_tree_recursive(), and node_preview_tag_used_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 3464 of file node.cc.

References LISTBASE_FOREACH_INDEX, and node_tree.

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,
const char * alias )

◆ node_register_socket_type()

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

◆ node_register_type()

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

Definition at line 1708 of file node.cc.

References BLI_assert, BLI_ghash_insert(), blender::nodes::build_node_declaration(), blender::bke::bNodeType::declare, G_MAIN, blender::bke::bNodeType::idname, nodetypes_hash, blender::bke::bNodeType::poll, blender::bke::bNodeType::static_declaration, 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_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_float_to_int_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_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_collection_info_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_on_domain_cc::node_register(), blender::nodes::node_geo_extrude_mesh_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_to_curves_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_obj::node_register(), blender::nodes::node_geo_import_stl::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_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_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_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_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_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_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_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_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_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 2958 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_versions_material_convert_legacy_blend_mode(), blender::io::usd::dome_light_to_world_material(), 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(), 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

Definition at line 4202 of file node.cc.

References can_read_node_type(), NODE_CUSTOM, NodeTypeUndefined, and SNPRINTF.

Referenced by node_tree_update_all_new().

◆ node_set_active()

◆ node_set_selected()

◆ node_set_socket_availability()

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

Definition at line 3911 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_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_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 3958 of file node.cc.

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

References NodeSocketTypeUndefined, and bNodeSocket::typeinfo.

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

References blender::CPPType::destruct(), ELEM, get_implicit_type_conversions(), NODE_REROUTE, node_static_value_storage_for(), SOCK_COLLECTION, SOCK_IMAGE, SOCK_MATERIAL, SOCK_OBJECT, SOCK_TEXTURE, socket_value_storage(), tree, bNode::type, 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_sub_type_label()

const char * blender::bke::node_socket_sub_type_label ( int subtype)

Definition at line 1820 of file node.cc.

References RNA_enum_name(), and rna_enum_property_subtype_items.

Referenced by make_standard_socket_type().

◆ node_socket_type_find()

◆ node_socket_type_get_iterator()

GHashIterator * blender::bke::node_socket_type_get_iterator ( )

Definition at line 1806 of file node.cc.

References BLI_ghashIterator_new(), and nodesockettypes_hash.

◆ node_socket_type_label()

const char * blender::bke::node_socket_type_label ( const bNodeSocketType * stype)

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

References FN_NODE_INPUT_BOOL, FN_NODE_INPUT_COLOR, FN_NODE_INPUT_INT, FN_NODE_INPUT_VECTOR, GEO_NODE_IMAGE, 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_active )

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

References BLI_assert, ELEM, NODE_ACTIVE_PAINT_CANVAS, NODE_ACTIVE_TEXTURE, NODE_CLASS_TEXTURE, 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 4007 of file node.cc.

References NODE_UPDATE_ID.

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

◆ node_to_view()

◆ node_tree_add_in_lib()

bNodeTree * blender::bke::node_tree_add_in_lib ( Main * bmain,
Library * owner_library,
const char * name,
const char * 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 3231 of file node.cc.

References node_tree_add_tree_do().

Referenced by add_auto_smooth_node_tree().

◆ node_tree_add_tree()

◆ node_tree_add_tree_do()

static bNodeTree * blender::bke::node_tree_add_tree_do ( Main * bmain,
std::optional< Library * > owner_library,
ID * owner_id,
const bool is_embedded,
const char * name,
const char * idname )
static

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

void blender::bke::node_tree_blend_read_data ( BlendDataReader * reader,
ID * owner_id,
bNodeTree * ntree )
Note
ntree itself has been read!

Definition at line 1042 of file node.cc.

References BKE_curvemapping_blend_read(), BKE_image_format_blend_read_data(), BKE_ntree_update_tag_missing_runtime_data(), BKE_previewimg_blend_read(), BLI_assert, BLI_listbase_clear(), BLI_listbase_count(), BLO_read_data_address, BLO_read_fileversion_get(), BLO_read_string(), BLO_read_struct, BLO_read_struct_array, BLO_read_struct_list, NodeShaderScript::bytecode, CLOG_WARN, CMP_NODE_CRYPTOMATTE, CMP_NODE_CRYPTOMATTE_LEGACY, CMP_NODE_CURVE_RGB, CMP_NODE_CURVE_VEC, CMP_NODE_HUECORRECT, CMP_NODE_IMAGE, CMP_NODE_OUTPUT_FILE, CMP_NODE_R_LAYERS, CMP_NODE_TIME, CMP_NODE_VIEWER, bNodeTree::description, direct_link_node_socket(), NodeCryptomatte::entries, ID::flag, FN_NODE_INPUT_STRING, NodeImageMultiFile::format, NodeImageMultiFileSocket::format, GEO_NODE_BAKE, GEO_NODE_CAPTURE_ATTRIBUTE, GEO_NODE_FOREACH_GEOMETRY_ELEMENT_OUTPUT, GEO_NODE_INDEX_SWITCH, GEO_NODE_MENU_SWITCH, GEO_NODE_REPEAT_OUTPUT, GEO_NODE_SIMULATION_OUTPUT, bNodeTree::geometry_node_asset_traits, bNodeTree::id, ID_FLAG_EMBEDDED_DATA, IDP_BlendDataRead, Tex::iuser, NodeCryptomatte_Runtime::layers, ID::lib, bNodeTree::links, LISTBASE_FOREACH, LISTBASE_FOREACH_INDEX, LISTBASE_FOREACH_MUTABLE, LOG, NodeCryptomatte::matte_id, ID::name, bNodeTree::nested_node_refs, bNodeTree::nested_node_refs_num, node_tree_blend_read_data(), node_unique_id(), bNodeTree::nodes, bNodeTree::owner_id, bNode::parent, NodeShaderTexPointDensity::pd, bNodeTree::preview, bNodeTree::previews, remove_unsupported_sockets(), bNodeTree::runtime, NodeCryptomatte::runtime, ImageUser::scene, SH_NODE_CURVE_FLOAT, SH_NODE_CURVE_RGB, SH_NODE_CURVE_VEC, SH_NODE_SCRIPT, SH_NODE_TEX_ENVIRONMENT, SH_NODE_TEX_IMAGE, SH_NODE_TEX_POINTDENSITY, NodeInputString::string, tex, TEX_NODE_CURVE_RGB, TEX_NODE_CURVE_TIME, TEX_NODE_IMAGE, bNodeTree::tree_interface, and bNodeTree::typeinfo.

Referenced by direct_link_id_embedded_id(), node_tree_blend_read_data(), and ntree_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 3827 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()

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

References bNodeTree::typeinfo.

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

◆ node_tree_localize()

struct bNodeTree * blender::bke::node_tree_localize ( bNodeTree * ntree,
ID * new_owner_id )

◆ node_tree_node_flag_set()

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

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

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

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

◆ node_tree_remove_layer_n()

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

Definition at line 4764 of file node.cc.

References BLI_assert.

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

References CMP_NODE_VIEWER, ELEM, LISTBASE_FOREACH, NODE_CLASS_OUTPUT, NODE_DO_OUTPUT, NODE_GROUP_OUTPUT, bNodeTree::nodes, NTREE_COMPOSIT, 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 ( const bContext * C,
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 1598 of file node.cc.

References bNodeTree::idname, LISTBASE_FOREACH, 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()

◆ node_tree_type_find()

◆ node_tree_type_free_link()

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

◆ node_tree_type_get_iterator()

GHashIterator * blender::bke::node_tree_type_get_iterator ( )

Definition at line 1662 of file node.cc.

References BLI_ghashIterator_new(), and nodetreetypes_hash.

◆ node_tree_update_all_new()

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

bNodeType * blender::bke::node_type_find ( const char * idname)

◆ node_type_find_alias()

const char * blender::bke::node_type_find_alias ( const char * idname)

Definition at line 1679 of file node.cc.

References BLI_ghash_lookup(), and nodetypes_alias_hash.

Referenced by pyrna_struct_bl_rna_get_subclass().

◆ node_type_get_iterator()

GHashIterator * blender::bke::node_type_get_iterator ( )

Definition at line 1758 of file node.cc.

References BLI_ghashIterator_new(), and nodetypes_hash.

◆ node_type_is_undefined()

bool blender::bke::node_type_is_undefined ( const bNode * node)

◆ node_type_size()

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

Definition at line 4602 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_to_curves_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_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_colorbalance(), register_node_type_cmp_colorcorrection(), 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_ellipsemask(), 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 4614 of file node.cc.

References Default, Large, Middle, NODE_DEFAULT_MAX_WIDTH, node_type_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_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,
const char * 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).

Definition at line 4632 of file node.cc.

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

Referenced by blender::nodes::node_fn_combine_color_cc::node_register(), blender::nodes::node_fn_compare_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_collection_info_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_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_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_alphaover(), register_node_type_cmp_antialiasing(), register_node_type_cmp_bilateralblur(), register_node_type_cmp_blur(), register_node_type_cmp_bokehimage(), register_node_type_cmp_boxmask(), register_node_type_cmp_channel_matte(), register_node_type_cmp_chroma_matte(), register_node_type_cmp_color_matte(), register_node_type_cmp_color_spill(), register_node_type_cmp_colorbalance(), register_node_type_cmp_colorcorrection(), register_node_type_cmp_combine_color(), register_node_type_cmp_convert_color_space(), 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_diff_matte(), register_node_type_cmp_dilateerode(), register_node_type_cmp_distance_matte(), register_node_type_cmp_ellipsemask(), 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_luma_matte(), register_node_type_cmp_map_value(), register_node_type_cmp_mask(), 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_separate_color(), register_node_type_cmp_setalpha(), register_node_type_cmp_sunbeams(), register_node_type_cmp_tonemap(), register_node_type_cmp_trackpos(), register_node_type_cmp_translate(), register_node_type_cmp_valtorgb(), register_node_type_cmp_vecblur(), 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_unique_id()

◆ node_unique_name()

◆ node_unlink_attached()

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

Definition at line 3455 of file node.cc.

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

◆ node_unregister_type()

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

◆ node_update_asset_metadata()

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

Update asset meta-data cache of data-block properties.

Definition at line 1305 of file node.cc.

References BKE_asset_metadata_idprop_ensure(), IDP_AddToGroup(), node_tree, and node_update_asset_metadata().

Referenced by node_tree_asset_on_mark_asset(), node_tree_asset_pre_save(), and node_update_asset_metadata().

◆ nodeLabel()

◆ nodeSocketLabel()

const char * blender::bke::nodeSocketLabel ( const bNodeSocket * sock)

◆ nodeSocketShortLabel()

const char * blender::bke::nodeSocketShortLabel ( 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 4285 of file node.cc.

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

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

◆ 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

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

References G_MAIN, MEM_freeN(), 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 538 of file node_tree_zones.cc.

◆ operator<<() [2/4]

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

Definition at line 527 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 353 of file node_socket_value.cc.

◆ operator==()

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

Definition at line 126 of file instances.cc.

◆ orco_coord_layer_ensure()

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

◆ 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 357 of file type_conversions.cc.

References blender::math::to_euler().

◆ quaternion_to_float4x4()

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

Definition at line 362 of file type_conversions.cc.

References blender::math::from_rotation().

◆ 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 69 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 3951 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_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()

static ImplicitSharingPtrAndData blender::bke::save_shared_attribute ( const GAttributeReader & attribute)
static

◆ 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 23 of file curve_to_mesh_convert.cc.

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

Referenced by fill_mesh_topology().

◆ set_rest_position()

static void blender::bke::set_rest_position ( Mesh & mesh)
static

Definition at line 290 of file mesh_data_update.cc.

References Point.

Referenced by editbmesh_calc_modifiers(), and mesh_calc_modifiers().

◆ set_transform_position()

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

Definition at line 520 of file instances.cc.

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

std::optional< eCustomDataType > blender::bke::socket_type_to_custom_data_type ( eNodeSocketDatatype 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 37 of file node_socket_value.cc.

References blender::is_same_any_v, is_single_or_field_or_grid_v, SOCK_BOOLEAN, SOCK_FLOAT, SOCK_INT, SOCK_MATRIX, SOCK_RGBA, SOCK_ROTATION, SOCK_STRING, and SOCK_VECTOR.

◆ tag_component_curve_types_changed()

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

◆ tag_component_normals_changed()

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

◆ tag_component_positions_changed() [1/3]

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

◆ tag_component_positions_changed() [2/3]

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

◆ tag_component_positions_changed() [3/3]

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

Definition at line 122 of file geometry_component_pointcloud.cc.

◆ tag_component_radii_changed()

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

◆ tag_component_radius_changed()

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

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

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

◆ transform_normals()

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

◆ transform_positions()

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

Definition at line 1095 of file curves_geometry.cc.

References blender::threading::parallel_for().

◆ translate_positions()

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

Definition at line 1086 of file curves_geometry.cc.

References blender::threading::parallel_for().

◆ 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

Some fields reference attributes directly. When the referenced attribute has the requested type and domain, use implicit sharing to avoid duplication when creating the captured attribute.

Definition at line 765 of file geometry_fields.cc.

References attribute_kind_matches(), cpp_type_to_custom_data_type(), init(), and try_get_field_direct_attribute_id().

Referenced by try_capture_fields_on_geometry().

◆ 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 485 of file BKE_geometry_fields.hh.

References selection, and 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 471 of file BKE_geometry_fields.hh.

References try_capture_fields_on_geometry().

◆ try_capture_field_on_geometry() [3/3]

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

◆ try_capture_fields_on_geometry() [1/3]

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

◆ try_capture_fields_on_geometry() [2/3]

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

◆ try_capture_fields_on_geometry() [3/3]

◆ try_detect_field_domain()

std::optional< AttrDomain > blender::bke::try_detect_field_domain ( const GeometryComponent & component,
const fn::GField & field )

◆ 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 97 of file mesh_runtime.cc.

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

◆ unique_identifier_check()

static bool blender::bke::unique_identifier_check ( void * arg,
const char * identifier )
static

Definition at line 1873 of file node.cc.

References LISTBASE_FOREACH, and STREQ.

Referenced by make_socket().

◆ unique_socket_template_identifier()

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

◆ unique_socket_template_identifier_check()

static bool blender::bke::unique_socket_template_identifier_check ( void * arg,
const char * name )
static

Definition at line 4537 of file node.cc.

References STREQ.

Referenced by unique_socket_template_identifier().

◆ update_socket_declarations()

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

Definition at line 3941 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

Definition at line 18 of file node_tree_zones.cc.

References update_zone_depths().

Referenced by discover_tree_zones(), and update_zone_depths().

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

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

◆ write_node_socket_default_value()

◆ write_sharp_bezier_edges()

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

◆ ATTR_CURVE_TYPE

const std::string blender::bke::ATTR_CURVE_TYPE = "curve_type"
static

◆ ATTR_CYCLIC

const std::string blender::bke::ATTR_CYCLIC = "cyclic"
static

◆ ATTR_HANDLE_POSITION_LEFT

◆ ATTR_HANDLE_POSITION_RIGHT

◆ ATTR_HANDLE_TYPE_LEFT

◆ ATTR_HANDLE_TYPE_RIGHT

◆ ATTR_NORMAL_MODE

const std::string blender::bke::ATTR_NORMAL_MODE = "normal_mode"
static

◆ ATTR_NURBS_KNOTS_MODE

const std::string blender::bke::ATTR_NURBS_KNOTS_MODE = "knots_mode"
static

◆ ATTR_NURBS_ORDER

const std::string blender::bke::ATTR_NURBS_ORDER = "nurbs_order"
static

◆ ATTR_NURBS_WEIGHT

const std::string blender::bke::ATTR_NURBS_WEIGHT = "nurbs_weight"
static

◆ ATTR_POSITION

const std::string blender::bke::ATTR_POSITION = "position"
static

Definition at line 38 of file curves_geometry.cc.

◆ ATTR_RADIUS

const std::string blender::bke::ATTR_RADIUS = "radius"
static

◆ ATTR_RESOLUTION

const std::string blender::bke::ATTR_RESOLUTION = "resolution"
static

◆ ATTR_SURFACE_UV_COORDINATE

const std::string blender::bke::ATTR_SURFACE_UV_COORDINATE = "surface_uv_coordinate"
static

◆ ATTR_TILT

const std::string blender::bke::ATTR_TILT = "tilt"
static

◆ 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 25 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 108 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}

◆ nodesockettypes_hash

GHash* blender::bke::nodesockettypes_hash = nullptr
static

◆ NodeSocketTypeUndefined

◆ nodetreetypes_hash

GHash* blender::bke::nodetreetypes_hash = nullptr
static

◆ NodeTreeTypeUndefined

bNodeTreeType blender::bke::NodeTreeTypeUndefined

Definition at line 134 of file node.cc.

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

◆ nodetypes_alias_hash

GHash* blender::bke::nodetypes_alias_hash = nullptr
static

◆ nodetypes_hash

GHash* blender::bke::nodetypes_hash = nullptr
static

◆ NodeTypeUndefined