Blender  V3.3
Classes | Namespaces | Macros | Functions | Variables
node.cc File Reference
#include "CLG_log.h"
#include "MEM_guardedalloc.h"
#include <climits>
#include <cstddef>
#include <cstdlib>
#include <cstring>
#include "DNA_action_types.h"
#include "DNA_anim_types.h"
#include "DNA_collection_types.h"
#include "DNA_gpencil_types.h"
#include "DNA_light_types.h"
#include "DNA_linestyle_types.h"
#include "DNA_material_types.h"
#include "DNA_modifier_types.h"
#include "DNA_node_types.h"
#include "DNA_scene_types.h"
#include "DNA_simulation_types.h"
#include "DNA_texture_types.h"
#include "DNA_world_types.h"
#include "BLI_color.hh"
#include "BLI_ghash.h"
#include "BLI_listbase.h"
#include "BLI_map.hh"
#include "BLI_path_util.h"
#include "BLI_set.hh"
#include "BLI_stack.hh"
#include "BLI_string.h"
#include "BLI_string_utils.h"
#include "BLI_threads.h"
#include "BLI_utildefines.h"
#include "BLI_vector_set.hh"
#include "BLT_translation.h"
#include "BKE_anim_data.h"
#include "BKE_animsys.h"
#include "BKE_bpath.h"
#include "BKE_colortools.h"
#include "BKE_context.h"
#include "BKE_cryptomatte.h"
#include "BKE_global.h"
#include "BKE_icons.h"
#include "BKE_idprop.h"
#include "BKE_idtype.h"
#include "BKE_image_format.h"
#include "BKE_lib_id.h"
#include "BKE_lib_query.h"
#include "BKE_main.h"
#include "BKE_node.h"
#include "BKE_node_runtime.hh"
#include "BKE_node_tree_update.h"
#include "RNA_access.h"
#include "RNA_define.h"
#include "RNA_prototypes.h"
#include "NOD_common.h"
#include "NOD_composite.h"
#include "NOD_function.h"
#include "NOD_geometry.h"
#include "NOD_node_declaration.hh"
#include "NOD_node_tree_ref.hh"
#include "NOD_shader.h"
#include "NOD_socket.h"
#include "NOD_texture.h"
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_build.h"
#include "BLO_read_write.h"
#include "MOD_nodes.h"
#include "NOD_static_types.h"

Go to the source code of this file.

Classes

struct  bNodeClipboardExtraInfo
 
struct  bNodeClipboard
 
struct  SocketTemplateIdentifierCallbackData
 

Namespaces

 blender
 
 blender::bke
 

Macros

#define DNA_DEPRECATED_ALLOW
 
#define NODE_DEFAULT_MAX_WIDTH   700
 
#define USE_NODE_CB_VALIDATE
 
#define DefNode(Category, ID, DefFunc, EnumName, StructName, UIName, UIDesc)
 

Functions

static void ntree_set_typeinfo (bNodeTree *ntree, bNodeTreeType *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 void node_free_node (bNodeTree *ntree, bNode *node)
 
static void node_socket_interface_free (bNodeTree *UNUSED(ntree), bNodeSocket *sock, const bool do_id_user)
 
static void nodeMuteRerouteOutputLinks (struct bNodeTree *ntree, struct bNode *node, const bool mute)
 
static void ntree_init_data (ID *id)
 
static void ntree_copy_data (Main *UNUSED(bmain), ID *id_dst, const ID *id_src, const int flag)
 
static void ntree_free_data (ID *id)
 
static void library_foreach_node_socket (LibraryForeachIDData *data, bNodeSocket *sock)
 
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 IDnode_owner_get (Main *bmain, ID *id, ID *owner_id_hint)
 
static void write_node_socket_default_value (BlendWriter *writer, bNodeSocket *sock)
 
static void write_node_socket (BlendWriter *writer, bNodeSocket *sock)
 
static void write_node_socket_interface (BlendWriter *writer, bNodeSocket *sock)
 
void ntreeBlendWrite (BlendWriter *writer, bNodeTree *ntree)
 
static void ntree_blend_write (BlendWriter *writer, ID *id, const void *id_address)
 
static void direct_link_node_socket (BlendDataReader *reader, bNodeSocket *sock)
 
void ntreeBlendReadData (BlendDataReader *reader, bNodeTree *ntree)
 
static void ntree_blend_read_data (BlendDataReader *reader, ID *id)
 
static void lib_link_node_socket (BlendLibReader *reader, Library *lib, bNodeSocket *sock)
 
static void lib_link_node_sockets (BlendLibReader *reader, Library *lib, ListBase *sockets)
 
void ntreeBlendReadLib (struct BlendLibReader *reader, struct bNodeTree *ntree)
 
static void ntree_blend_read_lib (BlendLibReader *reader, ID *id)
 
static void expand_node_socket (BlendExpander *expander, bNodeSocket *sock)
 
static void expand_node_sockets (BlendExpander *expander, ListBase *sockets)
 
void ntreeBlendReadExpand (BlendExpander *expander, bNodeTree *ntree)
 
static void ntree_blend_read_expand (BlendExpander *expander, ID *id)
 
static void node_add_sockets_from_type (bNodeTree *ntree, bNode *node, bNodeType *ntype)
 
static void node_init (const struct bContext *C, bNodeTree *ntree, bNode *node)
 
static void node_set_typeinfo (const struct bContext *C, bNodeTree *ntree, bNode *node, bNodeType *typeinfo)
 
static void node_socket_set_typeinfo (bNodeTree *ntree, bNodeSocket *sock, bNodeSocketType *typeinfo)
 
static void update_typeinfo (Main *bmain, const struct bContext *C, bNodeTreeType *treetype, bNodeType *nodetype, bNodeSocketType *socktype, bool unregister)
 
void ntreeSetTypes (const struct bContext *C, bNodeTree *ntree)
 
bNodeTreeTypentreeTypeFind (const char *idname)
 
void ntreeTypeAdd (bNodeTreeType *nt)
 
static void ntree_free_type (void *treetype_v)
 
void ntreeTypeFreeLink (const bNodeTreeType *nt)
 
bool ntreeIsRegistered (bNodeTree *ntree)
 
GHashIteratorntreeTypeGetIterator ()
 
bNodeTypenodeTypeFind (const char *idname)
 
static void node_free_type (void *nodetype_v)
 
void nodeRegisterType (bNodeType *nt)
 
void nodeUnregisterType (bNodeType *nt)
 
bool nodeTypeUndefined (const bNode *node)
 
GHashIteratornodeTypeGetIterator ()
 
bNodeSocketTypenodeSocketTypeFind (const char *idname)
 
static void node_free_socket_type (void *socktype_v)
 
void nodeRegisterSocketType (bNodeSocketType *st)
 
void nodeUnregisterSocketType (bNodeSocketType *st)
 
bool nodeSocketIsRegistered (bNodeSocket *sock)
 
GHashIteratornodeSocketTypeGetIterator ()
 
const char * nodeSocketTypeLabel (const bNodeSocketType *stype)
 
struct bNodeSocketnodeFindSocket (const bNode *node, eNodeSocketInOut in_out, const char *identifier)
 
bNodeSocketblender::bke::node_find_enabled_socket (bNode &node, const eNodeSocketInOut in_out, const StringRef name)
 
bNodeSocketblender::bke::node_find_enabled_input_socket (bNode &node, StringRef name)
 
bNodeSocketblender::bke::node_find_enabled_output_socket (bNode &node, StringRef name)
 
static bool unique_identifier_check (void *arg, const char *identifier)
 
static bNodeSocketmake_socket (bNodeTree *ntree, bNode *UNUSED(node), int in_out, ListBase *lb, const char *idname, const char *identifier, const char *name)
 
static void socket_id_user_increment (bNodeSocket *sock)
 
static bool socket_id_user_decrement (bNodeSocket *sock)
 
void nodeModifySocketType (bNodeTree *ntree, bNode *UNUSED(node), bNodeSocket *sock, const char *idname)
 
void nodeModifySocketTypeStatic (bNodeTree *ntree, bNode *node, bNodeSocket *sock, int type, int subtype)
 
bNodeSocketnodeAddSocket (bNodeTree *ntree, bNode *node, eNodeSocketInOut in_out, const char *idname, const char *identifier, const char *name)
 
bool nodeIsStaticSocketType (const struct bNodeSocketType *stype)
 
const char * nodeStaticSocketType (int type, int subtype)
 
const char * nodeStaticSocketInterfaceType (int type, int subtype)
 
const char * nodeStaticSocketLabel (int type, int UNUSED(subtype))
 
bNodeSocketnodeAddStaticSocket (bNodeTree *ntree, bNode *node, eNodeSocketInOut in_out, int type, int subtype, const char *identifier, const char *name)
 
static void node_socket_free (bNodeSocket *sock, const bool do_id_user)
 
void nodeRemoveSocket (bNodeTree *ntree, bNode *node, bNodeSocket *sock)
 
void nodeRemoveSocketEx (struct bNodeTree *ntree, struct bNode *node, struct bNodeSocket *sock, bool do_id_user)
 
void nodeRemoveAllSockets (bNodeTree *ntree, bNode *node)
 
bNodenodeFindNodebyName (bNodeTree *ntree, const char *name)
 
bool nodeFindNode (bNodeTree *ntree, bNodeSocket *sock, bNode **r_node, int *r_sockindex)
 
bNodenodeFindRootParent (bNode *node)
 
bool nodeIsChildOf (const bNode *parent, const bNode *child)
 
void nodeChainIter (const bNodeTree *ntree, const bNode *node_start, bool(*callback)(bNode *, bNode *, void *, const bool), void *userdata, const bool reversed)
 
static void iter_backwards_ex (const bNodeTree *ntree, const bNode *node_start, bool(*callback)(bNode *, bNode *, void *), void *userdata, char recursion_mask)
 
void nodeChainIterBackwards (const bNodeTree *ntree, const bNode *node_start, bool(*callback)(bNode *, bNode *, void *), void *userdata, int recursion_lvl)
 
void nodeParentsIter (bNode *node, bool(*callback)(bNode *, void *), void *userdata)
 
void nodeUniqueName (bNodeTree *ntree, bNode *node)
 
bNodenodeAddNode (const struct bContext *C, bNodeTree *ntree, const char *idname)
 
bNodenodeAddStaticNode (const struct bContext *C, bNodeTree *ntree, int type)
 
bNodeblender::bke::node_copy_with_mapping (bNodeTree *dst_tree, const bNode &node_src, const int flag, const bool unique_name, Map< const bNodeSocket *, bNodeSocket * > &socket_map)
 
bNodeblender::bke::node_copy (bNodeTree *dst_tree, const bNode &src_node, const int flag, const bool unique_name)
 
static int node_count_links (const bNodeTree *ntree, const bNodeSocket *socket)
 
bNodeLinknodeAddLink (bNodeTree *ntree, bNode *fromnode, bNodeSocket *fromsock, bNode *tonode, bNodeSocket *tosock)
 
void nodeRemLink (bNodeTree *ntree, bNodeLink *link)
 
static bool nodeMuteFromSocketLinks (const bNodeTree *ntree, const bNodeSocket *sock)
 
static void nodeMuteLink (bNodeLink *link)
 
static void nodeUnMuteLink (bNodeLink *link)
 
static void nodeMuteRerouteInputLinks (bNodeTree *ntree, bNode *node, const bool mute)
 
void nodeMuteLinkToggle (bNodeTree *ntree, bNodeLink *link)
 
void nodeRemSocketLinks (bNodeTree *ntree, bNodeSocket *sock)
 
bool nodeLinkIsHidden (const bNodeLink *link)
 
bool nodeLinkIsSelected (const bNodeLink *link)
 
static void adjust_multi_input_indices_after_removed_link (bNodeTree *ntree, bNodeSocket *sock, int deleted_index)
 
void nodeInternalRelink (bNodeTree *ntree, bNode *node)
 
void nodeToView (const bNode *node, float x, float y, float *rx, float *ry)
 
void nodeFromView (const bNode *node, float x, float y, float *rx, float *ry)
 
bool nodeAttachNodeCheck (const bNode *node, const bNode *parent)
 
void nodeAttachNode (bNode *node, bNode *parent)
 
void nodeDetachNode (struct bNode *node)
 
void nodePositionRelative (bNode *from_node, bNode *to_node, bNodeSocket *from_sock, bNodeSocket *to_sock)
 
void nodePositionPropagate (bNode *node)
 
bNodeTreentreeAddTree (Main *bmain, const char *name, const char *idname)
 
bNodeTreentreeCopyTree_ex (const bNodeTree *ntree, Main *bmain, const bool do_id_user)
 
bNodeTreentreeCopyTree (Main *bmain, const bNodeTree *ntree)
 
bool BKE_node_preview_used (const bNode *node)
 
bNodePreviewBKE_node_preview_verify (bNodeInstanceHash *previews, bNodeInstanceKey key, const int xsize, const int ysize, const bool create)
 
bNodePreviewBKE_node_preview_copy (bNodePreview *preview)
 
void BKE_node_preview_free (bNodePreview *preview)
 
static void node_preview_init_tree_recursive (bNodeInstanceHash *previews, bNodeTree *ntree, bNodeInstanceKey parent_key, const int xsize, const int ysize)
 
void BKE_node_preview_init_tree (bNodeTree *ntree, int xsize, int ysize)
 
static void node_preview_tag_used_recursive (bNodeInstanceHash *previews, bNodeTree *ntree, bNodeInstanceKey parent_key)
 
void BKE_node_preview_remove_unused (bNodeTree *ntree)
 
void BKE_node_preview_clear (bNodePreview *preview)
 
void BKE_node_preview_clear_tree (bNodeTree *ntree)
 
void BKE_node_preview_merge_tree (bNodeTree *to_ntree, bNodeTree *from_ntree, bool remove_old)
 
void nodeUnlinkNode (bNodeTree *ntree, bNode *node)
 
static void node_unlink_attached (bNodeTree *ntree, bNode *parent)
 
void ntreeFreeLocalNode (bNodeTree *ntree, bNode *node)
 
void nodeRemoveNode (Main *bmain, bNodeTree *ntree, bNode *node, bool do_id_user)
 
void ntreeFreeTree (bNodeTree *ntree)
 
void ntreeFreeEmbeddedTree (bNodeTree *ntree)
 
void ntreeFreeLocalTree (bNodeTree *ntree)
 
void ntreeFreeCache (bNodeTree *ntree)
 
void ntreeSetOutput (bNodeTree *ntree)
 
bNodeTree ** BKE_ntree_ptr_from_id (ID *id)
 
bNodeTreentreeFromID (ID *id)
 
void ntreeNodeFlagSet (const bNodeTree *ntree, const int flag, const bool enable)
 
bNodeTreentreeLocalize (bNodeTree *ntree)
 
void ntreeLocalMerge (Main *bmain, bNodeTree *localtree, bNodeTree *ntree)
 
static bNodeSocketmake_socket_interface (bNodeTree *ntree, eNodeSocketInOut in_out, const char *idname, const char *name)
 
bNodeSocketntreeFindSocketInterface (bNodeTree *ntree, eNodeSocketInOut in_out, const char *identifier)
 
bNodeSocketntreeAddSocketInterface (bNodeTree *ntree, eNodeSocketInOut in_out, const char *idname, const char *name)
 
bNodeSocketntreeInsertSocketInterface (bNodeTree *ntree, eNodeSocketInOut in_out, const char *idname, bNodeSocket *next_sock, const char *name)
 
struct bNodeSocketntreeAddSocketInterfaceFromSocket (bNodeTree *ntree, bNode *from_node, bNodeSocket *from_sock)
 
struct bNodeSocketntreeInsertSocketInterfaceFromSocket (bNodeTree *ntree, bNodeSocket *next_sock, bNode *from_node, bNodeSocket *from_sock)
 
void ntreeRemoveSocketInterface (bNodeTree *ntree, bNodeSocket *sock)
 
static void ntree_interface_identifier_base (bNodeTree *ntree, char *base)
 
static bool ntree_interface_unique_identifier_check (void *UNUSED(data), const char *identifier)
 
static void ntree_interface_identifier (bNodeTree *ntree, const char *base, char *identifier, int maxlen, char *name, char *description)
 
static void ntree_interface_type_create (bNodeTree *ntree)
 
StructRNAntreeInterfaceTypeGet (bNodeTree *ntree, bool create)
 
void ntreeInterfaceTypeFree (bNodeTree *ntree)
 
void ntreeInterfaceTypeUpdate (bNodeTree *ntree)
 
bNodentreeFindType (const bNodeTree *ntree, int type)
 
bool ntreeHasTree (const bNodeTree *ntree, const bNodeTree *lookup)
 
bNodeLinknodeFindLink (bNodeTree *ntree, const bNodeSocket *from, const bNodeSocket *to)
 
int nodeCountSocketLinks (const bNodeTree *ntree, const bNodeSocket *sock)
 
bNodenodeGetActive (bNodeTree *ntree)
 
void nodeSetSelected (bNode *node, bool select)
 
void nodeClearActive (bNodeTree *ntree)
 
void nodeSetActive (bNodeTree *ntree, bNode *node)
 
int nodeSocketIsHidden (const bNodeSocket *sock)
 
void nodeSetSocketAvailability (bNodeTree *ntree, bNodeSocket *sock, bool is_available)
 
int nodeSocketLinkLimit (const bNodeSocket *sock)
 
static void update_socket_declarations (ListBase *sockets, Span< blender::nodes::SocketDeclarationPtr > declarations)
 
void nodeSocketDeclarationsUpdate (bNode *node)
 
bool nodeDeclarationEnsureOnOutdatedNode (bNodeTree *UNUSED(ntree), bNode *node)
 
bool nodeDeclarationEnsure (bNodeTree *ntree, bNode *node)
 
void BKE_node_clipboard_init (const struct bNodeTree *ntree)
 
void BKE_node_clipboard_clear ()
 
bool BKE_node_clipboard_validate ()
 
void BKE_node_clipboard_add_node (bNode *node)
 
void BKE_node_clipboard_add_link (bNodeLink *link)
 
const ListBaseBKE_node_clipboard_get_nodes ()
 
const ListBaseBKE_node_clipboard_get_links ()
 
int BKE_node_clipboard_get_type ()
 
void BKE_node_clipboard_free ()
 
static bNodeInstanceKey node_hash_int_str (bNodeInstanceKey hash, const char *str)
 
bNodeInstanceKey BKE_node_instance_key (bNodeInstanceKey parent_key, const bNodeTree *ntree, const bNode *node)
 
static unsigned int node_instance_hash_key (const void *key)
 
static bool node_instance_hash_key_cmp (const void *a, const void *b)
 
bNodeInstanceHashBKE_node_instance_hash_new (const char *info)
 
void BKE_node_instance_hash_free (bNodeInstanceHash *hash, bNodeInstanceValueFP valfreefp)
 
void BKE_node_instance_hash_insert (bNodeInstanceHash *hash, bNodeInstanceKey key, void *value)
 
voidBKE_node_instance_hash_lookup (bNodeInstanceHash *hash, bNodeInstanceKey key)
 
int BKE_node_instance_hash_remove (bNodeInstanceHash *hash, bNodeInstanceKey key, bNodeInstanceValueFP valfreefp)
 
void BKE_node_instance_hash_clear (bNodeInstanceHash *hash, bNodeInstanceValueFP valfreefp)
 
voidBKE_node_instance_hash_pop (bNodeInstanceHash *hash, bNodeInstanceKey key)
 
int BKE_node_instance_hash_haskey (bNodeInstanceHash *hash, bNodeInstanceKey key)
 
int BKE_node_instance_hash_size (bNodeInstanceHash *hash)
 
void BKE_node_instance_hash_clear_tags (bNodeInstanceHash *hash)
 
void BKE_node_instance_hash_tag (bNodeInstanceHash *UNUSED(hash), void *value)
 
bool BKE_node_instance_hash_tag_key (bNodeInstanceHash *hash, bNodeInstanceKey key)
 
void BKE_node_instance_hash_remove_untagged (bNodeInstanceHash *hash, bNodeInstanceValueFP valfreefp)
 
static int node_get_deplist_recurs (bNodeTree *ntree, bNode *node, bNode ***nsort)
 
void ntreeGetDependencyList (struct bNodeTree *ntree, struct bNode ***r_deplist, int *r_deplist_len)
 
void ntreeUpdateNodeLevels (bNodeTree *ntree)
 
static blender::Set< int > get_known_node_types_set ()
 
static bool can_read_node_type (const int type)
 
static void node_replace_undefined_types (bNode *node)
 
void ntreeUpdateAllNew (Main *main)
 
void ntreeUpdateAllUsers (Main *main, ID *id)
 
void nodeLabel (const bNodeTree *ntree, const bNode *node, char *label, int maxlen)
 
const char * nodeSocketLabel (const bNodeSocket *sock)
 
static void node_type_base_defaults (bNodeType *ntype)
 
static bool node_poll_default (bNodeType *UNUSED(ntype), bNodeTree *UNUSED(ntree), const char **UNUSED(disabled_hint))
 
static bool node_poll_instance_default (bNode *node, bNodeTree *ntree, const char **disabled_hint)
 
void node_type_base (bNodeType *ntype, int type, const char *name, short nclass)
 
void node_type_base_custom (bNodeType *ntype, const char *idname, const char *name, short nclass)
 
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[], char delim)
 
