Blender V5.0
BKE_node.hh File Reference
#include <optional>
#include "BLI_compiler_compat.h"
#include "BLI_span.hh"
#include "BKE_node_socket_value_fwd.hh"
#include "BKE_volume_enums.hh"
#include "DNA_node_types.h"
#include "RNA_types.hh"
#include "BLI_map.hh"
#include "BLI_string_ref.hh"

Go to the source code of this file.

Classes

struct  blender::bke::bNodeSocketTemplate
 Compact definition of a node socket. More...
struct  blender::bke::bNodeSocketType
 Defines a socket type. More...
struct  blender::bke::NodeInsertLinkParams
struct  blender::bke::bNodeType
 Defines a node type. More...
struct  blender::bke::bNodeTreeType
struct  blender::bke::NodeTreeIterStore
struct  blender::bke::bNodePreview
class  blender::bke::bNodeZoneType

Namespaces

namespace  blender
namespace  blender::nodes
namespace  blender::nodes::value_elem
namespace  blender::nodes::inverse_eval
namespace  blender::compositor
namespace  blender::bke

Macros

#define MAX_SOCKET   512
#define NODE_STORAGE_FUNCS(StorageT)
Common Node Types

Defined here rather than #BKE_node_legacy_types.hh for inline usage.

#define NODE_UNDEFINED   -2 /* node type is not registered */
#define NODE_CUSTOM   -1 /* for dynamically registered custom types */
#define NODE_GROUP   2
#define NODE_FRAME   5
#define NODE_REROUTE   6
#define NODE_GROUP_INPUT   7
#define NODE_GROUP_OUTPUT   8
#define NODE_CUSTOM_GROUP   9
#define NODE_LEGACY_TYPE_GENERATION_START   5000

Functions

Generic API, Trees
bNodeTreeTypeblender::bke::node_tree_type_find (StringRef idname)
void blender::bke::node_tree_type_add (bNodeTreeType &nt)
void blender::bke::node_tree_type_free_link (const bNodeTreeType &nt)
bool blender::bke::node_tree_is_registered (const bNodeTree &ntree)
Span< bNodeTreeType * > blender::bke::node_tree_types_get ()
void blender::bke::node_tree_set_type (bNodeTree &ntree)
bNodeTreeblender::bke::node_tree_add_tree (Main *bmain, StringRef name, StringRef idname)
bNodeTreeblender::bke::node_tree_add_in_lib (Main *bmain, Library *owner_library, StringRefNull name, StringRefNull idname)
void blender::bke::node_tree_free_embedded_tree (bNodeTree *ntree)
bNodeTree ** blender::bke::node_tree_ptr_from_id (ID *id)
bNodeTreeblender::bke::node_tree_from_id (ID *id)
bool blender::bke::node_tree_contains_tree (const bNodeTree &tree_to_search_in, const bNodeTree &tree_to_search_for)
void blender::bke::node_tree_update_all_users (Main *main, ID *id)
void blender::bke::node_tree_set_output (bNodeTree &ntree)
bNodeTreeblender::bke::node_tree_localize (bNodeTree *ntree, std::optional< ID * > new_owner_id)
void blender::bke::node_tree_blend_write (BlendWriter *writer, bNodeTree *ntree)
Node Tree
void blender::bke::node_tree_remove_layer_n (bNodeTree *ntree, Scene *scene, int layer_index)
void blender::bke::node_system_init ()
void blender::bke::node_system_exit ()
bNodeTreeblender::bke::node_tree_add_tree_embedded (Main *bmain, ID *owner_id, StringRefNull name, StringRefNull idname)
void blender::bke::node_tree_free_tree (bNodeTree &ntree)
bNodeTreeblender::bke::node_tree_copy_tree_ex (const bNodeTree &ntree, Main *bmain, bool do_id_user)
bNodeTreeblender::bke::node_tree_copy_tree (Main *bmain, const bNodeTree &ntree)
void blender::bke::node_tree_free_local_node (bNodeTree &ntree, bNode &node)
void blender::bke::node_tree_update_all_new (Main &main)
void blender::bke::node_update_asset_metadata (bNodeTree &node_tree)
void blender::bke::node_tree_node_flag_set (bNodeTree &ntree, int flag, bool enable)
void blender::bke::node_tree_local_merge (Main *bmain, bNodeTree *localtree, bNodeTree *ntree)
void blender::bke::node_tree_blend_read_data (BlendDataReader *reader, ID *owner_id, bNodeTree *ntree)
bool blender::bke::node_is_static_socket_type (const bNodeSocketType &stype)
StringRefNull blender::bke::node_socket_sub_type_label (int subtype)
void blender::bke::node_remove_socket_ex (bNodeTree &ntree, bNode &node, bNodeSocket &sock, bool do_id_user)
void blender::bke::node_modify_socket_type (bNodeTree &ntree, bNode &node, bNodeSocket &sock, StringRefNull idname)
void blender::bke::node_unlink_node (bNodeTree &ntree, bNode &node)
void blender::bke::node_unlink_attached (bNodeTree *ntree, const bNode *parent)
void blender::bke::node_rebuild_id_vector (bNodeTree &node_tree)
bNodeblender::bke::node_copy_with_mapping (bNodeTree *dst_tree, const bNode &node_src, int flag, std::optional< StringRefNull > dst_unique_name, std::optional< int > dst_unique_identifier, Map< const bNodeSocket *, bNodeSocket * > &new_socket_map, bool allow_duplicate_names=false)
void blender::bke::node_socket_move_default_value (Main &bmain, bNodeTree &tree, bNodeSocket &src, bNodeSocket &dst)
void blender::bke::node_free_node (bNodeTree *tree, bNode &node)
void blender::bke::node_node_foreach_id (bNode *node, LibraryForeachIDData *data)
void blender::bke::node_link_set_mute (bNodeTree &ntree, bNodeLink &link, const bool muted)
bool blender::bke::node_link_is_selected (const bNodeLink &link)
void blender::bke::node_internal_relink (bNodeTree &ntree, bNode &node)
void blender::bke::node_position_relative (bNode &from_node, const bNode &to_node, const bNodeSocket *from_sock, const bNodeSocket &to_sock)
void blender::bke::node_position_propagate (bNode &node)
bNodeblender::bke::node_find_root_parent (bNode &node)
void blender::bke::node_chain_iterator (const bNodeTree *ntree, const bNode *node_start, bool(*callback)(bNode *, bNode *, void *, const bool), void *userdata, bool reversed)
void blender::bke::node_chain_iterator_backwards (const bNodeTree *ntree, bNode *node_start, bool(*callback)(bNode *, bNode *, void *), void *userdata, int recursion_lvl)
void blender::bke::node_parents_iterator (bNode *node, bool(*callback)(bNode *, void *), void *userdata)
bool blender::bke::node_is_dangling_reroute (const bNodeTree &ntree, const bNode &node)
bNodeblender::bke::node_get_active_paint_canvas (bNodeTree &ntree)
bool blender::bke::node_supports_active_flag (const bNode &node, int sub_activity)
 Does the given node supports the sub active flag.