void node_type_socket_templates (struct bNodeType *ntype, struct bNodeSocketTemplate *inputs, struct bNodeSocketTemplate *outputs)
 
void node_type_init (struct bNodeType *ntype, void(*initfunc)(struct bNodeTree *ntree, struct bNode *node))
 
void node_type_size (struct bNodeType *ntype, int width, int minwidth, int maxwidth)
 
void node_type_size_preset (struct bNodeType *ntype, eNodeSizePreset size)
 
void node_type_storage (bNodeType *ntype, const char *storagename, void(*freefunc)(struct bNode *node), void(*copyfunc)(struct bNodeTree *dest_ntree, struct bNode *dest_node, const struct bNode *src_node))
 
void node_type_update (struct bNodeType *ntype, void(*updatefunc)(struct bNodeTree *ntree, struct bNode *node))
 
void node_type_group_update (struct bNodeType *ntype, void(*group_update_func)(struct bNodeTree *ntree, struct bNode *node))
 
void node_type_exec (struct bNodeType *ntype, NodeInitExecFunction init_exec_fn, NodeFreeExecFunction free_exec_fn, NodeExecFunction exec_fn)
 
void node_type_gpu (struct bNodeType *ntype, NodeGPUExecFunction gpu_fn)
 
static bool node_undefined_poll (bNodeType *UNUSED(ntype), bNodeTree *UNUSED(nodetree), const char **UNUSED(r_disabled_hint))
 
static void register_undefined_types ()
 
static void registerCompositNodes ()
 
static void registerShaderNodes ()
 
static void registerTextureNodes ()
 
static void registerGeometryNodes ()
 
static void registerFunctionNodes ()
 
void BKE_node_system_init ()
 
void BKE_node_system_exit ()
 
void BKE_node_tree_iter_init (struct NodeTreeIterStore *ntreeiter, struct Main *bmain)
 
bool BKE_node_tree_iter_step (struct NodeTreeIterStore *ntreeiter, bNodeTree **r_nodetree, struct ID **r_id)
 
void BKE_nodetree_remove_layer_n (bNodeTree *ntree, Scene *scene, const int layer_index)
 

Variables

static bNodeTreeType NodeTreeTypeUndefined
 
bNodeType NodeTypeUndefined
 
bNodeSocketType NodeSocketTypeUndefined
 
static CLG_LogRef LOG = {"bke.node"}
 
IDTypeInfo IDType_ID_NT
 
static GHashnodetreetypes_hash = nullptr
 
static GHashnodetypes_hash = nullptr
 
static GHashnodesockettypes_hash = nullptr
 
static bNodeClipboard node_clipboard = {{nullptr}}
 
const bNodeInstanceKey NODE_INSTANCE_KEY_BASE = {5381}
 
const bNodeInstanceKey NODE_INSTANCE_KEY_NONE = {0}
 

Macro Definition Documentation

◆ DefNode

#define DefNode (   Category,
  ID,
  DefFunc,
  EnumName,
  StructName,
  UIName,
  UIDesc 
)
Value:
case ID: \
BLI_strncpy(ntype->idname, #Category #StructName, sizeof(ntype->idname)); \
ntype->rna_ext.srna = RNA_struct_find(#Category #StructName); \
BLI_assert(ntype->rna_ext.srna != nullptr); \
RNA_struct_blender_type_set(ntype->rna_ext.srna, ntype); \
break;
struct ID ID
StructRNA * RNA_struct_find(const char *identifier)
Definition: rna_access.c:581

◆ DNA_DEPRECATED_ALLOW

#define DNA_DEPRECATED_ALLOW

Definition at line 18 of file node.cc.

◆ NODE_DEFAULT_MAX_WIDTH

#define NODE_DEFAULT_MAX_WIDTH   700

Definition at line 87 of file node.cc.

◆ USE_NODE_CB_VALIDATE

#define USE_NODE_CB_VALIDATE

Definition at line 3742 of file node.cc.

Function Documentation

◆ adjust_multi_input_indices_after_removed_link()

static void adjust_multi_input_indices_after_removed_link ( bNodeTree ntree,
bNodeSocket sock,
int  deleted_index 
)
static

Definition at line 2476 of file node.cc.

References bNodeTree::links, LISTBASE_FOREACH, and ntree.

Referenced by nodeInternalRelink(), and nodeUnlinkNode().

◆ BKE_node_clipboard_add_link()

void BKE_node_clipboard_add_link ( bNodeLink link)

◆ BKE_node_clipboard_add_node()

void BKE_node_clipboard_add_node ( bNode node)

◆ BKE_node_clipboard_clear()

void BKE_node_clipboard_clear ( void  )

◆ BKE_node_clipboard_free()

void BKE_node_clipboard_free ( void  )

Definition at line 3888 of file node.cc.

References BKE_node_clipboard_clear(), and BKE_node_clipboard_validate().

Referenced by WM_exit_ex().

◆ BKE_node_clipboard_get_links()

const ListBase* BKE_node_clipboard_get_links ( void  )

Definition at line 3878 of file node.cc.

References bNodeClipboard::links, and node_clipboard.

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

◆ BKE_node_clipboard_get_nodes()

const ListBase* BKE_node_clipboard_get_nodes ( void  )

Definition at line 3873 of file node.cc.

References node_clipboard, and bNodeClipboard::nodes.

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

◆ BKE_node_clipboard_get_type()

int BKE_node_clipboard_get_type ( void  )

Definition at line 3883 of file node.cc.

References node_clipboard, and bNodeClipboard::type.

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

◆ BKE_node_clipboard_init()

void BKE_node_clipboard_init ( const struct bNodeTree ntree)

Node Clipboard.

Definition at line 3773 of file node.cc.

References node_clipboard, ntree, bNodeClipboard::type, and bNodeTree::type.

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

◆ BKE_node_clipboard_validate()

bool BKE_node_clipboard_validate ( void  )

◆ BKE_node_instance_hash_clear()

void BKE_node_instance_hash_clear ( bNodeInstanceHash hash,
bNodeInstanceValueFP  valfreefp 
)

Definition at line 3977 of file node.cc.

References BLI_ghash_clear(), and hash.

◆ BKE_node_instance_hash_clear_tags()

void BKE_node_instance_hash_clear_tags ( bNodeInstanceHash hash)

◆ BKE_node_instance_hash_free()

void BKE_node_instance_hash_free ( bNodeInstanceHash hash,
bNodeInstanceValueFP  valfreefp 
)

Definition at line 3951 of file node.cc.

References BLI_ghash_free(), hash, and MEM_freeN.

Referenced by BKE_node_preview_merge_tree(), and ntree_free_data().

◆ BKE_node_instance_hash_haskey()

int BKE_node_instance_hash_haskey ( bNodeInstanceHash hash,
bNodeInstanceKey  key 
)

Definition at line 3987 of file node.cc.

References BLI_ghash_haskey(), and hash.

◆ BKE_node_instance_hash_insert()

void BKE_node_instance_hash_insert ( bNodeInstanceHash hash,
bNodeInstanceKey  key,
void value 
)

◆ BKE_node_instance_hash_lookup()

void* BKE_node_instance_hash_lookup ( bNodeInstanceHash hash,
bNodeInstanceKey  key 
)

◆ BKE_node_instance_hash_new()

bNodeInstanceHash* BKE_node_instance_hash_new ( const char *  info)

◆ BKE_node_instance_hash_pop()

void* BKE_node_instance_hash_pop ( bNodeInstanceHash hash,
bNodeInstanceKey  key 
)

Definition at line 3982 of file node.cc.

References BLI_ghash_popkey(), and hash.

◆ BKE_node_instance_hash_remove()

int BKE_node_instance_hash_remove ( bNodeInstanceHash hash,
bNodeInstanceKey  key,
bNodeInstanceValueFP  valfreefp 
)

Definition at line 3970 of file node.cc.

References BLI_ghash_remove(), and hash.

Referenced by BKE_node_instance_hash_remove_untagged(), and BKE_node_preview_merge_tree().

◆ BKE_node_instance_hash_remove_untagged()

void BKE_node_instance_hash_remove_untagged ( bNodeInstanceHash hash,
bNodeInstanceValueFP  valfreefp 
)

◆ BKE_node_instance_hash_size()

int BKE_node_instance_hash_size ( bNodeInstanceHash hash)

Definition at line 3992 of file node.cc.

References BLI_ghash_len(), and hash.

Referenced by BKE_node_instance_hash_remove_untagged().

◆ BKE_node_instance_hash_tag()

void BKE_node_instance_hash_tag ( bNodeInstanceHash UNUSEDhash,
void value 
)

Definition at line 4009 of file node.cc.

References bNodeInstanceHashEntry::tag.

◆ BKE_node_instance_hash_tag_key()

bool BKE_node_instance_hash_tag_key ( bNodeInstanceHash hash,
bNodeInstanceKey  key 
)

◆ BKE_node_instance_key()

bNodeInstanceKey BKE_node_instance_key ( bNodeInstanceKey  parent_key,
const bNodeTree ntree,
const bNode node 
)

◆ BKE_node_preview_clear()

void BKE_node_preview_clear ( bNodePreview preview)

Definition at line 2845 of file node.cc.

References MEM_allocN_len, and usdtokens::preview().

Referenced by BKE_node_preview_clear_tree().

◆ BKE_node_preview_clear_tree()

void BKE_node_preview_clear_tree ( bNodeTree ntree)

◆ BKE_node_preview_copy()

bNodePreview* BKE_node_preview_copy ( bNodePreview preview)

Definition at line 2762 of file node.cc.

References MEM_dupallocN, usdtokens::preview(), and bNodePreview::rect.

Referenced by ntree_copy_data().

◆ BKE_node_preview_free()

void BKE_node_preview_free ( bNodePreview preview)

◆ BKE_node_preview_init_tree()

void BKE_node_preview_init_tree ( bNodeTree ntree,
int  xsize,
int  ysize 
)

◆ BKE_node_preview_merge_tree()

void BKE_node_preview_merge_tree ( bNodeTree to_ntree,
bNodeTree from_ntree,
bool  remove_old 
)

◆ BKE_node_preview_remove_unused()

void BKE_node_preview_remove_unused ( bNodeTree ntree)

◆ BKE_node_preview_used()

bool BKE_node_preview_used ( const bNode node)

Definition at line 2715 of file node.cc.

References node, and NODE_PREVIEW.

Referenced by node_preview_init_tree_recursive(), and node_preview_tag_used_recursive().

◆ BKE_node_preview_verify()

bNodePreview* BKE_node_preview_verify ( bNodeInstanceHash previews,
bNodeInstanceKey  key,
const int  xsize,
const int  ysize,
const bool  create 
)

◆ BKE_node_system_exit()

void BKE_node_system_exit ( void  )

◆ BKE_node_system_init()

void BKE_node_system_init ( void  )

◆ BKE_node_tree_iter_init()

void BKE_node_tree_iter_init ( struct NodeTreeIterStore ntreeiter,
struct Main bmain 
)

◆ BKE_node_tree_iter_step()

bool BKE_node_tree_iter_step ( struct NodeTreeIterStore ntreeiter,
bNodeTree **  r_nodetree,
struct ID **  r_id 
)

◆ BKE_nodetree_remove_layer_n()

void BKE_nodetree_remove_layer_n ( bNodeTree ntree,
Scene scene,
const int  layer_index 
)

◆ BKE_ntree_ptr_from_id()

bNodeTree** BKE_ntree_ptr_from_id ( struct 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 ntreeFromID() instead.

Definition at line 3209 of file node.cc.

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

Referenced by blender::deg::DepsgraphNodeBuilder::build_animation_images(), blender::deg::DepsgraphRelationBuilder::build_animation_images(), direct_link_id_embedded_id(), and ntreeFromID().

◆ can_read_node_type()

static bool can_read_node_type ( const int  type)
static

◆ direct_link_node_socket()

static void direct_link_node_socket ( BlendDataReader reader,
bNodeSocket sock 
)
static

◆ expand_node_socket()

static void expand_node_socket ( BlendExpander expander,
bNodeSocket sock 
)
static

◆ expand_node_sockets()

static void expand_node_sockets ( BlendExpander expander,
ListBase sockets 
)
static

Definition at line 989 of file node.cc.

References expand_node_socket(), and LISTBASE_FOREACH.

Referenced by ntreeBlendReadExpand().

◆ free_localized_node_groups()

static void free_localized_node_groups ( bNodeTree ntree)
static

◆ get_known_node_types_set()

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

Definition at line 4138 of file node.cc.

References NODE_TYPES_BEGIN, NODE_TYPES_END, and result.

Referenced by can_read_node_type().

◆ iter_backwards_ex()

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

◆ lib_link_node_socket()

static void lib_link_node_socket ( BlendLibReader reader,
Library lib,
bNodeSocket sock 
)
static

◆ lib_link_node_sockets()

static void lib_link_node_sockets ( BlendLibReader reader,
Library lib,
ListBase sockets 
)
static

Definition at line 893 of file node.cc.

References lib, lib_link_node_socket(), and LISTBASE_FOREACH.

Referenced by ntreeBlendReadLib().

◆ library_foreach_node_socket()

static void library_foreach_node_socket ( LibraryForeachIDData data,
bNodeSocket sock 
)
static

◆ make_socket()

static bNodeSocket* make_socket ( bNodeTree ntree,
bNode UNUSEDnode,
int  in_out,
ListBase lb,
const char *  idname,
const char *  identifier,
const char *  name 
)
static

◆ make_socket_interface()

static bNodeSocket* make_socket_interface ( bNodeTree ntree,
eNodeSocketInOut  in_out,
const char *  idname,
const char *  name 
)
static

◆ node_add_sockets_from_type()

static void node_add_sockets_from_type ( bNodeTree ntree,
bNode node,
bNodeType ntype 
)
static

◆ node_count_links()

static int node_count_links ( const bNodeTree ntree,
const bNodeSocket socket 
)
static

Definition at line 2285 of file node.cc.

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

Referenced by nodeAddLink().

◆ node_foreach_cache()

static void node_foreach_cache ( ID id,
IDTypeForeachCacheFunctionCallback  function_callback,
void user_data 
)
static

◆ node_foreach_id()

static void node_foreach_id ( ID id,
LibraryForeachIDData data 
)
static

◆ node_foreach_path()

static void node_foreach_path ( ID id,
BPathForeachPathData bpath_data 
)
static

◆ node_free_node()

static void node_free_node ( bNodeTree ntree,
bNode node 
)
static

◆ node_free_socket_type()

static void node_free_socket_type ( void socktype_v)
static

Definition at line 1408 of file node.cc.

References bNodeSocketType::free_self, G_MAIN, and update_typeinfo().

Referenced by BKE_node_system_exit(), and nodeUnregisterSocketType().

◆ node_free_type()

static void node_free_type ( void nodetype_v)
static

◆ node_get_deplist_recurs()

static int node_get_deplist_recurs ( bNodeTree ntree,
bNode node,
bNode ***  nsort 
)
static

◆ node_hash_int_str()

static bNodeInstanceKey node_hash_int_str ( bNodeInstanceKey  hash,
const char *  str 
)
static

Definition at line 3903 of file node.cc.

References Freestyle::c, hash, and str.

Referenced by BKE_node_instance_key().

◆ node_init()

static void node_init ( const struct bContext C,
bNodeTree ntree,
bNode node 
)
static

Definition at line 1082 of file node.cc.

References BLI_assert, BLI_strncpy(), C, DATA_, bNodeType::flag, bNodeType::height, id_us_plus(), bNodeType::initfunc, bNodeType::initfunc_api, node, bNodeTreeType::node_add_init, node_add_sockets_from_type(), NODE_INIT, NODE_MAXSTR, NODE_OPTIONS, NODE_SELECT, NodeTypeUndefined, nodeUniqueName(), ntree, ptr, RNA_pointer_create(), bNodeTree::typeinfo, bNodeType::ui_name, and bNodeType::width.

Referenced by node_set_typeinfo(), register_node_type_geo_accumulate_field(), register_node_type_geo_attribute_capture(), register_node_type_geo_attribute_domain_size(), register_node_type_geo_attribute_statistic(), register_node_type_geo_boolean(), register_node_type_geo_curve_fill(), register_node_type_geo_curve_fillet(), register_node_type_geo_curve_handle_type_selection(), register_node_type_geo_curve_primitive_arc(), register_node_type_geo_curve_primitive_bezier_segment(), register_node_type_geo_curve_primitive_circle(), register_node_type_geo_curve_primitive_line(), register_node_type_geo_curve_primitive_quadrilateral(), register_node_type_geo_curve_resample(), register_node_type_geo_curve_set_handle_type(), register_node_type_geo_curve_spline_type(), register_node_type_geo_curve_to_points(), register_node_type_geo_curve_trim(), register_node_type_geo_delete_geometry(), register_node_type_geo_duplicate_elements(), register_node_type_geo_extrude_mesh(), register_node_type_geo_field_at_index(), register_node_type_geo_image_texture(), register_node_type_geo_input_named_attribute(), register_node_type_geo_interpolate_domain(), register_node_type_geo_merge_by_distance(), register_node_type_geo_mesh_primitive_circle(), register_node_type_geo_mesh_primitive_cone(), register_node_type_geo_mesh_primitive_cylinder(), register_node_type_geo_mesh_primitive_line(), register_node_type_geo_mesh_to_points(), register_node_type_geo_mesh_to_volume(), register_node_type_geo_points_to_volume(), register_node_type_geo_raycast(), register_node_type_geo_scale_elements(), register_node_type_geo_separate_geometry(), register_node_type_geo_set_curve_handles(), register_node_type_geo_store_named_attribute(), register_node_type_geo_string_to_curves(), register_node_type_geo_subdivision_surface(), register_node_type_geo_switch(), register_node_type_geo_transfer_attribute(), register_node_type_geo_uv_unwrap(), register_node_type_geo_viewer(), and register_node_type_geo_volume_to_mesh().

◆ node_instance_hash_key()

static unsigned int node_instance_hash_key ( const void key)
static

Definition at line 3930 of file node.cc.

Referenced by BKE_node_instance_hash_new().

◆ node_instance_hash_key_cmp()

static bool node_instance_hash_key_cmp ( const void a,
const void b 
)
static

Definition at line 3935 of file node.cc.

References Freestyle::a, and usdtokens::b().

Referenced by BKE_node_instance_hash_new().

◆ node_owner_get()

static ID* node_owner_get ( Main bmain,
ID id,
ID owner_id_hint 
)
static

◆ node_poll_default()

static bool node_poll_default ( bNodeType UNUSEDntype,
bNodeTree UNUSEDntree,
const char **  UNUSEDdisabled_hint 
)
static

Definition at line 4264 of file node.cc.

Referenced by node_type_base().

◆ node_poll_instance_default()

static bool node_poll_instance_default ( bNode node,
bNodeTree ntree,
const char **  disabled_hint 
)
static

Definition at line 4272 of file node.cc.

References node, and ntree.

Referenced by node_type_base().

◆ node_preview_init_tree_recursive()

static void node_preview_init_tree_recursive ( bNodeInstanceHash previews,
bNodeTree ntree,
bNodeInstanceKey  parent_key,
const int  xsize,
const int  ysize 
)
static

◆ node_preview_tag_used_recursive()

static void node_preview_tag_used_recursive ( bNodeInstanceHash previews,
bNodeTree ntree,
bNodeInstanceKey  parent_key 
)
static

◆ node_replace_undefined_types()

static void node_replace_undefined_types ( bNode node)
static

Definition at line 4160 of file node.cc.

References BLI_snprintf(), can_read_node_type(), node, NODE_CUSTOM, and NodeTypeUndefined.

Referenced by ntreeUpdateAllNew().

◆ node_set_typeinfo()

static void node_set_typeinfo ( const struct bContext C,
bNodeTree ntree,
bNode node,
bNodeType typeinfo 
)
static

◆ node_socket_copy()

static void node_socket_copy ( bNodeSocket sock_dst,
const bNodeSocket sock_src,
const int  flag 
)
static

◆ node_socket_free()

static void node_socket_free ( bNodeSocket sock,
const bool  do_id_user 
)
static

◆ node_socket_interface_free()

static void node_socket_interface_free ( bNodeTree UNUSEDntree,
bNodeSocket sock,
const bool  do_id_user 
)
static

◆ node_socket_set_typeinfo()

static void node_socket_set_typeinfo ( bNodeTree ntree,
bNodeSocket sock,
bNodeSocketType typeinfo 
)
static

◆ node_type_base()

void node_type_base ( struct bNodeType ntype,
int  type,
const char *  name,
short  nclass 
)

◆ node_type_base_custom()

void node_type_base_custom ( bNodeType ntype,
const char *  idname,
const char *  name,
short  nclass 
)

◆ node_type_base_defaults()

static void node_type_base_defaults ( bNodeType ntype)
static

◆ node_type_exec()

void node_type_exec ( struct bNodeType ntype,
NodeInitExecFunction  init_exec_fn,
NodeFreeExecFunction  free_exec_fn,
NodeExecFunction  exec_fn 
)

◆ node_type_gpu()

void node_type_gpu ( struct bNodeType ntype,
NodeGPUExecFunction  gpu_fn 
)

Definition at line 4465 of file node.cc.

References bNodeType::gpu_fn.

Referenced by 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_anisotropic(), 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_principled(), register_node_type_sh_bsdf_refraction(), register_node_type_sh_bsdf_toon(), register_node_type_sh_bsdf_translucent(), register_node_type_sh_bsdf_transparent(), register_node_type_sh_bsdf_velvet(), 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_custom_group(), 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_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_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_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_image(), register_node_type_sh_tex_magic(), register_node_type_sh_tex_musgrave(), register_node_type_sh_tex_noise(), register_node_type_sh_tex_sky(), register_node_type_sh_tex_voronoi(), register_node_type_sh_tex_wave(), register_node_type_sh_tex_white_noise(), register_node_type_sh_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(), and register_node_type_sh_wireframe().

◆ node_type_group_update()

void node_type_group_update ( struct bNodeType ntype,
void(*)(struct bNodeTree *ntree, struct bNode *node group_update_func 
)

◆ node_type_init()

void node_type_init ( struct bNodeType ntype,
void(*)(struct bNodeTree *ntree, struct bNode *node initfunc 
)

Definition at line 4390 of file node.cc.

References bNodeType::initfunc.

Referenced by register_node_type_cmp_alphaover(), register_node_type_cmp_antialiasing(), register_node_type_cmp_bilateralblur(), register_node_type_cmp_blur(), register_node_type_cmp_bokehblur(), register_node_type_cmp_bokehimage(), register_node_type_cmp_boxmask(), register_node_type_cmp_brightcontrast(), register_node_type_cmp_channel_matte(), register_node_type_cmp_chroma_matte(), register_node_type_cmp_color_matte(), register_node_type_cmp_color_spill(), register_node_type_cmp_colorbalance(), register_node_type_cmp_colorcorrection(), register_node_type_cmp_combine_color(), register_node_type_cmp_combycca(), 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_despeckle(), 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_invert(), register_node_type_cmp_keying(), 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_rlayers(), register_node_type_cmp_rotate(), register_node_type_cmp_separate_color(), register_node_type_cmp_sepycca(), register_node_type_cmp_setalpha(), register_node_type_cmp_splitviewer(), register_node_type_cmp_sunbeams(), register_node_type_cmp_tonemap(), register_node_type_cmp_translate(), register_node_type_cmp_valtorgb(), register_node_type_cmp_vecblur(), register_node_type_cmp_view_levels(), register_node_type_cmp_viewer(), register_node_type_fn_combine_color(), register_node_type_fn_compare(), register_node_type_fn_input_bool(), register_node_type_fn_input_color(), register_node_type_fn_input_int(), register_node_type_fn_input_string(), register_node_type_fn_input_vector(), register_node_type_fn_random_value(), register_node_type_fn_separate_color(), register_node_type_frame(), register_node_type_geo_accumulate_field(), register_node_type_geo_attribute_capture(), register_node_type_geo_attribute_domain_size(), register_node_type_geo_attribute_statistic(), register_node_type_geo_boolean(), register_node_type_geo_collection_info(), register_node_type_geo_curve_fill(), register_node_type_geo_curve_fillet(), register_node_type_geo_curve_handle_type_selection(), register_node_type_geo_curve_primitive_arc(), register_node_type_geo_curve_primitive_bezier_segment(), register_node_type_geo_curve_primitive_circle(), register_node_type_geo_curve_primitive_line(), register_node_type_geo_curve_primitive_quadrilateral(), register_node_type_geo_curve_resample(), register_node_type_geo_curve_set_handle_type(), register_node_type_geo_curve_spline_type(), register_node_type_geo_curve_to_points(), register_node_type_geo_curve_trim(), register_node_type_geo_delete_geometry(), register_node_type_geo_duplicate_elements(), register_node_type_geo_extrude_mesh(), register_node_type_geo_image_texture(), register_node_type_geo_input_named_attribute(), register_node_type_geo_merge_by_distance(), register_node_type_geo_mesh_primitive_circle(), register_node_type_geo_mesh_primitive_cone(), register_node_type_geo_mesh_primitive_cylinder(), register_node_type_geo_mesh_primitive_line(), register_node_type_geo_mesh_to_points(), register_node_type_geo_mesh_to_volume(), register_node_type_geo_object_info(), register_node_type_geo_points_to_volume(), register_node_type_geo_proximity(), register_node_type_geo_raycast(), register_node_type_geo_separate_geometry(), register_node_type_geo_set_curve_handles(), register_node_type_geo_store_named_attribute(), register_node_type_geo_string_to_curves(), register_node_type_geo_subdivision_surface(), register_node_type_geo_switch(), register_node_type_geo_transfer_attribute(), register_node_type_geo_triangulate(), register_node_type_geo_uv_unwrap(), register_node_type_geo_viewer(), register_node_type_geo_volume_to_mesh(), register_node_type_group_input(), register_node_type_group_output(), register_node_type_reroute(), register_node_type_sh_ambient_occlusion(), register_node_type_sh_attribute(), register_node_type_sh_bevel(), register_node_type_sh_bsdf_anisotropic(), register_node_type_sh_bsdf_glass(), register_node_type_sh_bsdf_glossy(), register_node_type_sh_bsdf_hair_principled(), register_node_type_sh_bsdf_principled(), register_node_type_sh_bsdf_refraction(), register_node_type_sh_clamp(), 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_displacement(), register_node_type_sh_map_range(), 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_subsurface_scattering(), 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_musgrave(), 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_uvmap(), register_node_type_sh_valtorgb(), register_node_type_sh_vect_transform(), register_node_type_sh_vector_displacement(), register_node_type_sh_vertex_color(), register_node_type_sh_volume_principled(), register_node_type_tex_bricks(), 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_type_size()

void node_type_size ( struct bNodeType ntype,
int  width,
int  minwidth,
int  maxwidth 
)

◆ node_type_size_preset()

void node_type_size_preset ( struct bNodeType ntype,
eNodeSizePreset  size 
)

Definition at line 4408 of file node.cc.

References NODE_DEFAULT_MAX_WIDTH, NODE_SIZE_DEFAULT, NODE_SIZE_LARGE, NODE_SIZE_MIDDLE, NODE_SIZE_SMALL, node_type_size(), and size().

Referenced by 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_geo_image_texture(), register_node_type_geo_input_curve_handles(), register_node_type_geo_input_mesh_face_neighbors(), register_node_type_geo_raycast(), register_node_type_geo_subdivision_surface(), register_node_type_sh_blackbody(), register_node_type_sh_bsdf_anisotropic(), 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_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_musgrave(), 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_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()

void node_type_socket_templates ( struct bNodeType ntype,
struct bNodeSocketTemplate inputs,
struct bNodeSocketTemplate outputs 
)

◆ node_type_storage()

void node_type_storage ( struct bNodeType ntype,
const char *  storagename,
void(*)(struct bNode *node freefunc,
void(*)(struct bNodeTree *dest_ntree, struct bNode *dest_node, const struct bNode *src_node)  copyfunc 
)
Warning
Nodes defining a storage type must allocate this for new nodes. Otherwise nodes will reload as undefined (T46619).

Definition at line 4426 of file node.cc.

References BLI_strncpy(), bNodeType::copyfunc, bNodeType::freefunc, and bNodeType::storagename.

Referenced by 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_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_splitviewer(), 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_fn_combine_color(), register_node_type_fn_compare(), register_node_type_fn_input_bool(), register_node_type_fn_input_color(), register_node_type_fn_input_int(), register_node_type_fn_input_string(), register_node_type_fn_input_vector(), register_node_type_fn_random_value(), register_node_type_fn_separate_color(), register_node_type_frame(), register_node_type_geo_accumulate_field(), register_node_type_geo_attribute_capture(), register_node_type_geo_collection_info(), register_node_type_geo_curve_fill(), register_node_type_geo_curve_fillet(), register_node_type_geo_curve_handle_type_selection(), register_node_type_geo_curve_primitive_arc(), register_node_type_geo_curve_primitive_bezier_segment(), register_node_type_geo_curve_primitive_circle(), register_node_type_geo_curve_primitive_line(), register_node_type_geo_curve_primitive_quadrilateral(), register_node_type_geo_curve_resample(), register_node_type_geo_curve_sample(), register_node_type_geo_curve_set_handle_type(), register_node_type_geo_curve_spline_type(), register_node_type_geo_curve_to_points(), register_node_type_geo_curve_trim(), register_node_type_geo_delete_geometry(), register_node_type_geo_duplicate_elements(), register_node_type_geo_extrude_mesh(), register_node_type_geo_image_texture(), register_node_type_geo_input_named_attribute(), register_node_type_geo_merge_by_distance(), register_node_type_geo_mesh_primitive_circle(), register_node_type_geo_mesh_primitive_cone(), register_node_type_geo_mesh_primitive_cylinder(), register_node_type_geo_mesh_primitive_line(), register_node_type_geo_mesh_to_points(), register_node_type_geo_mesh_to_volume(), register_node_type_geo_object_info(), register_node_type_geo_points_to_volume(), register_node_type_geo_proximity(), register_node_type_geo_raycast(), register_node_type_geo_separate_geometry(), register_node_type_geo_set_curve_handles(), register_node_type_geo_store_named_attribute(), register_node_type_geo_string_to_curves(), register_node_type_geo_subdivision_surface(), register_node_type_geo_switch(), register_node_type_geo_transfer_attribute(), register_node_type_geo_uv_unwrap(), register_node_type_geo_viewer(), register_node_type_geo_volume_to_mesh(), register_node_type_sh_attribute(), 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_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_musgrave(), 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_type_update()

void node_type_update ( struct bNodeType ntype,
void(*)(struct bNodeTree *ntree, struct bNode *node updatefunc 
)

Definition at line 4443 of file node.cc.

References bNodeType::updatefunc.

Referenced by register_node_type_cmp_combine_color(), register_node_type_cmp_image(), register_node_type_cmp_math(), register_node_type_cmp_output_file(), register_node_type_cmp_rlayers(), register_node_type_cmp_scale(), register_node_type_cmp_separate_color(), register_node_type_cmp_switch_view(), register_node_type_fn_boolean_math(), register_node_type_fn_combine_color(), register_node_type_fn_compare(), register_node_type_fn_random_value(), register_node_type_fn_rotate_euler(), register_node_type_fn_separate_color(), register_node_type_geo_accumulate_field(), register_node_type_geo_attribute_capture(), register_node_type_geo_attribute_statistic(), register_node_type_geo_curve_fillet(), register_node_type_geo_curve_primitive_arc(), register_node_type_geo_curve_primitive_circle(), register_node_type_geo_curve_primitive_line(), register_node_type_geo_curve_primitive_quadrilateral(), register_node_type_geo_curve_resample(), register_node_type_geo_curve_sample(), register_node_type_geo_curve_to_points(), register_node_type_geo_curve_trim(), register_node_type_geo_distribute_points_on_faces(), register_node_type_geo_extrude_mesh(), register_node_type_geo_mesh_primitive_cone(), register_node_type_geo_mesh_primitive_cylinder(), register_node_type_geo_mesh_primitive_line(), register_node_type_geo_mesh_to_volume(), register_node_type_geo_points_to_volume(), register_node_type_geo_raycast(), register_node_type_geo_string_to_curves(), register_node_type_geo_switch(), register_node_type_geo_transfer_attribute(), register_node_type_geo_viewer(), register_node_type_geo_volume_to_mesh(), register_node_type_group_input(), register_node_type_group_output(), register_node_type_sh_bsdf_hair_principled(), register_node_type_sh_bsdf_principled(), register_node_type_sh_combcolor(), register_node_type_sh_map_range(), register_node_type_sh_mapping(), register_node_type_sh_math(), register_node_type_sh_sepcolor(), register_node_type_sh_subsurface_scattering(), register_node_type_sh_tex_musgrave(), register_node_type_sh_tex_noise(), register_node_type_sh_tex_sky(), register_node_type_sh_tex_voronoi(), register_node_type_sh_tex_white_noise(), register_node_type_sh_vect_math(), register_node_type_sh_vector_rotate(), register_node_type_tex_combine_color(), register_node_type_tex_math(), and register_node_type_tex_separate_color().

◆ node_undefined_poll()

static bool node_undefined_poll ( bNodeType UNUSEDntype,
bNodeTree UNUSEDnodetree,
const char **  UNUSEDr_disabled_hint 
)
static

Definition at line 4472 of file node.cc.

Referenced by register_undefined_types().

◆ node_unlink_attached()

static void node_unlink_attached ( bNodeTree ntree,
bNode parent 
)
static

Definition at line 2933 of file node.cc.

References LISTBASE_FOREACH, node, nodeDetachNode(), bNodeTree::nodes, and ntree.

Referenced by nodeRemoveNode(), and ntreeFreeLocalNode().

◆ nodeAddLink()

bNodeLink* nodeAddLink ( struct bNodeTree ntree,
struct bNode fromnode,
struct bNodeSocket fromsock,
struct bNode tonode,
struct bNodeSocket tosock 
)

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

Definition at line 2296 of file node.cc.

References BKE_ntree_update_tag_link_added(), BLI_addtail(), BLI_assert, bNodeSocket::flag, bNodeLink::fromnode, bNodeLink::fromsock, bNodeSocket::in_out, bNodeTree::links, bNodeLink::multi_input_socket_index, node_count_links(), ntree, SOCK_IN, SOCK_MULTI_INPUT, SOCK_OUT, bNodeLink::tonode, and bNodeLink::tosock.

Referenced by 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_do_socket_section(), blender::ed::space_node::add_reroute_node_fn(), ambient_occlusion_node_relink(), bc_node_add_link(), BKE_linestyle_default_shader(), blo_do_versions_300(), blender::nodes::LinkSearchOpParams::connect_available_socket(), blender::eevee::DefaultSurfaceNodeTree::DefaultSurfaceNodeTree(), blender::eevee::DefaultWorldNodeTree::DefaultWorldNodeTree(), displacement_node_insert(), do_versions_material_convert_legacy_blend_mode(), ED_node_composit_default(), ED_node_link_insert(), ED_node_shader_default(), ED_node_texture_default(), EEVEE_material_default_diffuse_get(), EEVEE_material_default_error_get(), EEVEE_material_default_glossy_get(), EEVEE_shader_default_surface_nodetree(), EEVEE_shader_default_world_nodetree(), blender::ed::curves::ensure_surface_deformation_node_exists(), flatten_group_do(), Freestyle::BlenderStrokeRenderer::GetStrokeShader(), link_nodes(), blender::ed::space_node::viewer_linking::link_socket_to_viewer(), 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(), node_group_input_update(), blender::ed::space_node::node_group_make_insert_selected(), node_group_output_update(), blender::ed::space_node::node_group_separate_selected(), blender::ed::space_node::node_group_ungroup(), 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_shader_to_rgba_branch(), ntree_shader_weight_tree_invert(), ntree_weight_tree_merge_weight(), proj_paint_add_slot(), 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(), and version_node_socket_duplicate().

◆ nodeAddNode()

bNode* nodeAddNode ( const struct bContext C,
bNodeTree ntree,
const char *  idname 
)

◆ nodeAddSocket()

bNodeSocket* nodeAddSocket ( bNodeTree ntree,
bNode node,
eNodeSocketInOut  in_out,
const char *  idname,
const char *  identifier,
const char *  name 
)

◆ nodeAddStaticNode()

bNode* nodeAddStaticNode ( const struct bContext C,
bNodeTree ntree,
int  type 
)

Definition at line 2151 of file node.cc.

References C, CLOG_ERROR, LOG, NODE_TYPES_BEGIN, NODE_TYPES_END, nodeAddNode(), ntree, and type.

Referenced by add_node(), add_realize_instances_before_socket(), add_realize_node_tree(), blender::ed::space_node::add_reroute_do_socket_section(), bc_add_node(), BKE_linestyle_default_shader(), default_paint_slot_color_get(), blender::eevee::DefaultSurfaceNodeTree::DefaultSurfaceNodeTree(), blender::eevee::DefaultWorldNodeTree::DefaultWorldNodeTree(), displacement_node_insert(), do_versions_after_linking_260(), do_versions_material_convert_legacy_blend_mode(), ED_node_composit_default(), ED_node_shader_default(), ED_node_texture_default(), EEVEE_material_default_diffuse_get(), EEVEE_material_default_error_get(), EEVEE_material_default_glossy_get(), EEVEE_shader_default_surface_nodetree(), EEVEE_shader_default_world_nodetree(), blender::ed::curves::ensure_surface_deformation_node_exists(), Freestyle::BlenderStrokeRenderer::GetStrokeShader(), material_default_holdout_init(), material_default_surface_init(), material_default_volume_init(), blender::eevee::MaterialModule::MaterialModule(), blender::ed::space_node::node_add_node(), blender::ed::space_node::node_group_make_insert_selected(), 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(), 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(), and update_voronoi_node_square_distance().

◆ nodeAddStaticSocket()

bNodeSocket* nodeAddStaticSocket ( bNodeTree ntree,
bNode node,
eNodeSocketInOut  in_out,
int  type,
int  subtype,
const char *  identifier,
const char *  name 
)

◆ nodeAttachNode()

void nodeAttachNode ( bNode node,
bNode parent 
)

◆ nodeAttachNodeCheck()

bool nodeAttachNodeCheck ( const bNode node,
const bNode parent 
)

Definition at line 2583 of file node.cc.

References node.

Referenced by nodeAttachNode().

◆ nodeChainIter()

void nodeChainIter ( const bNodeTree ntree,
const bNode node_start,
bool(*)(bNode *, bNode *, void *, const bool callback,
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 2039 of file node.cc.

References callback, bNodeTree::links, LISTBASE_FOREACH, NODE_LINK_VALID, nodeChainIter(), and ntree.

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

◆ nodeChainIterBackwards()

void nodeChainIterBackwards ( const bNodeTree ntree,
const bNode node_start,
bool(*)(bNode *, bNode *, void *)  callback,
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 nodeChainIter. Iter only once per node. Can be called recursively (using another nodeChainIterBackwards) by setting the recursion_lvl accordingly.

Note
Needs updated socket links (ntreeUpdateTree).
Recursive

Definition at line 2093 of file node.cc.

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

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

◆ nodeClearActive()

void nodeClearActive ( bNodeTree ntree)

Definition at line 3633 of file node.cc.

References LISTBASE_FOREACH, node, NODE_ACTIVE, bNodeTree::nodes, and ntree.

◆ nodeCountSocketLinks()

int nodeCountSocketLinks ( const bNodeTree ntree,
const bNodeSocket sock 
)

◆ nodeDeclarationEnsure()

bool nodeDeclarationEnsure ( struct bNodeTree ntree,
struct 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 3731 of file node.cc.

References node, nodeDeclarationEnsureOnOutdatedNode(), nodeSocketDeclarationsUpdate(), and ntree.

Referenced by blender::nodes::NodeRef::declaration(), blender::ed::space_node::get_main_socket(), and blender::bke::node_copy_with_mapping().

◆ nodeDeclarationEnsureOnOutdatedNode()

bool nodeDeclarationEnsureOnOutdatedNode ( bNodeTree UNUSEDntree,
bNode node 
)

Definition at line 3710 of file node.cc.

References BLI_assert, and node.

Referenced by nodeDeclarationEnsure().

◆ nodeDetachNode()

void nodeDetachNode ( struct bNode node)

◆ nodeFindLink()

bNodeLink* nodeFindLink ( bNodeTree ntree,
const bNodeSocket from,
const bNodeSocket to 
)

◆ nodeFindNode()

bool nodeFindNode ( struct bNodeTree ntree,
struct bNodeSocket sock,
struct bNode **  r_node,
int *  r_sockindex 
)

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

Definition at line 1997 of file node.cc.

References bNodeSocket::in_out, LISTBASE_FOREACH, node, bNodeTree::nodes, ntree, and SOCK_IN.

Referenced by UI_context_copy_to_selected_list().

◆ nodeFindNodebyName()

bNode* nodeFindNodebyName ( struct bNodeTree ntree,
const char *  name 
)

◆ nodeFindRootParent()

bNode* nodeFindRootParent ( bNode node)

◆ nodeFindSocket()

struct bNodeSocket* nodeFindSocket ( const bNode node,
eNodeSocketInOut  in_out,
const char *  identifier 
)

Definition at line 1449 of file node.cc.

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

◆ nodeFromView()

void nodeFromView ( const bNode node,
float  x,
float  y,
float rx,
float ry 
)

Definition at line 2570 of file node.cc.

References node, x, and y.

Referenced by nodeAttachNode().

◆ nodeGetActive()

bNode* nodeGetActive ( bNodeTree ntree)

◆ nodeInternalRelink()

void nodeInternalRelink ( bNodeTree ntree,
bNode node 
)

◆ nodeIsChildOf()

bool nodeIsChildOf ( const bNode parent,
const bNode child 
)

◆ nodeIsStaticSocketType()

bool nodeIsStaticSocketType ( const struct bNodeSocketType stype)

◆ nodeLabel()

void nodeLabel ( const bNodeTree ntree,
const bNode node,
char *  label,
int  maxlen 
)

Definition at line 4227 of file node.cc.

References BLI_strncpy(), BLT_I18NCONTEXT_ID_NODETREE, CTX_IFACE_, IFACE_, label, node, and ntree.

◆ nodeLinkIsHidden()

bool nodeLinkIsHidden ( const bNodeLink link)

Definition at line 2464 of file node.cc.

References bNodeLink::fromsock, nodeSocketIsHidden(), and bNodeLink::tosock.

◆ nodeLinkIsSelected()

bool nodeLinkIsSelected ( const bNodeLink link)

Definition at line 2469 of file node.cc.

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

◆ nodeModifySocketType()

void nodeModifySocketType ( bNodeTree ntree,
bNode UNUSEDnode,
bNodeSocket sock,
const char *  idname 
)

◆ nodeModifySocketTypeStatic()

void nodeModifySocketTypeStatic ( bNodeTree ntree,
bNode node,
bNodeSocket sock,
int  type,
int  subtype 
)

Definition at line 1666 of file node.cc.

References CLOG_ERROR, LOG, node, nodeModifySocketType(), nodeStaticSocketType(), ntree, and type.

Referenced by verify_socket_template().

◆ nodeMuteFromSocketLinks()

static bool nodeMuteFromSocketLinks ( const bNodeTree ntree,
const bNodeSocket sock 
)
static

Definition at line 2356 of file node.cc.

References bNodeTree::links, LISTBASE_FOREACH, NODE_LINK_MUTED, and ntree.

Referenced by nodeMuteRerouteInputLinks().

◆ nodeMuteLink()

static void nodeMuteLink ( bNodeLink link)
static

◆ nodeMuteLinkToggle()

void nodeMuteLinkToggle ( bNodeTree ntree,
bNodeLink link 
)

◆ nodeMuteRerouteInputLinks()

static void nodeMuteRerouteInputLinks ( bNodeTree ntree,
bNode node,
const bool  mute 
)
static

◆ nodeMuteRerouteOutputLinks()

static void nodeMuteRerouteOutputLinks ( struct bNodeTree ntree,
struct bNode node,
const bool  mute 
)
static

◆ nodeParentsIter()

void nodeParentsIter ( bNode node,
bool(*)(bNode *, void *)  callback,
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 2115 of file node.cc.

References callback, node, and nodeParentsIter().

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

◆ nodePositionPropagate()

void nodePositionPropagate ( bNode node)

◆ nodePositionRelative()

void nodePositionRelative ( bNode from_node,
bNode to_node,
bNodeSocket from_sock,
bNodeSocket to_sock 
)

◆ nodeRegisterSocketType()

void nodeRegisterSocketType ( bNodeSocketType st)

◆ nodeRegisterType()

void nodeRegisterType ( bNodeType nt)

Definition at line 1357 of file node.cc.

References BLI_assert, BLI_ghash_insert(), bNodeType::declaration_is_dynamic, bNodeType::declare, bNodeType::fixed_declaration, G_MAIN, bNodeType::idname, nodetypes_hash, bNodeType::poll, and update_typeinfo().

Referenced by 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_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_splitviewer(), 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_fn_align_euler_to_vector(), register_node_type_fn_boolean_math(), register_node_type_fn_combine_color(), register_node_type_fn_compare(), register_node_type_fn_float_to_int(), register_node_type_fn_input_bool(), register_node_type_fn_input_color(), register_node_type_fn_input_int(), register_node_type_fn_input_special_characters(), register_node_type_fn_input_string(), register_node_type_fn_input_vector(), register_node_type_fn_random_value(), register_node_type_fn_replace_string(), register_node_type_fn_rotate_euler(), register_node_type_fn_separate_color(), register_node_type_fn_slice_string(), register_node_type_fn_string_length(), register_node_type_fn_value_to_string(), register_node_type_frame(), register_node_type_geo_accumulate_field(), register_node_type_geo_attribute_capture(), register_node_type_geo_attribute_domain_size(), register_node_type_geo_attribute_statistic(), register_node_type_geo_boolean(), register_node_type_geo_bounding_box(), register_node_type_geo_collection_info(), register_node_type_geo_convex_hull(), register_node_type_geo_curve_endpoint_selection(), register_node_type_geo_curve_fill(), register_node_type_geo_curve_fillet(), register_node_type_geo_curve_handle_type_selection(), register_node_type_geo_curve_length(), register_node_type_geo_curve_primitive_arc(), register_node_type_geo_curve_primitive_bezier_segment(), register_node_type_geo_curve_primitive_circle(), register_node_type_geo_curve_primitive_line(), register_node_type_geo_curve_primitive_quadratic_bezier(), register_node_type_geo_curve_primitive_quadrilateral(), register_node_type_geo_curve_primitive_spiral(), register_node_type_geo_curve_primitive_star(), register_node_type_geo_curve_resample(), register_node_type_geo_curve_reverse(), register_node_type_geo_curve_sample(), register_node_type_geo_curve_set_handle_type(), register_node_type_geo_curve_spline_parameter(), register_node_type_geo_curve_spline_type(), register_node_type_geo_curve_subdivide(), register_node_type_geo_curve_to_mesh(), register_node_type_geo_curve_to_points(), register_node_type_geo_curve_trim(), register_node_type_geo_deform_curves_on_surface(), register_node_type_geo_delete_geometry(), register_node_type_geo_distribute_points_on_faces(), register_node_type_geo_dual_mesh(), register_node_type_geo_duplicate_elements(), register_node_type_geo_edge_paths_to_curves(), register_node_type_geo_edge_paths_to_selection(), register_node_type_geo_edge_split(), register_node_type_geo_extrude_mesh(), register_node_type_geo_field_at_index(), register_node_type_geo_flip_faces(), register_node_type_geo_geometry_to_instance(), register_node_type_geo_group(), register_node_type_geo_image_texture(), register_node_type_geo_input_curve_handles(), register_node_type_geo_input_curve_tilt(), register_node_type_geo_input_id(), register_node_type_geo_input_index(), register_node_type_geo_input_instance_rotation(), register_node_type_geo_input_instance_scale(), register_node_type_geo_input_material(), register_node_type_geo_input_material_index(), register_node_type_geo_input_mesh_edge_angle(), register_node_type_geo_input_mesh_edge_neighbors(), register_node_type_geo_input_mesh_edge_vertices(), register_node_type_geo_input_mesh_face_area(), register_node_type_geo_input_mesh_face_is_planar(), register_node_type_geo_input_mesh_face_neighbors(), register_node_type_geo_input_mesh_island(), register_node_type_geo_input_mesh_vertex_neighbors(), register_node_type_geo_input_named_attribute(), register_node_type_geo_input_normal(), register_node_type_geo_input_position(), register_node_type_geo_input_radius(), register_node_type_geo_input_scene_time(), register_node_type_geo_input_shade_smooth(), register_node_type_geo_input_shortest_edge_paths(), register_node_type_geo_input_spline_cyclic(), register_node_type_geo_input_spline_length(), register_node_type_geo_input_spline_resolution(), register_node_type_geo_input_tangent(), register_node_type_geo_instance_on_points(), register_node_type_geo_instances_to_points(), register_node_type_geo_interpolate_domain(), register_node_type_geo_is_viewport(), register_node_type_geo_join_geometry(), register_node_type_geo_material_replace(), register_node_type_geo_material_selection(), register_node_type_geo_merge_by_distance(), register_node_type_geo_mesh_primitive_circle(), register_node_type_geo_mesh_primitive_cone(), register_node_type_geo_mesh_primitive_cube(), register_node_type_geo_mesh_primitive_cylinder(), register_node_type_geo_mesh_primitive_grid(), register_node_type_geo_mesh_primitive_ico_sphere(), register_node_type_geo_mesh_primitive_line(), register_node_type_geo_mesh_primitive_uv_sphere(), register_node_type_geo_mesh_subdivide(), register_node_type_geo_mesh_to_curve(), register_node_type_geo_mesh_to_points(), register_node_type_geo_mesh_to_volume(), register_node_type_geo_object_info(), register_node_type_geo_points(), register_node_type_geo_points_to_vertices(), register_node_type_geo_points_to_volume(), register_node_type_geo_proximity(), register_node_type_geo_raycast(), register_node_type_geo_realize_instances(), register_node_type_geo_remove_attribute(), register_node_type_geo_rotate_instances(), register_node_type_geo_scale_elements(), register_node_type_geo_scale_instances(), register_node_type_geo_separate_components(), register_node_type_geo_separate_geometry(), register_node_type_geo_set_curve_handles(), register_node_type_geo_set_curve_radius(), register_node_type_geo_set_curve_tilt(), register_node_type_geo_set_id(), register_node_type_geo_set_material(), register_node_type_geo_set_material_index(), register_node_type_geo_set_point_radius(), register_node_type_geo_set_position(), register_node_type_geo_set_shade_smooth(), register_node_type_geo_set_spline_cyclic(), register_node_type_geo_set_spline_resolution(), register_node_type_geo_store_named_attribute(), register_node_type_geo_string_join(), register_node_type_geo_string_to_curves(), register_node_type_geo_subdivision_surface(), register_node_type_geo_switch(), register_node_type_geo_transfer_attribute(), register_node_type_geo_transform(), register_node_type_geo_translate_instances(), register_node_type_geo_triangulate(), register_node_type_geo_uv_pack_islands(), register_node_type_geo_uv_unwrap(), register_node_type_geo_viewer(), register_node_type_geo_volume_cube(), register_node_type_geo_volume_to_mesh(), 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_anisotropic(), 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_principled(), register_node_type_sh_bsdf_refraction(), register_node_type_sh_bsdf_toon(), register_node_type_sh_bsdf_translucent(), register_node_type_sh_bsdf_transparent(), register_node_type_sh_bsdf_velvet(), 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_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_musgrave(), 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().

◆ nodeRemLink()

void nodeRemLink ( bNodeTree ntree,
bNodeLink link 
)

Definition at line 2338 of file node.cc.

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

Referenced by ambient_occlusion_node_relink(), BKE_node_clipboard_clear(), blender::ed::space_node::cut_links_exec(), displacement_node_insert(), do_versions_after_linking_260(), do_versions_material_convert_legacy_blend_mode(), ED_node_link_insert(), node_group_input_update(), blender::ed::space_node::node_group_make_insert_selected(), node_group_output_update(), blender::ed::space_node::node_group_separate_selected(), node_insert_link_default(), blender::ed::space_node::node_link_exit(), blender::ed::space_node::node_link_init(), blender::ed::space_node::node_remove_extra_links(), blender::ed::space_node::node_socket_add_replace(), blender::ed::space_node::node_socket_disconnect(), nodeInternalRelink(), nodeRemoveAllSockets(), nodeRemoveSocketEx(), nodeRemSocketLinks(), nodeUnlinkNode(), ntree_shader_groups_remove_muted_links(), ntree_shader_implicit_closure_cast(), ntree_shader_shader_to_rgba_branch(), 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(), 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_dot_product_operator(), update_vector_math_node_normalize_operator(), update_voronoi_node_coloring(), update_voronoi_node_crackle(), and update_voronoi_node_square_distance().

◆ nodeRemoveAllSockets()

void nodeRemoveAllSockets ( bNodeTree ntree,
bNode node 
)

◆ nodeRemoveNode()

void nodeRemoveNode ( struct Main bmain,
struct bNodeTree ntree,
struct bNode node,
bool  do_id_user 
)

◆ nodeRemoveSocket()

void nodeRemoveSocket ( bNodeTree ntree,
bNode node,
bNodeSocket sock 
)

◆ nodeRemoveSocketEx()

void nodeRemoveSocketEx ( struct bNodeTree ntree,
struct bNode node,
struct bNodeSocket sock,
bool  do_id_user 
)

◆ nodeRemSocketLinks()

void nodeRemSocketLinks ( bNodeTree ntree,
bNodeSocket sock 
)

◆ nodeSetActive()

void nodeSetActive ( struct bNodeTree ntree,
struct bNode node 
)

◆ nodeSetSelected()

void nodeSetSelected ( bNode node,
bool  select 
)

◆ nodeSetSocketAvailability()

void nodeSetSocketAvailability ( bNodeTree ntree,
bNodeSocket sock,
bool  is_available 
)

Definition at line 3664 of file node.cc.

References BKE_ntree_update_tag_socket_availability(), bNodeSocket::flag, ntree, 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_fn_rotate_euler_cc::fn_node_rotate_euler_update(), blender::nodes::node_fn_boolean_math_cc::node_boolean_math_update(), blender::nodes::node_fn_compare_cc::node_compare_update(), blender::nodes::node_composite_scale_cc::node_composite_update_scale(), node_math_update(), blender::nodes::node_geo_distribute_points_on_faces_cc::node_point_distribute_points_on_faces_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_principled_cc::node_shader_update_principled(), 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_musgrave_cc::node_shader_update_tex_musgrave(), 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_geo_accumulate_field_cc::node_update(), blender::nodes::node_geo_attribute_capture_cc::node_update(), blender::nodes::node_geo_attribute_domain_size_cc::node_update(), blender::nodes::node_geo_attribute_statistic_cc::node_update(), blender::nodes::node_geo_boolean_cc::node_update(), blender::nodes::node_geo_curve_fillet_cc::node_update(), blender::nodes::node_geo_curve_primitive_arc_cc::node_update(), blender::nodes::node_geo_curve_primitive_circle_cc::node_update(), blender::nodes::node_geo_curve_primitive_line_cc::node_update(), blender::nodes::node_geo_curve_primitive_quadrilateral_cc::node_update(), blender::nodes::node_geo_curve_resample_cc::node_update(), blender::nodes::node_geo_curve_sample_cc::node_update(), blender::nodes::node_geo_curve_to_points_cc::node_update(), blender::nodes::node_geo_curve_trim_cc::node_update(), blender::nodes::node_geo_extrude_mesh_cc::node_update(), blender::nodes::node_geo_field_at_index_cc::node_update(), blender::nodes::node_geo_input_named_attribute_cc::node_update(), blender::nodes::node_geo_interpolate_domain_cc::node_update(), blender::nodes::node_geo_mesh_primitive_cone_cc::node_update(), blender::nodes::node_geo_mesh_primitive_cylinder_cc::node_update(), blender::nodes::node_geo_mesh_primitive_line_cc::node_update(), blender::nodes::node_geo_mesh_to_volume_cc::node_update(), blender::nodes::node_geo_points_to_volume_cc::node_update(), blender::nodes::node_geo_raycast_cc::node_update(), blender::nodes::node_geo_scale_elements_cc::node_update(), blender::nodes::node_geo_store_named_attribute_cc::node_update(), blender::nodes::node_geo_string_to_curves_cc::node_update(), blender::nodes::node_geo_switch_cc::node_update(), blender::nodes::node_geo_transfer_attribute_cc::node_update(), blender::nodes::node_geo_viewer_cc::node_update(), and blender::nodes::node_geo_volume_to_mesh_cc::node_update().

◆ nodeSocketDeclarationsUpdate()

void nodeSocketDeclarationsUpdate ( struct 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 3703 of file node.cc.

References BLI_assert, node, and update_socket_declarations().

Referenced by node_verify_sockets(), and nodeDeclarationEnsure().

◆ nodeSocketIsHidden()

int nodeSocketIsHidden ( const bNodeSocket sock)

Definition at line 3659 of file node.cc.

References bNodeSocket::flag, SOCK_HIDDEN, and SOCK_UNAVAIL.

Referenced by nodeLinkIsHidden().

◆ nodeSocketIsRegistered()

bool nodeSocketIsRegistered ( bNodeSocket sock)

Definition at line 1433 of file node.cc.

References NodeSocketTypeUndefined, and bNodeSocket::typeinfo.

◆ nodeSocketLabel()

const char* nodeSocketLabel ( const bNodeSocket sock)

Definition at line 4249 of file node.cc.

References bNodeSocket::label, and bNodeSocket::name.

◆ nodeSocketLinkLimit()

int nodeSocketLinkLimit ( const bNodeSocket sock)

◆ nodeSocketTypeFind()

bNodeSocketType* nodeSocketTypeFind ( const char *  idname)

◆ nodeSocketTypeGetIterator()

GHashIterator* nodeSocketTypeGetIterator ( void  )

Definition at line 1438 of file node.cc.

References BLI_ghashIterator_new(), and nodesockettypes_hash.

◆ nodeSocketTypeLabel()

const char* nodeSocketTypeLabel ( const bNodeSocketType stype)

◆ nodeStaticSocketInterfaceType()

const char* nodeStaticSocketInterfaceType ( int  type,
int  subtype 
)

◆ nodeStaticSocketLabel()

const char* nodeStaticSocketLabel ( int  type,
int   UNUSEDsubtype 
)

◆ nodeStaticSocketType()

const char* nodeStaticSocketType ( int  type,
int  subtype 
)

◆ nodeToView()

void nodeToView ( const bNode node,
float  x,
float  y,
float rx,
float ry 
)

Definition at line 2559 of file node.cc.

References node, x, and y.

Referenced by nodeAttachNode(), and nodeDetachNode().

◆ nodeTypeFind()

bNodeType* nodeTypeFind ( const char *  idname)

◆ nodeTypeGetIterator()

GHashIterator* nodeTypeGetIterator ( void  )

Definition at line 1390 of file node.cc.

References BLI_ghashIterator_new(), and nodetypes_hash.

◆ nodeTypeUndefined()

bool nodeTypeUndefined ( const bNode node)

Definition at line 1383 of file node.cc.

References ELEM, ID_IS_LINKED, LIB_TAG_MISSING, node, NODE_CUSTOM_GROUP, NODE_GROUP, and NodeTypeUndefined.

◆ nodeUniqueName()

void nodeUniqueName ( struct bNodeTree ntree,
struct bNode node 
)

◆ nodeUnlinkNode()

void nodeUnlinkNode ( struct bNodeTree ntree,
struct bNode node 
)

◆ nodeUnMuteLink()

static void nodeUnMuteLink ( bNodeLink link)
static

◆ nodeUnregisterSocketType()

void nodeUnregisterSocketType ( bNodeSocketType st)

◆ nodeUnregisterType()

void nodeUnregisterType ( bNodeType nt)

Definition at line 1378 of file node.cc.

References BLI_ghash_remove(), bNodeType::idname, node_free_type(), and nodetypes_hash.

◆ ntree_blend_read_data()

static void ntree_blend_read_data ( BlendDataReader reader,
ID id 
)
static

Definition at line 835 of file node.cc.

References ntree, and ntreeBlendReadData().

◆ ntree_blend_read_expand()

static void ntree_blend_read_expand ( BlendExpander expander,
ID id 
)
static

Definition at line 1018 of file node.cc.

References ntree, and ntreeBlendReadExpand().

◆ ntree_blend_read_lib()

static void ntree_blend_read_lib ( BlendLibReader reader,
ID id 
)
static

Definition at line 935 of file node.cc.

References ntree, and ntreeBlendReadLib().

◆ ntree_blend_write()

static void ntree_blend_write ( BlendWriter writer,
ID id,
const void id_address 
)
static

◆ ntree_copy_data()

static void ntree_copy_data ( Main UNUSEDbmain,
ID id_dst,
const ID id_src,
const int  flag 
)
static

◆ ntree_free_data()

static void ntree_free_data ( ID id)
static

◆ ntree_free_type()

static void ntree_free_type ( void treetype_v)
static

Definition at line 1302 of file node.cc.

References G_MAIN, MEM_freeN, and update_typeinfo().

Referenced by BKE_node_system_exit(), and ntreeTypeFreeLink().

◆ ntree_init_data()

static void ntree_init_data ( ID id)
static

Definition at line 127 of file node.cc.

References ntree, ntree_set_typeinfo(), and bNodeTree::runtime.

◆ ntree_interface_identifier()

static void ntree_interface_identifier ( bNodeTree ntree,
const char *  base,
char *  identifier,
int  maxlen,
char *  name,
char *  description 
)
static

◆ ntree_interface_identifier_base()

static void ntree_interface_identifier_base ( bNodeTree ntree,
char *  base 
)
static

Definition at line 3428 of file node.cc.

References bNodeTree::id, ID::name, ntree, and RNA_identifier_sanitize().

Referenced by ntree_interface_type_create(), and ntreeInterfaceTypeGet().

◆ ntree_interface_type_create()

static void ntree_interface_type_create ( bNodeTree ntree)
static

◆ ntree_interface_unique_identifier_check()

static bool ntree_interface_unique_identifier_check ( void UNUSEDdata,
const char *  identifier 
)
static

Definition at line 3436 of file node.cc.

References bNodeSocket::identifier, and RNA_struct_find().

Referenced by ntree_interface_identifier().

◆ ntree_set_typeinfo()

static void ntree_set_typeinfo ( bNodeTree ntree,
bNodeTreeType typeinfo 
)
static

◆ ntreeAddSocketInterface()

bNodeSocket* ntreeAddSocketInterface ( bNodeTree ntree,
eNodeSocketInOut  in_out,
const char *  idname,
const char *  name 
)

◆ ntreeAddSocketInterfaceFromSocket()

struct bNodeSocket* ntreeAddSocketInterfaceFromSocket ( bNodeTree ntree,
bNode from_node,
bNodeSocket from_sock 
)

◆ ntreeAddTree()

bNodeTree* ntreeAddTree ( Main bmain,
const char *  name,
const char *  idname 
)

◆ ntreeBlendReadData()

void ntreeBlendReadData ( struct BlendDataReader reader,
struct bNodeTree ntree 
)
Note
ntree itself has been read!

Definition at line 675 of file node.cc.

References bNodeTree::adt, BKE_animdata_blend_read_data(), BKE_curvemapping_blend_read(), BKE_image_format_blend_read_data(), BKE_ntree_update_tag_missing_runtime_data(), BKE_previewimg_blend_read(), BLI_listbase_clear(), BLO_read_data_address, BLO_read_list(), NodeShaderScript::bytecode, CMP_NODE_CRYPTOMATTE, CMP_NODE_CRYPTOMATTE_LEGACY, CMP_NODE_CURVE_RGB, CMP_NODE_CURVE_VEC, CMP_NODE_HUECORRECT, CMP_NODE_IMAGE, CMP_NODE_MOVIEDISTORTION, CMP_NODE_OUTPUT_FILE, CMP_NODE_R_LAYERS, CMP_NODE_SPLITVIEWER, CMP_NODE_TIME, CMP_NODE_VIEWER, direct_link_node_socket(), NodeCryptomatte::entries, bNodeTree::execdata, FN_NODE_INPUT_STRING, NodeImageMultiFile::format, NodeImageMultiFileSocket::format, IDP_BlendDataRead, bNodeTree::inputs, bNodeTree::interface_type, bNodeTree::is_updating, Tex::iuser, NodeCryptomatte_Runtime::layers, bNodeTree::links, LISTBASE_FOREACH, NodeCryptomatte::matte_id, node, bNodeTree::nodes, ntree, bNodeTree::outputs, NodeShaderTexPointDensity::pd, bNodeTree::preview, bNodeTree::previews, bNodeTree::progress, 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, and bNodeTree::typeinfo.

Referenced by direct_link_id_embedded_id(), and ntree_blend_read_data().

◆ ntreeBlendReadExpand()

void ntreeBlendReadExpand ( BlendExpander expander,
bNodeTree ntree 
)

◆ ntreeBlendReadLib()

void ntreeBlendReadLib ( struct BlendLibReader reader,
struct bNodeTree ntree 
)

◆ ntreeBlendWrite()

void ntreeBlendWrite ( struct BlendWriter writer,
struct bNodeTree ntree 
)

◆ ntreeCopyTree()

bNodeTree* ntreeCopyTree ( Main bmain,
const bNodeTree ntree 
)

Definition at line 2703 of file node.cc.

References ntree, and ntreeCopyTree_ex().

◆ ntreeCopyTree_ex()

bNodeTree* ntreeCopyTree_ex ( const bNodeTree ntree,
Main bmain,
const bool  do_id_user 
)

Definition at line 2696 of file node.cc.

References BKE_id_copy_ex(), LIB_ID_CREATE_NO_MAIN, LIB_ID_CREATE_NO_USER_REFCOUNT, and ntree.

Referenced by ntreeCopyTree().

◆ ntreeFindSocketInterface()

bNodeSocket* ntreeFindSocketInterface ( bNodeTree ntree,
eNodeSocketInOut  in_out,
const char *  identifier 
)

Definition at line 3336 of file node.cc.

References bNodeTree::inputs, LISTBASE_FOREACH, ntree, bNodeTree::outputs, SOCK_IN, and STREQ.

◆ ntreeFindType()

bNode* ntreeFindType ( const bNodeTree ntree,
int  type 
)

Definition at line 3550 of file node.cc.

References LISTBASE_FOREACH, node, bNodeTree::nodes, ntree, and type.

◆ ntreeFreeCache()

void ntreeFreeCache ( bNodeTree ntree)

◆ ntreeFreeEmbeddedTree()

void ntreeFreeEmbeddedTree ( struct bNodeTree ntree)

◆ ntreeFreeLocalNode()

void ntreeFreeLocalNode ( bNodeTree ntree,
bNode node 
)

◆ ntreeFreeLocalTree()

void ntreeFreeLocalTree ( bNodeTree ntree)

◆ ntreeFreeTree()

void ntreeFreeTree ( struct bNodeTree ntree)

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

Definition at line 3106 of file node.cc.

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

Referenced by default_paint_slot_color_get(), free_localized_node_groups(), blender::ed::space_node::node_group_make_test_selected(), ntree_shader_groups_flatten(), ntreeFreeEmbeddedTree(), ntreeFreeLocalTree(), and ntreeLocalMerge().

◆ ntreeFromID()

bNodeTree* ntreeFromID ( struct ID id)

◆ ntreeGetDependencyList()

void ntreeGetDependencyList ( struct bNodeTree ntree,
struct bNode ***  r_deplist,
int *  r_deplist_len 
)

◆ ntreeHasTree()

bool ntreeHasTree ( const bNodeTree ntree,
const bNodeTree lookup 
)

◆ ntreeInsertSocketInterface()

bNodeSocket* ntreeInsertSocketInterface ( bNodeTree ntree,
eNodeSocketInOut  in_out,
const char *  idname,
bNodeSocket next_sock,
const char *  name 
)

◆ ntreeInsertSocketInterfaceFromSocket()

struct bNodeSocket* ntreeInsertSocketInterfaceFromSocket ( bNodeTree ntree,
bNodeSocket next_sock,
bNode from_node,
bNodeSocket from_sock 
)

◆ ntreeInterfaceTypeFree()

void ntreeInterfaceTypeFree ( bNodeTree ntree)

Definition at line 3529 of file node.cc.

References BLENDER_RNA, bNodeTree::interface_type, ntree, and RNA_struct_free().

Referenced by ntree_free_data(), and ntreeInterfaceTypeUpdate().

◆ ntreeInterfaceTypeGet()

StructRNA* ntreeInterfaceTypeGet ( bNodeTree ntree,
bool  create 
)

◆ ntreeInterfaceTypeUpdate()

void ntreeInterfaceTypeUpdate ( bNodeTree ntree)

Definition at line 3537 of file node.cc.

References ntree, ntree_interface_type_create(), and ntreeInterfaceTypeFree().

◆ ntreeIsRegistered()

bool ntreeIsRegistered ( bNodeTree ntree)

◆ ntreeLocalize()

bNodeTree* ntreeLocalize ( struct bNodeTree ntree)

◆ ntreeLocalMerge()

void ntreeLocalMerge ( struct Main bmain,
struct bNodeTree localtree,
struct bNodeTree ntree 
)

Merge local tree results back, and free local tree.

We have to assume the editor already changed completely.

Definition at line 3286 of file node.cc.

References bNodeTreeType::local_merge, MEM_freeN, ntree, ntreeFreeTree(), and bNodeTree::typeinfo.

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

◆ ntreeNodeFlagSet()

void ntreeNodeFlagSet ( const bNodeTree ntree,
const int  flag,
const bool  enable 
)

◆ ntreeRemoveSocketInterface()

void ntreeRemoveSocketInterface ( bNodeTree ntree,
bNodeSocket sock 
)

◆ ntreeSetOutput()

void ntreeSetOutput ( struct 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 3141 of file node.cc.

References CMP_NODE_OUTPUT_FILE, CMP_NODE_SPLITVIEWER, CMP_NODE_VIEWER, ELEM, GEO_NODE_VIEWER, LISTBASE_FOREACH, node, NODE_CLASS_OUTPUT, NODE_DO_OUTPUT, NODE_GROUP_OUTPUT, bNodeTree::nodes, ntree, NTREE_COMPOSIT, output, and bNodeTree::type.

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

◆ ntreeSetTypes()

void ntreeSetTypes ( const struct bContext C,
struct 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 1253 of file node.cc.

References C, bNodeTree::idname, bNodeTree::inputs, LISTBASE_FOREACH, node, node_set_typeinfo(), node_socket_set_typeinfo(), bNodeTree::nodes, nodeSocketTypeFind(), nodeTypeFind(), ntree, ntree_set_typeinfo(), ntreeTypeFind(), and bNodeTree::outputs.

Referenced by blo_do_versions_270(), do_versions_after_linking_270(), and ntreeBlendReadLib().

◆ ntreeTypeAdd()

void ntreeTypeAdd ( bNodeTreeType nt)

◆ ntreeTypeFind()

bNodeTreeType* ntreeTypeFind ( const char *  idname)

◆ ntreeTypeFreeLink()

void ntreeTypeFreeLink ( const bNodeTreeType nt)

◆ ntreeTypeGetIterator()

GHashIterator* ntreeTypeGetIterator ( void  )

Definition at line 1322 of file node.cc.

References BLI_ghashIterator_new(), and nodetreetypes_hash.

◆ ntreeUpdateAllNew()

void ntreeUpdateAllNew ( Main main)

◆ ntreeUpdateAllUsers()

void ntreeUpdateAllUsers ( Main main,
ID id 
)

◆ ntreeUpdateNodeLevels()

void ntreeUpdateNodeLevels ( bNodeTree ntree)

Definition at line 4122 of file node.cc.

References LISTBASE_FOREACH, node, node_get_deplist_recurs(), bNodeTree::nodes, and ntree.

◆ register_undefined_types()

static void register_undefined_types ( )
static

◆ registerCompositNodes()

static void registerCompositNodes ( )
static

Definition at line 4507 of file node.cc.

References 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_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_splitviewer(), 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(), and register_node_type_cmp_zcombine().

Referenced by BKE_node_system_init().

◆ registerFunctionNodes()

static void registerFunctionNodes ( )
static

◆ registerGeometryNodes()

static void registerGeometryNodes ( )
static

Definition at line 4773 of file node.cc.

References register_node_type_geo_accumulate_field(), register_node_type_geo_attribute_capture(), register_node_type_geo_attribute_domain_size(), register_node_type_geo_attribute_statistic(), register_node_type_geo_boolean(), register_node_type_geo_bounding_box(), register_node_type_geo_collection_info(), register_node_type_geo_convex_hull(), register_node_type_geo_curve_endpoint_selection(), register_node_type_geo_curve_fill(), register_node_type_geo_curve_fillet(), register_node_type_geo_curve_handle_type_selection(), register_node_type_geo_curve_length(), register_node_type_geo_curve_primitive_arc(), register_node_type_geo_curve_primitive_bezier_segment(), register_node_type_geo_curve_primitive_circle(), register_node_type_geo_curve_primitive_line(), register_node_type_geo_curve_primitive_quadratic_bezier(), register_node_type_geo_curve_primitive_quadrilateral(), register_node_type_geo_curve_primitive_spiral(), register_node_type_geo_curve_primitive_star(), register_node_type_geo_curve_resample(), register_node_type_geo_curve_reverse(), register_node_type_geo_curve_sample(), register_node_type_geo_curve_set_handle_type(), register_node_type_geo_curve_spline_parameter(), register_node_type_geo_curve_spline_type(), register_node_type_geo_curve_subdivide(), register_node_type_geo_curve_to_mesh(), register_node_type_geo_curve_to_points(), register_node_type_geo_curve_trim(), register_node_type_geo_deform_curves_on_surface(), register_node_type_geo_delete_geometry(), register_node_type_geo_distribute_points_on_faces(), register_node_type_geo_dual_mesh(), register_node_type_geo_duplicate_elements(), register_node_type_geo_edge_paths_to_curves(), register_node_type_geo_edge_paths_to_selection(), register_node_type_geo_edge_split(), register_node_type_geo_extrude_mesh(), register_node_type_geo_field_at_index(), register_node_type_geo_flip_faces(), register_node_type_geo_geometry_to_instance(), register_node_type_geo_group(), register_node_type_geo_image_texture(), register_node_type_geo_input_curve_handles(), register_node_type_geo_input_curve_tilt(), register_node_type_geo_input_id(), register_node_type_geo_input_index(), register_node_type_geo_input_instance_rotation(), register_node_type_geo_input_instance_scale(), register_node_type_geo_input_material(), register_node_type_geo_input_material_index(), register_node_type_geo_input_mesh_edge_angle(), register_node_type_geo_input_mesh_edge_neighbors(), register_node_type_geo_input_mesh_edge_vertices(), register_node_type_geo_input_mesh_face_area(), register_node_type_geo_input_mesh_face_is_planar(), register_node_type_geo_input_mesh_face_neighbors(), register_node_type_geo_input_mesh_island(), register_node_type_geo_input_mesh_vertex_neighbors(), register_node_type_geo_input_named_attribute(), register_node_type_geo_input_normal(), register_node_type_geo_input_position(), register_node_type_geo_input_radius(), register_node_type_geo_input_scene_time(), register_node_type_geo_input_shade_smooth(), register_node_type_geo_input_shortest_edge_paths(), register_node_type_geo_input_spline_cyclic(), register_node_type_geo_input_spline_length(), register_node_type_geo_input_spline_resolution(), register_node_type_geo_input_tangent(), register_node_type_geo_instance_on_points(), register_node_type_geo_instances_to_points(), register_node_type_geo_interpolate_domain(), register_node_type_geo_is_viewport(), register_node_type_geo_join_geometry(), register_node_type_geo_material_replace(), register_node_type_geo_material_selection(), register_node_type_geo_merge_by_distance(), register_node_type_geo_mesh_primitive_circle(), register_node_type_geo_mesh_primitive_cone(), register_node_type_geo_mesh_primitive_cube(), register_node_type_geo_mesh_primitive_cylinder(), register_node_type_geo_mesh_primitive_grid(), register_node_type_geo_mesh_primitive_ico_sphere(), register_node_type_geo_mesh_primitive_line(), register_node_type_geo_mesh_primitive_uv_sphere(), register_node_type_geo_mesh_subdivide(), register_node_type_geo_mesh_to_curve(), register_node_type_geo_mesh_to_points(), register_node_type_geo_mesh_to_volume(), register_node_type_geo_object_info(), register_node_type_geo_points(), register_node_type_geo_points_to_vertices(), register_node_type_geo_points_to_volume(), register_node_type_geo_proximity(), register_node_type_geo_raycast(), register_node_type_geo_realize_instances(), register_node_type_geo_remove_attribute(), register_node_type_geo_rotate_instances(), register_node_type_geo_scale_elements(), register_node_type_geo_scale_instances(), register_node_type_geo_separate_components(), register_node_type_geo_separate_geometry(), register_node_type_geo_set_curve_handles(), register_node_type_geo_set_curve_radius(), register_node_type_geo_set_curve_tilt(), register_node_type_geo_set_id(), register_node_type_geo_set_material(), register_node_type_geo_set_material_index(), register_node_type_geo_set_point_radius(), register_node_type_geo_set_position(), register_node_type_geo_set_shade_smooth(), register_node_type_geo_set_spline_cyclic(), register_node_type_geo_set_spline_resolution(), register_node_type_geo_store_named_attribute(), register_node_type_geo_string_join(), register_node_type_geo_string_to_curves(), register_node_type_geo_subdivision_surface(), register_node_type_geo_switch(), register_node_type_geo_transfer_attribute(), register_node_type_geo_transform(), register_node_type_geo_translate_instances(), register_node_type_geo_triangulate(), register_node_type_geo_uv_pack_islands(), register_node_type_geo_uv_unwrap(), register_node_type_geo_viewer(), register_node_type_geo_volume_cube(), and register_node_type_geo_volume_to_mesh().

Referenced by BKE_node_system_init().

◆ registerShaderNodes()

static void registerShaderNodes ( )
static

Definition at line 4620 of file node.cc.

References register_node_type_sh_add_shader(), 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_anisotropic(), 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_principled(), register_node_type_sh_bsdf_toon(), register_node_type_sh_bsdf_translucent(), register_node_type_sh_bsdf_transparent(), register_node_type_sh_bsdf_velvet(), 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_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_rgb(), register_node_type_sh_mix_shader(), register_node_type_sh_normal(), 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_rgb(), register_node_type_sh_rgbtobw(), 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_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_musgrave(), 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_principled(), register_node_type_sh_volume_scatter(), register_node_type_sh_wavelength(), and register_node_type_sh_wireframe().

Referenced by BKE_node_system_init().

◆ registerTextureNodes()

static void registerTextureNodes ( )
static

Definition at line 4720 of file node.cc.

References register_node_type_sh_ambient_occlusion(), register_node_type_sh_bsdf_refraction(), register_node_type_sh_hair_info(), register_node_type_sh_normal_map(), register_node_type_sh_point_info(), register_node_type_sh_script(), register_node_type_sh_tangent(), register_node_type_sh_volume_info(), 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_proc_blend(), register_node_type_tex_proc_clouds(), register_node_type_tex_proc_distnoise(), register_node_type_tex_proc_magic(), register_node_type_tex_proc_marble(), register_node_type_tex_proc_musgrave(), register_node_type_tex_proc_noise(), register_node_type_tex_proc_stucci(), register_node_type_tex_proc_voronoi(), register_node_type_tex_proc_wood(), 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().

Referenced by BKE_node_system_init().

◆ socket_id_user_decrement()

static bool socket_id_user_decrement ( bNodeSocket sock)
static

◆ socket_id_user_increment()

static void socket_id_user_increment ( bNodeSocket sock)
static

◆ unique_identifier_check()

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

Definition at line 1490 of file node.cc.

References LISTBASE_FOREACH, and STREQ.

Referenced by make_socket().

◆ unique_socket_template_identifier()

static void unique_socket_template_identifier ( bNodeSocketTemplate list,
bNodeSocketTemplate ntemp,
const char  defname[],
char  delim 
)
static

◆ unique_socket_template_identifier_check()

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

Definition at line 4326 of file node.cc.

References data, and STREQ.

Referenced by unique_socket_template_identifier().

◆ update_socket_declarations()

static void update_socket_declarations ( ListBase sockets,
Span< blender::nodes::SocketDeclarationPtr declarations 
)
static

Definition at line 3693 of file node.cc.

References LISTBASE_FOREACH_INDEX.

Referenced by nodeSocketDeclarationsUpdate().

◆ update_typeinfo()

static void update_typeinfo ( Main bmain,
const struct bContext C,
bNodeTreeType treetype,
bNodeType nodetype,
bNodeSocketType socktype,
bool  unregister 
)
static

◆ write_node_socket()

static void write_node_socket ( BlendWriter writer,
bNodeSocket sock 
)
static

◆ write_node_socket_default_value()

static void write_node_socket_default_value ( BlendWriter writer,
bNodeSocket sock 
)
static

◆ write_node_socket_interface()

static void write_node_socket_interface ( BlendWriter writer,
bNodeSocket sock 
)
static

Variable Documentation

◆ IDType_ID_NT

IDTypeInfo IDType_ID_NT
Initial value:
= {
sizeof(bNodeTree),
"NodeTree",
"node_groups",
nullptr,
nullptr,
nullptr,
nullptr,
}
@ IDTYPE_FLAGS_APPEND_IS_REUSABLE
Definition: BKE_idtype.h:39
#define BLT_I18NCONTEXT_ID_NODETREE
@ INDEX_ID_NT
Definition: DNA_ID.h:996
#define FILTER_ID_NT
Definition: DNA_ID.h:915
@ ID_NT
Definition: DNA_ID_enums.h:68
struct bNodeTree bNodeTree
static void ntree_blend_read_lib(BlendLibReader *reader, ID *id)
Definition: node.cc:935
static void ntree_blend_read_data(BlendDataReader *reader, ID *id)
Definition: node.cc:835
static void ntree_blend_write(BlendWriter *writer, ID *id, const void *id_address)
Definition: node.cc:644
static void ntree_copy_data(Main *UNUSED(bmain), ID *id_dst, const ID *id_src, const int flag)
Definition: node.cc:134
static void ntree_blend_read_expand(BlendExpander *expander, ID *id)
Definition: node.cc:1018
static ID * node_owner_get(Main *bmain, ID *id, ID *owner_id_hint)
Definition: node.cc:407
static void node_foreach_id(ID *id, LibraryForeachIDData *data)
Definition: node.cc:329
static void node_foreach_path(ID *id, BPathForeachPathData *bpath_data)
Definition: node.cc:384
static void node_foreach_cache(ID *id, IDTypeForeachCacheFunctionCallback function_callback, void *user_data)
Definition: node.cc:360
static void ntree_init_data(ID *id)
Definition: node.cc:127
static void ntree_free_data(ID *id)
Definition: node.cc:226

Definition at line 1024 of file node.cc.

◆ LOG

CLG_LogRef LOG = {"bke.node"}
static

◆ node_clipboard

bNodeClipboard node_clipboard = {{nullptr}}
static

◆ NODE_INSTANCE_KEY_BASE

const bNodeInstanceKey NODE_INSTANCE_KEY_BASE = {5381}

◆ NODE_INSTANCE_KEY_NONE

const bNodeInstanceKey NODE_INSTANCE_KEY_NONE = {0}

◆ nodesockettypes_hash

GHash* nodesockettypes_hash = nullptr
static

◆ NodeSocketTypeUndefined

bNodeSocketType NodeSocketTypeUndefined

◆ nodetreetypes_hash

GHash* nodetreetypes_hash = nullptr
static

◆ NodeTreeTypeUndefined

bNodeTreeType NodeTreeTypeUndefined
static

Definition at line 110 of file node.cc.

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

◆ nodetypes_hash

GHash* nodetypes_hash = nullptr
static

◆ NodeTypeUndefined

bNodeType NodeTypeUndefined