void blender::bke::node_set_socket_availability (bNodeTree &ntree, bNodeSocket &sock, bool is_available)
bool blender::bke::node_declaration_ensure (bNodeTree &ntree, bNode &node)
bool blender::bke::node_declaration_ensure_on_outdated_node (bNodeTree &ntree, bNode &node)
void blender::bke::node_socket_declarations_update (bNode *node)
bool blender::bke::node_preview_used (const bNode &node)
bNodePreviewblender::bke::node_preview_verify (Map< bNodeInstanceKey, bNodePreview > &previews, bNodeInstanceKey key, int xsize, int ysize, bool create)
void blender::bke::node_preview_init_tree (bNodeTree *ntree, int xsize, int ysize)
void blender::bke::node_preview_remove_unused (bNodeTree *ntree)
void blender::bke::node_preview_merge_tree (bNodeTree *to_ntree, bNodeTree *from_ntree, bool remove_old)

Variables

constexpr int NODE_DEFAULT_MAX_WIDTH = 700
constexpr int GROUP_NODE_DEFAULT_WIDTH = 140
constexpr int GROUP_NODE_MAX_WIDTH = NODE_DEFAULT_MAX_WIDTH
constexpr int GROUP_NODE_MIN_WIDTH = 60

Node Type Definitions

#define NODE_CLASS_INPUT   0
#define NODE_CLASS_OUTPUT   1
#define NODE_CLASS_OP_COLOR   3
#define NODE_CLASS_OP_VECTOR   4
#define NODE_CLASS_OP_FILTER   5
#define NODE_CLASS_GROUP   6
#define NODE_CLASS_CONVERTER   8
#define NODE_CLASS_MATTE   9
#define NODE_CLASS_DISTORT   10
#define NODE_CLASS_PATTERN   12
#define NODE_CLASS_TEXTURE   13
#define NODE_CLASS_SCRIPT   32
#define NODE_CLASS_INTERFACE   33
#define NODE_CLASS_SHADER   40
#define NODE_CLASS_GEOMETRY   41
#define NODE_CLASS_ATTRIBUTE   42
#define NODE_CLASS_LAYOUT   100
enum class  blender::bke::NodeColorTag {
  blender::bke::None = 0 , blender::bke::Attribute = 1 , blender::bke::Color = 2 , blender::bke::Converter = 3 ,
  blender::bke::Distort = 4 , blender::bke::Filter = 5 , blender::bke::Geometry = 6 , blender::bke::Input = 7 ,
  blender::bke::Matte = 8 , blender::bke::Output = 9 , blender::bke::Script = 10 , blender::bke::Shader = 11 ,
  blender::bke::Texture = 12 , blender::bke::Vector = 13 , blender::bke::Pattern = 14 , blender::bke::Interface = 15 ,
  blender::bke::Group = 16
}
using blender::bke::NodeMultiFunctionBuildFunction = void (*)(blender::nodes::NodeMultiFunctionBuilder &builder)
using blender::bke::NodeGeometryExecFunction = void (*)(blender::nodes::GeoNodeExecParams params)
using blender::bke::NodeDeclareFunction = void (*)(blender::nodes::NodeDeclarationBuilder &builder)
using blender::bke::NodeDeclareDynamicFunction
using blender::bke::SocketGetCPPValueFunction = void (*)(const void *socket_value, void *r_value)
using blender::bke::SocketGetGeometryNodesCPPValueFunction = SocketValueVariant (*)(const void *socket_value)
using blender::bke::NodeGatherSocketLinkOperationsFunction
using blender::bke::NodeGatherAddOperationsFunction
using blender::bke::NodeGetCompositorOperationFunction
using blender::bke::NodeExtraInfoFunction = void (*)(blender::nodes::NodeExtraInfoParams &params)
using blender::bke::NodeInverseElemEvalFunction
using blender::bke::NodeElemEvalFunction = void (*)(blender::nodes::value_elem::ElemEvalParams &params)
using blender::bke::NodeInverseEvalFunction = void (*)(blender::nodes::inverse_eval::InverseEvalParams &params)
using blender::bke::NodeInternallyLinkedInputFunction
using blender::bke::NodeBlendWriteFunction
using blender::bke::NodeBlendDataReadFunction = void (*)(bNodeTree &tree, bNode &node, BlendDataReader &reader)
using blender::bke::NodeInitExecFunction
using blender::bke::NodeFreeExecFunction = void (*)(void *nodedata)
using blender::bke::NodeExecFunction
using blender::bke::NodeGPUExecFunction
using blender::bke::NodeMaterialXFunction = void (*)(void *data, bNode *node, bNodeSocket *out)
using blender::bke::bNodeClassCallback = void (*)(void *calldata, int nclass, StringRefNull name)

Node Tree Iterator

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

Variables:

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

Examples:

FOREACH_NODETREE_BEGIN(bmain, nodetree, id) {
if (id == nodetree)
printf("This is a linkable node tree");
FOREACH_NODETREE_BEGIN(bmain, nodetree, id) {
if (nodetree->idname == "ShaderNodeTree")
printf("This is a shader node tree);
if (GS(id) == ID_MA)
printf(" and it's owned by a material");
} FOREACH_NODETREE_END;
#define FOREACH_NODETREE_END
Definition BKE_node.hh:881
#define FOREACH_NODETREE_BEGIN(bmain, _nodetree, _id)
Definition BKE_node.hh:871
#define printf(...)
#define FOREACH_NODETREE_BEGIN(bmain, _nodetree, _id)
#define FOREACH_NODETREE_END
void blender::bke::node_tree_iterator_init (NodeTreeIterStore *ntreeiter, Main *bmain)
bool blender::bke::node_tree_iterator_step (NodeTreeIterStore *ntreeiter, bNodeTree **r_nodetree, ID **r_id)

Node Type Access

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

Generic API, Nodes

const bNodeInstanceKey blender::bke::NODE_INSTANCE_KEY_BASE = {5381}
const bNodeInstanceKey blender::bke::NODE_INSTANCE_KEY_NONE = {0}
bNodeTypeblender::bke::node_type_find (StringRef idname)
StringRefNull blender::bke::node_type_find_alias (StringRefNull alias)
void blender::bke::node_register_type (bNodeType &ntype)
void blender::bke::node_unregister_type (bNodeType &ntype)
void blender::bke::node_register_alias (bNodeType &nt, StringRef alias)
Span< bNodeType * > blender::bke::node_types_get ()
bNodeSocketTypeblender::bke::node_socket_type_find (StringRef idname)
bNodeSocketTypeblender::bke::node_socket_type_find_static (int type, int subtype=0)
void blender::bke::node_register_socket_type (bNodeSocketType &stype)
void blender::bke::node_unregister_socket_type (bNodeSocketType &stype)
bool blender::bke::node_socket_is_registered (const bNodeSocket &sock)
StringRefNull blender::bke::node_socket_type_label (const bNodeSocketType &stype)
std::optional< StringRefNullblender::bke::node_static_socket_type (int type, int subtype, std::optional< int > dimensions=std::nullopt)
std::optional< StringRefNullblender::bke::node_static_socket_interface_type_new (int type, int subtype, std::optional< int > dimensions=std::nullopt)
std::optional< StringRefNullblender::bke::node_static_socket_label (int type, int subtype)
Span< bNodeSocketType * > blender::bke::node_socket_types_get ()
bNodeSocketblender::bke::node_find_socket (bNode &node, eNodeSocketInOut in_out, StringRef identifier)
const bNodeSocketblender::bke::node_find_socket (const bNode &node, eNodeSocketInOut in_out, StringRef identifier)
bNodeSocketblender::bke::node_add_socket (bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out, StringRefNull idname, StringRefNull identifier, StringRefNull name)
bNodeSocketblender::bke::node_add_static_socket (bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out, int type, int subtype, StringRefNull identifier, StringRefNull name)
void blender::bke::node_remove_socket (bNodeTree &ntree, bNode &node, bNodeSocket &sock)
void blender::bke::node_modify_socket_type_static (bNodeTree *ntree, bNode *node, bNodeSocket *sock, int type, int subtype)
bNodeblender::bke::node_add_node (const bContext *C, bNodeTree &ntree, StringRef idname, std::optional< int > unique_identifier=std::nullopt)
bNodeblender::bke::node_add_static_node (const bContext *C, bNodeTree &ntree, int type)
void blender::bke::node_unique_name (bNodeTree &ntree, bNode &node)
void blender::bke::node_unique_id (bNodeTree &ntree, bNode &node)
void blender::bke::node_remove_node (Main *bmain, bNodeTree &ntree, bNode &node, bool do_id_user, bool remove_animation=true)
float2 blender::bke::node_dimensions_get (const bNode &node)
void blender::bke::node_tag_update_id (bNode &node)
void blender::bke::node_internal_links (bNode &node, bNodeLink **r_links, int *r_len)
bNodeLinkblender::bke::node_add_link (bNodeTree &ntree, bNode &fromnode, bNodeSocket &fromsock, bNode &tonode, bNodeSocket &tosock)
void blender::bke::node_remove_link (bNodeTree *ntree, bNodeLink &link)
void blender::bke::node_remove_socket_links (bNodeTree &ntree, bNodeSocket &sock)
bool blender::bke::node_link_is_hidden (const bNodeLink &link)
void blender::bke::node_attach_node (bNodeTree &ntree, bNode &node, bNode &parent)
void blender::bke::node_detach_node (bNodeTree &ntree, bNode &node)
bNodeblender::bke::node_find_node_try (bNodeTree &ntree, bNodeSocket &socket)
bNodeblender::bke::node_find_node (bNodeTree &ntree, bNodeSocket &socket)
const bNodeblender::bke::node_find_node (const bNodeTree &ntree, const bNodeSocket &socket)
bNodeblender::bke::node_find_node_by_name (bNodeTree &ntree, StringRefNull name)
const bNodeTreeInterfaceSocketblender::bke::node_find_interface_input_by_identifier (const bNodeTree &ntree, StringRef identifier)
bool blender::bke::node_is_parent_and_child (const bNode &parent, const bNode &child)
int blender::bke::node_count_socket_links (const bNodeTree &ntree, const bNodeSocket &sock)
bool blender::bke::node_set_selected (bNode &node, bool select)
void blender::bke::node_set_active (bNodeTree &ntree, bNode &node)
bNodeblender::bke::node_get_active (bNodeTree &ntree)
void blender::bke::node_clear_active (bNodeTree &ntree)
bNodeblender::bke::node_get_active_texture (bNodeTree &ntree)
int blender::bke::node_socket_link_limit (const bNodeSocket &sock)
bNodeInstanceKey blender::bke::node_instance_key (bNodeInstanceKey parent_key, const bNodeTree *ntree, const bNode *node)

Node Generic Functions

bNodeTreeType blender::bke::NodeTreeTypeUndefined
bNodeType blender::bke::NodeTypeUndefined
bNodeSocketType blender::bke::NodeSocketTypeUndefined
bool blender::bke::node_is_connected_to_output (const bNodeTree &ntree, const bNode &node)
bNodeSocketblender::bke::node_find_enabled_socket (bNode &node, eNodeSocketInOut in_out, StringRef name)
bNodeSocketblender::bke::node_find_enabled_input_socket (bNode &node, StringRef name)
bNodeSocketblender::bke::node_find_enabled_output_socket (bNode &node, StringRef name)
std::optional< eCustomDataTypeblender::bke::socket_type_to_custom_data_type (eNodeSocketDatatype type)
std::optional< eNodeSocketDatatypeblender::bke::custom_data_type_to_socket_type (eCustomDataType type)
const CPPTypeblender::bke::socket_type_to_geo_nodes_base_cpp_type (eNodeSocketDatatype type)
std::optional< eNodeSocketDatatypeblender::bke::geo_nodes_base_cpp_type_to_socket_type (const CPPType &type)
std::optional< VolumeGridTypeblender::bke::socket_type_to_grid_type (eNodeSocketDatatype type)
std::optional< eNodeSocketDatatypeblender::bke::grid_type_to_socket_type (VolumeGridType type)
void blender::bke::register_node_zone_type (const bNodeZoneType &zone_type)
Span< const bNodeZoneType * > blender::bke::all_zone_types ()
Span< int > blender::bke::all_zone_node_types ()
Span< int > blender::bke::all_zone_input_node_types ()
Span< int > blender::bke::all_zone_output_node_types ()
const bNodeZoneTypeblender::bke::zone_type_by_node_type (const int node_type)

Macro Definition Documentation

◆ FOREACH_NODETREE_BEGIN

#define FOREACH_NODETREE_BEGIN ( bmain,
_nodetree,
_id )
Value:
{ \
bNodeTree *_nodetree; \
ID *_id; \
/* avoid compiler warning about unused variables */ \
blender::bke::node_tree_iterator_init(&_nstore, bmain); \
while (blender::bke::node_tree_iterator_step(&_nstore, &_nodetree, &_id) == true) { \
if (_nodetree) {
bool node_tree_iterator_step(NodeTreeIterStore *ntreeiter, bNodeTree **r_nodetree, ID **r_id)
Definition node.cc:5476
Definition DNA_ID.h:414

Definition at line 871 of file BKE_node.hh.

Referenced by BKE_ntree_update_tag_id_changed(), blo_do_versions_250(), blo_do_versions_260(), blo_do_versions_270(), blo_do_versions_280(), blo_do_versions_290(), blo_do_versions_300(), blo_do_versions_400(), blo_do_versions_410(), blo_do_versions_420(), blo_do_versions_430(), blo_do_versions_440(), blo_do_versions_450(), blo_do_versions_500(), do_version_curvemapping_walker(), do_versions_after_linking_270(), do_versions_after_linking_280(), do_versions_after_linking_290(), do_versions_after_linking_300(), do_versions_after_linking_400(), do_versions_after_linking_440(), do_versions_after_linking_450(), do_versions_after_linking_500(), blender::bke::NodeTreeRelations::ensure_all_trees(), blender::nodes::geo_eval_log::GeoTreeLog::ensure_node_warnings(), blender::nodes::tests::NodeTest::get_node_trees(), blender::bke::node_tree_update_all_new(), blender::bke::node_tree_update_all_users(), text_update_shader_exec(), blender::bke::NodeTreeMainUpdater::update(), blender::bke::update_typeinfo(), version_node_socket_index_animdata(), version_switch_node_input_prefix(), version_system_idprops_nodes_generate(), and wm_file_read_post().

◆ FOREACH_NODETREE_END

◆ MAX_SOCKET

#define MAX_SOCKET   512

Definition at line 28 of file BKE_node.hh.

Referenced by ntreeExecGPUNodes(), ntreeExecThreadNodes(), and tex_output().

◆ NODE_CLASS_ATTRIBUTE

◆ NODE_CLASS_CONVERTER

#define NODE_CLASS_CONVERTER   8

Definition at line 453 of file BKE_node.hh.

Referenced by foreach_nodeclass(), foreach_nodeclass(), foreach_nodeclass(), foreach_nodeclass(), blender::bke::node_color_tag(), blender::ed::space_node::node_get_colorid(), node_group_ui_class(), blender::nodes::node_fn_align_euler_to_vector_cc::node_register(), blender::nodes::node_fn_align_rotation_to_vector_cc::node_register(), blender::nodes::node_fn_axes_to_rotation_cc::node_register(), blender::nodes::node_fn_axis_angle_to_rotation_cc::node_register(), blender::nodes::node_fn_bit_math_cc::node_register(), blender::nodes::node_fn_boolean_math_cc::node_register(), blender::nodes::node_fn_combine_color_cc::node_register(), blender::nodes::node_fn_combine_matrix_cc::node_register(), blender::nodes::node_fn_combine_transform_cc::node_register(), blender::nodes::node_fn_compare_cc::node_register(), blender::nodes::node_fn_euler_to_rotation_cc::node_register(), blender::nodes::node_fn_find_in_string_cc::node_register(), blender::nodes::node_fn_float_to_int_cc::node_register(), blender::nodes::node_fn_format_string_cc::node_register(), blender::nodes::node_fn_hash_value_cc::node_register(), blender::nodes::node_fn_integer_math_cc::node_register(), blender::nodes::node_fn_invert_matrix_cc::node_register(), blender::nodes::node_fn_invert_rotation_cc::node_register(), blender::nodes::node_fn_match_string_cc::node_register(), blender::nodes::node_fn_matrix_determinant_cc::node_register(), blender::nodes::node_fn_matrix_multiply_cc::node_register(), blender::nodes::node_fn_project_point_cc::node_register(), blender::nodes::node_fn_quaternion_to_rotation_cc::node_register(), blender::nodes::node_fn_random_value_cc::node_register(), blender::nodes::node_fn_replace_string_cc::node_register(), blender::nodes::node_fn_rotate_euler_cc::node_register(), blender::nodes::node_fn_rotate_rotation_cc::node_register(), blender::nodes::node_fn_rotate_vector_cc::node_register(), blender::nodes::node_fn_rotation_to_axis_angle_cc::node_register(), blender::nodes::node_fn_rotation_to_euler_cc::node_register(), blender::nodes::node_fn_rotation_to_quaternion_cc::node_register(), blender::nodes::node_fn_separate_color_cc::node_register(), blender::nodes::node_fn_separate_matrix_cc::node_register(), blender::nodes::node_fn_separate_transform_cc::node_register(), blender::nodes::node_fn_slice_string_cc::node_register(), blender::nodes::node_fn_string_length_cc::node_register(), blender::nodes::node_fn_string_to_value_cc::node_register(), blender::nodes::node_fn_transform_direction_cc::node_register(), blender::nodes::node_fn_transform_point_cc::node_register(), blender::nodes::node_fn_transpose_matrix_cc::node_register(), blender::nodes::node_fn_value_to_string_cc::node_register(), blender::nodes::node_geo_accumulate_field_cc::node_register(), blender::nodes::node_geo_combine_bundle_cc::node_register(), blender::nodes::node_geo_evaluate_at_index_cc::node_register(), blender::nodes::node_geo_evaluate_closure_cc::node_register(), blender::nodes::node_geo_evaluate_on_domain_cc::node_register(), blender::nodes::node_geo_field_average_cc::node_register(), blender::nodes::node_geo_field_min_and_max_cc::node_register(), blender::nodes::node_geo_field_variance_cc::node_register(), blender::nodes::node_geo_index_of_nearest_cc::node_register(), blender::nodes::node_geo_join_bundle::node_register(), blender::nodes::node_geo_list_cc::node_register(), blender::nodes::node_geo_list_get_item_cc::node_register(), blender::nodes::node_geo_list_length_cc::node_register(), blender::nodes::node_geo_separate_bundle_cc::node_register(), blender::nodes::node_geo_string_join_cc::node_register(), blender::nodes::node_geo_uv_pack_islands_cc::node_register(), blender::nodes::node_geo_uv_unwrap_cc::node_register(), blender::nodes::node_shader_map_range_cc::node_shader_map_range_ui_class(), blender::bke::node_type_base(), blender::nodes::node_composite_relative_to_pixel_cc::register_node(), blender::nodes::node_geo_index_switch_cc::register_node(), blender::nodes::node_geo_menu_switch_cc::register_node(), blender::nodes::node_geo_switch_cc::register_node(), register_node_type_cmp_combine_color(), register_node_type_cmp_convert_color_space(), blender::nodes::node_composite_convert_to_display_cc::register_node_type_cmp_convert_to_display(), register_node_type_cmp_idmask(), register_node_type_cmp_premulkey(), register_node_type_cmp_rgbtobw(), register_node_type_cmp_separate_color(), register_node_type_cmp_setalpha(), register_node_type_cmp_split(), register_node_type_cmp_switch(), register_node_type_cmp_switch_view(), register_node_type_cmp_view_levels(), register_node_type_sh_blackbody(), register_node_type_sh_clamp(), register_node_type_sh_combcolor(), register_node_type_sh_combxyz(), register_node_type_sh_curve_float(), register_node_type_sh_map_range(), register_node_type_sh_math(), register_node_type_sh_mix(), register_node_type_sh_rgbtobw(), register_node_type_sh_sepcolor(), register_node_type_sh_sepxyz(), register_node_type_sh_shadertorgb(), register_node_type_sh_squeeze(), register_node_type_sh_valtorgb(), register_node_type_sh_wavelength(), register_node_type_tex_distance(), register_node_type_tex_math(), register_node_type_tex_rgbtobw(), register_node_type_tex_valtonor(), register_node_type_tex_valtorgb(), and blender::nodes::node_sh_mix_cc::sh_node_mix_ui_class().

◆ NODE_CLASS_DISTORT

◆ NODE_CLASS_GEOMETRY

#define NODE_CLASS_GEOMETRY   41

Definition at line 461 of file BKE_node.hh.

Referenced by foreach_nodeclass(), blender::bke::node_color_tag(), blender::ed::space_node::node_get_colorid(), blender::ed::space_node::node_get_extra_info(), node_group_ui_class(), blender::nodes::node_geo_bake_cc::node_register(), blender::nodes::node_geo_boolean_cc::node_register(), blender::nodes::node_geo_bounding_box_cc::node_register(), blender::nodes::node_geo_convex_hull_cc::node_register(), blender::nodes::node_geo_curve_fill_cc::node_register(), blender::nodes::node_geo_curve_fillet_cc::node_register(), blender::nodes::node_geo_curve_length_cc::node_register(), blender::nodes::node_geo_curve_primitive_arc_cc::node_register(), blender::nodes::node_geo_curve_primitive_bezier_segment_cc::node_register(), blender::nodes::node_geo_curve_primitive_circle_cc::node_register(), blender::nodes::node_geo_curve_primitive_line_cc::node_register(), blender::nodes::node_geo_curve_primitive_quadratic_bezier_cc::node_register(), blender::nodes::node_geo_curve_primitive_quadrilateral_cc::node_register(), blender::nodes::node_geo_curve_primitive_spiral_cc::node_register(), blender::nodes::node_geo_curve_primitive_star_cc::node_register(), blender::nodes::node_geo_curve_resample_cc::node_register(), blender::nodes::node_geo_curve_reverse_cc::node_register(), blender::nodes::node_geo_curve_sample_cc::node_register(), blender::nodes::node_geo_curve_set_handle_type_cc::node_register(), blender::nodes::node_geo_curve_spline_type_cc::node_register(), blender::nodes::node_geo_curve_subdivide_cc::node_register(), blender::nodes::node_geo_curve_to_mesh_cc::node_register(), blender::nodes::node_geo_curve_to_points_cc::node_register(), blender::nodes::node_geo_curve_trim_cc::node_register(), blender::nodes::node_geo_curves_to_grease_pencil_cc::node_register(), blender::nodes::node_geo_deform_curves_on_surface_cc::node_register(), blender::nodes::node_geo_delete_geometry_cc::node_register(), blender::nodes::node_geo_distribute_points_in_grid_cc::node_register(), blender::nodes::node_geo_distribute_points_in_volume_cc::node_register(), blender::nodes::node_geo_distribute_points_on_faces_cc::node_register(), blender::nodes::node_geo_dual_mesh_cc::node_register(), blender::nodes::node_geo_duplicate_elements_cc::node_register(), blender::nodes::node_geo_edge_paths_to_curves_cc::node_register(), blender::nodes::node_geo_edge_split_cc::node_register(), blender::nodes::node_geo_extrude_mesh_cc::node_register(), blender::nodes::node_geo_field_to_grid_cc::node_register(), blender::nodes::node_geo_flip_faces_cc::node_register(), blender::nodes::node_geo_geometry_to_instance_cc::node_register(), blender::nodes::node_geo_get_named_grid_cc::node_register(), blender::nodes::node_geo_grease_pencil_set_depth_mode::node_register(), blender::nodes::node_geo_grease_pencil_to_curves_cc::node_register(), blender::nodes::node_geo_grid_advect_cc::node_register(), blender::nodes::node_geo_grid_curl_cc::node_register(), blender::nodes::node_geo_grid_divergence_cc::node_register(), blender::nodes::node_geo_grid_gradient_cc::node_register(), blender::nodes::node_geo_grid_laplacian_cc::node_register(), blender::nodes::node_geo_grid_prune_cc::node_register(), blender::nodes::node_geo_grid_to_mesh_cc::node_register(), blender::nodes::node_geo_grid_voxelize_cc::node_register(), blender::nodes::node_geo_instance_on_points_cc::node_register(), blender::nodes::node_geo_instances_to_points_cc::node_register(), blender::nodes::node_geo_interpolate_curves_cc::node_register(), blender::nodes::node_geo_join_geometry_cc::node_register(), blender::nodes::node_geo_material_replace_cc::node_register(), blender::nodes::node_geo_material_selection_cc::node_register(), blender::nodes::node_geo_merge_by_distance_cc::node_register(), blender::nodes::node_geo_merge_layers_cc::node_register(), blender::nodes::node_geo_mesh_primitive_circle_cc::node_register(), blender::nodes::node_geo_mesh_primitive_cone_cc::node_register(), blender::nodes::node_geo_mesh_primitive_cube_cc::node_register(), blender::nodes::node_geo_mesh_primitive_cylinder_cc::node_register(), blender::nodes::node_geo_mesh_primitive_grid_cc::node_register(), blender::nodes::node_geo_mesh_primitive_ico_sphere_cc::node_register(), blender::nodes::node_geo_mesh_primitive_line_cc::node_register(), blender::nodes::node_geo_mesh_primitive_uv_sphere_cc::node_register(), blender::nodes::node_geo_mesh_subdivide_cc::node_register(), blender::nodes::node_geo_mesh_to_curve_cc::node_register(), blender::nodes::node_geo_mesh_to_density_grid_cc::node_register(), blender::nodes::node_geo_mesh_to_points_cc::node_register(), blender::nodes::node_geo_mesh_to_sdf_grid_cc::node_register(), blender::nodes::node_geo_mesh_to_volume_cc::node_register(), blender::nodes::node_geo_points_cc::node_register(), blender::nodes::node_geo_points_to_curves_cc::node_register(), blender::nodes::node_geo_points_to_sdf_grid_cc::node_register(), blender::nodes::node_geo_points_to_vertices_cc::node_register(), blender::nodes::node_geo_points_to_volume_cc::node_register(), blender::nodes::node_geo_proximity_cc::node_register(), blender::nodes::node_geo_raycast_cc::node_register(), blender::nodes::node_geo_realize_instances_cc::node_register(), blender::nodes::node_geo_rotate_instances_cc::node_register(), blender::nodes::node_geo_sample_grid_cc::node_register(), blender::nodes::node_geo_sample_grid_index_cc::node_register(), blender::nodes::node_geo_sample_index_cc::node_register(), blender::nodes::node_geo_sample_nearest_cc::node_register(), blender::nodes::node_geo_sample_nearest_surface_cc::node_register(), blender::nodes::node_geo_sample_uv_surface_cc::node_register(), blender::nodes::node_geo_scale_elements_cc::node_register(), blender::nodes::node_geo_scale_instances_cc::node_register(), blender::nodes::node_geo_sdf_grid_boolean_cc::node_register(), blender::nodes::node_geo_sdf_grid_fillet_cc::node_register(), blender::nodes::node_geo_sdf_grid_laplacian_cc::node_register(), blender::nodes::node_geo_sdf_grid_mean_cc::node_register(), blender::nodes::node_geo_sdf_grid_mean_curvature_cc::node_register(), blender::nodes::node_geo_sdf_grid_median_cc::node_register(), blender::nodes::node_geo_sdf_grid_offset_cc::node_register(), blender::nodes::node_geo_separate_components_cc::node_register(), blender::nodes::node_geo_separate_geometry_cc::node_register(), blender::nodes::node_geo_set_curve_handles_cc::node_register(), blender::nodes::node_geo_set_curve_normal_cc::node_register(), blender::nodes::node_geo_set_curve_radius_cc::node_register(), blender::nodes::node_geo_set_curve_tilt_cc::node_register(), blender::nodes::node_geo_set_geometry_name::node_register(), blender::nodes::node_geo_set_grease_pencil_color_cc::node_register(), blender::nodes::node_geo_set_grease_pencil_softness_cc::node_register(), blender::nodes::node_geo_set_grid_background::node_register(), blender::nodes::node_geo_set_grid_transform::node_register(), blender::nodes::node_geo_set_id_cc::node_register(), blender::nodes::node_geo_set_instance_transform_cc::node_register(), blender::nodes::node_geo_set_material_cc::node_register(), blender::nodes::node_geo_set_material_index_cc::node_register(), blender::nodes::node_geo_set_mesh_normal_cc::node_register(), blender::nodes::node_geo_set_point_radius_cc::node_register(), blender::nodes::node_geo_set_position_cc::node_register(), blender::nodes::node_geo_set_shade_smooth_cc::node_register(), blender::nodes::node_geo_set_spline_cyclic_cc::node_register(), blender::nodes::node_geo_set_spline_resolution_cc::node_register(), blender::nodes::node_geo_sort_elements_cc::node_register(), blender::nodes::node_geo_split_to_instances_cc::node_register(), blender::nodes::node_geo_store_named_grid_cc::node_register(), blender::nodes::node_geo_string_to_curves_cc::node_register(), blender::nodes::node_geo_subdivision_surface_cc::node_register(), blender::nodes::node_geo_tool_set_face_set_cc::node_register(), blender::nodes::node_geo_tool_set_selection_cc::node_register(), blender::nodes::node_geo_triangulate_cc::node_register(), blender::nodes::node_geo_volume_cube_cc::node_register(), blender::nodes::node_geo_volume_to_mesh_cc::node_register(), blender::nodes::node_geo_transform_geometry_cc::register_node(), and blender::nodes::node_geo_translate_instances_cc::register_node().

◆ NODE_CLASS_GROUP

◆ NODE_CLASS_INPUT

#define NODE_CLASS_INPUT   0

#bNodeType.nclass (for add-menu and themes).

Definition at line 447 of file BKE_node.hh.

Referenced by composite_node_add_init(), foreach_nodeclass(), foreach_nodeclass(), foreach_nodeclass(), foreach_nodeclass(), blender::bke::node_color_tag(), blender::ed::space_node::node_get_colorid(), node_group_ui_class(), blender::nodes::node_fn_input_bool_cc::node_register(), blender::nodes::node_fn_input_color_cc::node_register(), blender::nodes::node_fn_input_int_cc::node_register(), blender::nodes::node_fn_input_rotation_cc::node_register(), blender::nodes::node_fn_input_special_characters_cc::node_register(), blender::nodes::node_fn_input_string_cc::node_register(), blender::nodes::node_fn_input_vector_cc::node_register(), blender::nodes::node_geo_camera_info_cc::node_register(), blender::nodes::node_geo_collection_info_cc::node_register(), blender::nodes::node_geo_curve_endpoint_selection_cc::node_register(), blender::nodes::node_geo_curve_handle_type_selection_cc::node_register(), blender::nodes::node_geo_curve_spline_parameter_cc::node_register(), blender::nodes::node_geo_curve_topology_curve_of_point_cc::node_register(), blender::nodes::node_geo_curve_topology_points_of_curve_cc::node_register(), blender::nodes::node_geo_edge_paths_to_selection_cc::node_register(), blender::nodes::node_geo_edges_to_face_groups_cc::node_register(), blender::nodes::node_geo_grid_info_cc::node_register(), blender::nodes::node_geo_image_cc::node_register(), blender::nodes::node_geo_image_info_cc::node_register(), blender::nodes::node_geo_import_csv::node_register(), blender::nodes::node_geo_import_obj::node_register(), blender::nodes::node_geo_import_stl::node_register(), blender::nodes::node_geo_import_text::node_register(), blender::nodes::node_geo_import_vdb::node_register(), blender::nodes::node_geo_input_active_camera_cc::node_register(), blender::nodes::node_geo_input_collection_cc::node_register(), blender::nodes::node_geo_input_curve_handles_cc::node_register(), blender::nodes::node_geo_input_curve_tilt_cc::node_register(), blender::nodes::node_geo_input_edge_smooth_cc::node_register(), blender::nodes::node_geo_input_face_smooth_cc::node_register(), blender::nodes::node_geo_input_id_cc::node_register(), blender::nodes::node_geo_input_index_cc::node_register(), blender::nodes::node_geo_input_instance_bounds_cc::node_register(), blender::nodes::node_geo_input_instance_rotation_cc::node_register(), blender::nodes::node_geo_input_instance_scale_cc::node_register(), blender::nodes::node_geo_input_instance_transform_cc::node_register(), blender::nodes::node_geo_input_material_cc::node_register(), blender::nodes::node_geo_input_material_index_cc::node_register(), blender::nodes::node_geo_input_mesh_edge_angle_cc::node_register(), blender::nodes::node_geo_input_mesh_edge_neighbors_cc::node_register(), blender::nodes::node_geo_input_mesh_edge_vertices_cc::node_register(), blender::nodes::node_geo_input_mesh_face_area_cc::node_register(), blender::nodes::node_geo_input_mesh_face_is_planar_cc::node_register(), blender::nodes::node_geo_input_mesh_face_neighbors_cc::node_register(), blender::nodes::node_geo_input_mesh_island_cc::node_register(), blender::nodes::node_geo_input_mesh_vertex_neighbors_cc::node_register(), blender::nodes::node_geo_input_named_attribute_cc::node_register(), blender::nodes::node_geo_input_named_layer_selection__cc::node_register(), blender::nodes::node_geo_input_normal_cc::node_register(), blender::nodes::node_geo_input_object_cc::node_register(), blender::nodes::node_geo_input_position_cc::node_register(), blender::nodes::node_geo_input_radius_cc::node_register(), blender::nodes::node_geo_input_scene_time_cc::node_register(), blender::nodes::node_geo_input_shortest_edge_paths_cc::node_register(), blender::nodes::node_geo_input_spline_cyclic_cc::node_register(), blender::nodes::node_geo_input_spline_length_cc::node_register(), blender::nodes::node_geo_input_spline_resolution_cc::node_register(), blender::nodes::node_geo_input_tangent_cc::node_register(), blender::nodes::node_geo_input_voxel_index_cc::node_register(), blender::nodes::node_geo_is_viewport_cc::node_register(), blender::nodes::node_geo_mesh_face_group_boundaries_cc::node_register(), blender::nodes::node_geo_mesh_topology_corners_of_edge_cc::node_register(), blender::nodes::node_geo_mesh_topology_corners_of_face_cc::node_register(), blender::nodes::node_geo_mesh_topology_corners_of_vertex_cc::node_register(), blender::nodes::node_geo_mesh_topology_edges_of_corner_cc::node_register(), blender::nodes::node_geo_mesh_topology_edges_of_vertex_cc::node_register(), blender::nodes::node_geo_mesh_topology_face_of_corner_cc::node_register(), blender::nodes::node_geo_mesh_topology_offset_corner_in_face_cc::node_register(), blender::nodes::node_geo_mesh_topology_vertex_of_corner_cc::node_register(), blender::nodes::node_geo_mouse_position_cc::node_register(), blender::nodes::node_geo_object_info_cc::node_register(), blender::nodes::node_geo_offset_point_in_curve_cc::node_register(), blender::nodes::node_geo_self_object_cc::node_register(), blender::nodes::node_geo_tool_3d_cursor_cc::node_register(), blender::nodes::node_geo_tool_active_element_cc::node_register(), blender::nodes::node_geo_tool_face_set_cc::node_register(), blender::nodes::node_geo_tool_selection_cc::node_register(), blender::nodes::node_geo_uv_tangent_cc::node_register(), blender::nodes::node_geo_viewport_transform_cc::node_register(), blender::nodes::nodes_geo_import_ply::node_register(), nodetree_uv_node_recursive(), blender::nodes::node_composite_image_coordinates_cc::register_node(), register_node_type_cmp_bokehimage(), register_node_type_cmp_curve_time(), register_node_type_cmp_image(), register_node_type_cmp_image_info(), register_node_type_cmp_mask(), register_node_type_cmp_movieclip(), register_node_type_cmp_normal(), register_node_type_cmp_rgb(), register_node_type_cmp_rlayers(), register_node_type_cmp_scene_time(), register_node_type_cmp_trackpos(), register_node_type_sh_ambient_occlusion(), register_node_type_sh_attribute(), register_node_type_sh_bevel(), register_node_type_sh_camera(), register_node_type_sh_fresnel(), register_node_type_sh_geometry(), register_node_type_sh_hair_info(), register_node_type_sh_layer_weight(), register_node_type_sh_light_path(), register_node_type_sh_object_info(), register_node_type_sh_particle_info(), register_node_type_sh_point_info(), register_node_type_sh_rgb(), register_node_type_sh_tangent(), register_node_type_sh_tex_coord(), register_node_type_sh_uvalongstroke(), register_node_type_sh_uvmap(), register_node_type_sh_value(), register_node_type_sh_vertex_color(), register_node_type_sh_volume_info(), register_node_type_sh_wireframe(), register_node_type_tex_coord(), register_node_type_tex_curve_time(), register_node_type_tex_image(), and register_node_type_tex_texture().

◆ NODE_CLASS_INTERFACE

◆ NODE_CLASS_LAYOUT

◆ NODE_CLASS_MATTE

◆ NODE_CLASS_OP_COLOR

◆ NODE_CLASS_OP_FILTER

◆ NODE_CLASS_OP_VECTOR

◆ NODE_CLASS_OUTPUT

◆ NODE_CLASS_PATTERN

◆ NODE_CLASS_SCRIPT

◆ NODE_CLASS_SHADER

◆ NODE_CLASS_TEXTURE

◆ NODE_CUSTOM

◆ NODE_CUSTOM_GROUP

◆ NODE_FRAME

◆ NODE_GROUP

◆ NODE_GROUP_INPUT

◆ NODE_GROUP_OUTPUT

◆ NODE_LEGACY_TYPE_GENERATION_START

#define NODE_LEGACY_TYPE_GENERATION_START   5000

◆ NODE_REROUTE

◆ NODE_STORAGE_FUNCS

#define NODE_STORAGE_FUNCS ( StorageT)
Value:
[[maybe_unused]] static StorageT &node_storage(bNode &node) \
{ \
return *static_cast<StorageT *>(node.storage); \
} \
[[maybe_unused]] static const StorageT &node_storage(const bNode &node) \
{ \
return *static_cast<const StorageT *>(node.storage); \
}

Definition at line 1240 of file BKE_node.hh.

◆ NODE_UNDEFINED

#define NODE_UNDEFINED   -2 /* node type is not registered */

Definition at line 809 of file BKE_node.hh.

Referenced by blender::bke::node_type_base().

Variable Documentation

◆ GROUP_NODE_DEFAULT_WIDTH

◆ GROUP_NODE_MAX_WIDTH

◆ GROUP_NODE_MIN_WIDTH

◆ NODE_DEFAULT_MAX_WIDTH