34 #define DNA_DEPRECATED_ALLOW
94 #define NODE_DEFAULT_MAX_WIDTH 700
109 const bool do_id_user);
143 while (new_input_sock !=
nullptr) {
145 new_input_sock = new_input_sock->
next;
146 input_sock_src = input_sock_src->
next;
151 while (new_output_sock !=
nullptr) {
153 new_output_sock = new_output_sock->
next;
154 output_sock_src = output_sock_src->
next;
162 new_pointers, link_dst->fromnode,
nullptr);
164 new_pointers, link_dst->fromsock,
nullptr);
167 new_pointers, link_dst->tosock,
nullptr);
169 if (link_dst->tosock) {
170 link_dst->tosock->link = link_dst;
212 node_dst = (
bNode *)node_dst->next, node_src = (
bNode *)node_src->next) {
213 if (node_dst->parent) {
215 new_pointers, node_dst->parent,
nullptr);
367 function_callback(
id, &key, (
void **)&
node->storage, 0,
user_data);
391 for (
int i = 0; lists[i] !=
nullptr; i++) {
399 BLI_assert(!
"Embedded node tree with no owner. Critical Main inconsistency.");
622 sock->
cache =
nullptr;
643 node->typeinfo =
nullptr;
669 switch (
node->type) {
688 memset(&npd->
pd, 0,
sizeof(npd->
pd));
709 iuser->
scene =
nullptr;
723 iuser->
scene =
nullptr;
977 while (sockdef->
type != -1) {
985 while (sockdef->
type != -1) {
1011 node->miniwidth = 42.0f;
1013 node->color[0] =
node->color[1] =
node->color[2] = 0.608;
1082 node->typeinfo = typeinfo;
1146 if (socktype &&
STREQ(sock->idname, socktype->
idname)) {
1151 if (socktype &&
STREQ(sock->idname, socktype->
idname)) {
1159 if (socktype &&
STREQ(sock->idname, socktype->
idname)) {
1164 if (socktype &&
STREQ(sock->idname, socktype->
idname)) {
1580 return "NodeSocketFloatUnsigned";
1582 return "NodeSocketFloatPercentage";
1584 return "NodeSocketFloatFactor";
1586 return "NodeSocketFloatAngle";
1588 return "NodeSocketFloatTime";
1590 return "NodeSocketFloatDistance";
1593 return "NodeSocketFloat";
1598 return "NodeSocketIntUnsigned";
1600 return "NodeSocketIntPercentage";
1602 return "NodeSocketIntFactor";
1605 return "NodeSocketInt";
1608 return "NodeSocketBool";
1612 return "NodeSocketVectorTranslation";
1614 return "NodeSocketVectorDirection";
1616 return "NodeSocketVectorVelocity";
1618 return "NodeSocketVectorAcceleration";
1620 return "NodeSocketVectorEuler";
1622 return "NodeSocketVectorXYZ";
1625 return "NodeSocketVector";
1628 return "NodeSocketColor";
1630 return "NodeSocketString";
1632 return "NodeSocketShader";
1634 return "NodeSocketObject";
1636 return "NodeSocketImage";
1638 return "NodeSocketGeometry";
1640 return "NodeSocketCollection";
1651 return "NodeSocketInterfaceFloatUnsigned";
1653 return "NodeSocketInterfaceFloatPercentage";
1655 return "NodeSocketInterfaceFloatFactor";
1657 return "NodeSocketInterfaceFloatAngle";
1659 return "NodeSocketInterfaceFloatTime";
1661 return "NodeSocketInterfaceFloatDistance";
1664 return "NodeSocketInterfaceFloat";
1669 return "NodeSocketInterfaceIntUnsigned";
1671 return "NodeSocketInterfaceIntPercentage";
1673 return "NodeSocketInterfaceIntFactor";
1676 return "NodeSocketInterfaceInt";
1679 return "NodeSocketInterfaceBool";
1683 return "NodeSocketInterfaceVectorTranslation";
1685 return "NodeSocketInterfaceVectorDirection";
1687 return "NodeSocketInterfaceVectorVelocity";
1689 return "NodeSocketInterfaceVectorAcceleration";
1691 return "NodeSocketInterfaceVectorEuler";
1693 return "NodeSocketInterfaceVectorXYZ";
1696 return "NodeSocketInterfaceVector";
1699 return "NodeSocketInterfaceColor";
1701 return "NodeSocketInterfaceString";
1703 return "NodeSocketInterfaceShader";
1705 return "NodeSocketInterfaceObject";
1707 return "NodeSocketInterfaceImage";
1709 return "NodeSocketInterfaceGeometry";
1711 return "NodeSocketInterfaceCollection";
1760 const bool do_id_user)
1831 if (sock == tsock) {
1832 if (r_node !=
nullptr) {
1835 if (r_sockindex !=
nullptr) {
1836 *r_sockindex = index;
1863 if (parent == child) {
1880 const bNode *node_start,
1883 const bool reversed)
1893 if ((reversed && (
link->
tonode == node_start)) ||
1906 const bNode *node_start,
1909 char recursion_mask)
1913 if (
link ==
nullptr) {
1945 const bNode *node_start,
1956 char recursion_mask = (1 << recursion_lvl);
1960 node->iter_flag &= ~recursion_mask;
2006 const char *
idname =
nullptr;
2012 const char *disabled_hint;
2013 if (ntype->type ==
type && (!ntype->poll || ntype->poll(ntype,
ntree, &disabled_hint))) {
2028 if (sock_src->
prop) {
2044 sock_dst->
cache =
nullptr;
2051 const bNode *node_src,
2059 *node_dst = *node_src;
2072 sock_dst !=
nullptr;
2080 sock_dst !=
nullptr;
2085 if (node_src->
prop) {
2092 link_dst !=
nullptr;
2102 link_dst->
tonode = node_dst;
2140 while (new_input_sock !=
nullptr) {
2141 input_sock_src->new_sock = new_input_sock;
2142 new_input_sock = new_input_sock->
next;
2143 input_sock_src = input_sock_src->
next;
2148 while (new_output_sock !=
nullptr) {
2149 output_sock_src->new_sock = new_output_sock;
2150 new_output_sock = new_output_sock->
next;
2151 output_sock_src = output_sock_src->
next;
2164 const bool do_id_user)
2169 while (new_node !=
nullptr) {
2171 new_node = new_node->
next;
2172 node_src = node_src->
next;
2261 return tot == muted;
2420 *rx =
x +
node->locx;
2421 *ry =
y +
node->locy;
2433 *rx =
x -
node->locx;
2434 *ry =
y -
node->locy;
2440 for (
const bNode *parent_iter =
node; parent_iter; parent_iter = parent_iter->parent) {
2441 if (parent_iter == parent) {
2457 node->parent = parent;
2472 node->parent =
nullptr;
2497 float offset_y =
U.widget_unit * tot_sock_idx;
2512 offset_y -=
U.widget_unit * tot_sock_idx;
2514 from_node->
locx = to_node->
locx + offset_x;
2515 from_node->
locy = to_node->
locy - offset_y;
2521 if (nsock->link !=
nullptr) {
2534 const bool is_embedded = (bmain ==
nullptr);
2595 if (xsize == 0 || ysize == 0) {
2600 if (preview->
rect) {
2601 if (preview->
xsize != xsize || preview->
ysize != ysize) {
2603 preview->
rect =
nullptr;
2607 if (preview->
rect ==
nullptr) {
2608 preview->
rect = (
unsigned char *)
MEM_callocN(4 * xsize + xsize * ysize *
sizeof(
char[4]),
2609 "node preview rect");
2610 preview->
xsize = xsize;
2611 preview->
ysize = ysize;
2621 if (preview->
rect) {
2629 if (preview->
rect) {
2640 bool create_previews)
2646 node->preview_xsize = xsize;
2647 node->preview_ysize = ysize;
2654 previews, (
bNodeTree *)
node->id, key, xsize, ysize, create_previews);
2718 if (preview && preview->
rect) {
2743 int xsize = to->
xsize;
2744 int ysize = to->
ysize;
2745 memcpy(to->
rect,
from->rect, xsize * ysize *
sizeof(
char[4]));
2754 if (!from_previews || !to_previews) {
2772 if (remove_old || !to_ntree->
previews) {
2813 if (
x >= 0 &&
y >= 0) {
2814 if (x < preview->xsize && y < preview->ysize) {
2815 unsigned char *tar = preview->
rect + 4 * ((preview->
xsize *
y) +
x);
2838 lb = &
node->outputs;
2864 if (
node->parent == parent) {
2895 if (
node->typeinfo->freefunc) {
2940 if (
node->typeinfo->freefunc_api) {
2944 node->typeinfo->freefunc_api(&
ptr);
2965 BLI_snprintf(prefix,
sizeof(prefix),
"nodes[\"%s\"]", propname_esc);
2968 if (bmain !=
nullptr) {
2979 const bool do_id_user)
3041 if (
ntree ==
nullptr) {
3066 if (tnode->type ==
node->type ||
3079 if (tnode->type ==
node->type) {
3128 return &((
Material *)
id)->nodetree;
3130 return &((
Light *)
id)->nodetree;
3132 return &((
World *)
id)->nodetree;
3134 return &((
Tex *)
id)->nodetree;
3136 return &((
Scene *)
id)->nodetree;
3150 return (nodetree !=
nullptr) ? *nodetree :
nullptr;
3156 if (
node == testnode) {
3166 if (sock == testsock) {
3208 while (node_src !=
nullptr) {
3209 node_local->original = node_src;
3210 node_src = node_src->
next;
3211 node_local = node_local->
next;
3229 if (localtree &&
ntree) {
3240 if (
ntree && localtree) {
3260 if (stype ==
nullptr) {
3386 sprintf(base,
"NodeTreeInterface_%s",
ntree->
id.
name + 2);
3524 if (
ntree == lookup) {
3563 if (
ntree ==
nullptr) {
3582 if (
node->id &&
GS(
node->id->name) == idtype) {
3621 if (
ntree ==
nullptr) {
3626 if (
node->id &&
GS(
node->id->name) == idtype) {
3627 if (
id && ok ==
false &&
node->id ==
id) {
3653 if (
ntree ==
nullptr) {
3658 if (
node->id &&
GS(
node->id->name) == idtype) {
3684 if (
ntree ==
nullptr) {
3700 if (
node->id && tnode->id) {
3701 if (
GS(
node->id->name) ==
GS(tnode->id->name)) {
3752 #define USE_NODE_CB_VALIDATE
3754 #ifdef USE_NODE_CB_VALIDATE
3773 #ifdef USE_NODE_CB_VALIDATE
3800 #ifdef USE_NODE_CB_VALIDATE
3810 #ifdef USE_NODE_CB_VALIDATE
3826 node->id = node_info->
id;
3838 if (
node->id ==
nullptr) {
3851 #ifdef USE_NODE_CB_VALIDATE
3856 node_info->
id =
node->id;
3919 while ((
c = *
str++)) {
3952 return (value_a != value_b);
4048 "temporary node instance key list");
4050 int num_untagged = 0;
4060 for (
int i = 0; i < num_untagged; i++) {
4078 if (link->tonode ==
node) {
4079 bNode *fromnode = link->fromnode;
4080 if (fromnode->
done == 0) {
4083 if (fromnode->
level <= level) {
4084 level = fromnode->
level - 1;
4091 if (
node->parent->done == 0) {
4094 if (
node->parent->level <= level) {
4095 level =
node->parent->level - 1;
4116 if (*r_deplist_len == 0) {
4117 *r_deplist =
nullptr;
4123 "sorted node array");
4127 if (
node->done == 0) {
4143 if (
node->done == 0) {
4174 sock->
link =
nullptr;
4179 link->tosock->link = link;
4189 if (link->fromnode && link->tonode && link->fromnode->level <= link->tonode->level) {
4208 if (
node->typeinfo->group_update_func) {
4221 if (
id ==
nullptr) {
4227 bool need_update =
false;
4230 if (
node->id ==
id) {
4231 if (
node->typeinfo->group_update_func) {
4283 if (
node->typeinfo->updatefunc) {
4334 if (
node->typeinfo->updatefunc) {
4348 bool changed =
false;
4361 if (
node->id ==
id) {
4364 if (
node->typeinfo->updatefunc) {
4384 if (
node->typeinfo &&
node->typeinfo->update_internal_links) {
4395 if (
node->label[0] !=
'\0') {
4398 else if (
node->typeinfo->labelfunc) {
4403 if (
label[0] ==
'\0') {
4406 if (tmp ==
node->typeinfo->ui_name) {
4431 const char **
UNUSED(disabled_hint))
4439 return node->typeinfo->poll(
node->typeinfo,
ntree, disabled_hint);
4452 #define DefNode(Category, ID, DefFunc, EnumName, StructName, UIName, UIDesc) \
4454 BLI_strncpy(ntype->idname, #Category #StructName, sizeof(ntype->idname)); \
4455 ntype->rna_ext.srna = RNA_struct_find(#Category #StructName); \
4456 BLI_assert(ntype->rna_ext.srna != nullptr); \
4457 RNA_struct_blender_type_set(ntype->rna_ext.srna, ntype); \
4479 bNodeType *ntype,
const char *idname,
const char *name,
short nclass,
short flag)
4500 if (ntemp !=
data->ntemp) {
4501 if (
STREQ(ntemp->identifier, name)) {
4512 const char defname[],
4542 BLI_strncpy(ntemp->identifier, ntemp->name,
sizeof(ntemp->identifier));
4549 ntemp->identifier[0] =
'\0';
4553 BLI_strncpy(ntemp->identifier, ntemp->name,
sizeof(ntemp->identifier));
4569 if (maxwidth <= minwidth) {
4600 const char *storagename,
4602 void (*copyfunc)(
struct bNodeTree *dest_ntree,
4603 struct bNode *dest_node,
4604 const struct bNode *src_node))
4660 const char **
UNUSED(r_disabled_hint))
4681 "NodeSocketUndefined",
5034 if (nt->rna_ext.free) {
5035 nt->rna_ext.free(nt->rna_ext.data);
5046 if (st->ext_socket.free) {
5047 st->ext_socket.free(st->ext_socket.data);
5049 if (st->ext_interface.free) {
5050 st->ext_interface.free(st->ext_interface.data);
5061 if (nt->rna_ext.free) {
5062 nt->rna_ext.free(nt->rna_ext.data);
5095 else if (ntreeiter->
scene) {
5097 *r_id = (
ID *)ntreeiter->
scene;
5100 else if (ntreeiter->
mat) {
5102 *r_id = (
ID *)ntreeiter->
mat;
5105 else if (ntreeiter->
tex) {
5107 *r_id = (
ID *)ntreeiter->
tex;
5110 else if (ntreeiter->
light) {
5112 *r_id = (
ID *)ntreeiter->
light;
5115 else if (ntreeiter->
world) {
5117 *r_id = (
ID *)ntreeiter->
world;
5145 if (
node->custom1 == layer_index) {
5148 else if (
node->custom1 > layer_index) {
void BKE_animdata_free(struct ID *id, const bool do_id_user)
void BKE_animdata_blend_read_data(struct BlendDataReader *reader, struct AnimData *adt)
void BKE_animdata_blend_write(struct BlendWriter *writer, struct AnimData *adt)
bool BKE_animdata_fix_paths_remove(struct ID *id, const char *path)
void IDP_BlendReadExpand(struct BlendExpander *expander, struct IDProperty *prop)
void IDP_FreeProperty_ex(struct IDProperty *prop, const bool do_id_user)
void IDP_BlendWrite(struct BlendWriter *writer, const struct IDProperty *prop)
void IDP_BlendReadLib(struct BlendLibReader *reader, struct IDProperty *prop)
void IDP_FreePropertyContent_ex(struct IDProperty *prop, const bool do_id_user)
#define IDP_BlendDataRead(reader, prop)
void IDP_foreach_property(struct IDProperty *id_property_root, const int type_filter, IDPForeachPropertyCallback callback, void *user_data)
struct IDProperty * IDP_CopyProperty_ex(const struct IDProperty *prop, const int flag) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void(* IDTypeForeachCacheFunctionCallback)(struct ID *id, const struct IDCacheKey *cache_key, void **cache_p, uint flags, void *user_data)
void id_us_min(struct ID *id)
void BKE_libblock_free_data_py(struct ID *id)
void BKE_libblock_free_data(struct ID *id, const bool do_id_user) ATTR_NONNULL()
@ LIB_ID_CREATE_NO_USER_REFCOUNT
@ LIB_ID_COPY_NO_ANIMDATA
void * BKE_libblock_alloc(struct Main *bmain, short type, const char *name, const int flag) ATTR_WARN_UNUSED_RESULT
struct ID * BKE_id_copy_ex(struct Main *bmain, const struct ID *id, struct ID **r_newid, const int flag)
void id_us_plus(struct ID *id)
void BKE_id_blend_write(struct BlendWriter *writer, struct ID *id)
#define BKE_LIB_FOREACHID_PROCESS(_data, _id_super, _cb_flag)
void BKE_lib_query_idpropertiesForeachIDLink_callback(struct IDProperty *id_prop, void *user_data)
#define BKE_LIB_FOREACHID_PROCESS_ID(_data, _id, _cb_flag)
struct ListBase * which_libbase(struct Main *bmain, short type)
void *(* NodeInitExecFunction)(struct bNodeExecContext *context, struct bNode *node, bNodeInstanceKey key)
#define NODE_TYPES_BEGIN(ntype)
#define NODE_CLASS_OUTPUT
void ntreeTexEndExecTree(struct bNodeTreeExec *exec)
#define NODE_CUSTOM_GROUP
BLI_INLINE bNodeInstanceKey BKE_node_instance_hash_iterator_get_key(bNodeInstanceHashIterator *iter)
void(* bNodeInstanceValueFP)(void *value)
BLI_INLINE void * BKE_node_instance_hash_iterator_get_value(bNodeInstanceHashIterator *iter)
void(* NodeExecFunction)(void *data, int thread, struct bNode *, struct bNodeExecData *execdata, struct bNodeStack **in, struct bNodeStack **out)
#define SH_NODE_TEX_ENVIRONMENT
void(* NodeFreeExecFunction)(void *nodedata)
#define CMP_NODE_CRYPTOMATTE_LEGACY
#define CMP_NODE_OUTPUT_FILE
#define FOREACH_NODETREE_END
#define NODE_TREE_TYPES_BEGIN(ntype)
int(* NodeGPUExecFunction)(struct GPUMaterial *mat, struct bNode *node, struct bNodeExecData *execdata, struct GPUNodeStack *in, struct GPUNodeStack *out)
#define NODE_SOCKET_TYPES_BEGIN(stype)
#define SH_NODE_TEX_POINTDENSITY
#define SH_NODE_CURVE_RGB
void ntreeShaderEndExecTree(struct bNodeTreeExec *exec)
#define NODE_INSTANCE_HASH_ITER(iter_, hash_)
#define FOREACH_NODETREE_BEGIN(bmain, _nodetree, _id)
#define TEX_NODE_CURVE_TIME
#define CMP_CRYPTOMATTE_SRC_RENDER
#define NODE_TREE_TYPES_END
#define CMP_NODE_R_LAYERS
#define NODE_SOCKET_TYPES_END
#define CMP_NODE_CURVE_VEC
#define NODE_CLASS_TEXTURE
#define BLI_assert_unreachable()
void BLI_ghash_clear(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
unsigned int BLI_ghashutil_strhash_p(const void *ptr)
GHash * BLI_ghash_str_new(const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
GHash * BLI_ghash_new(GHashHashFP hashfp, GHashCmpFP cmpfp, const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
unsigned int BLI_ghash_len(GHash *gh) ATTR_WARN_UNUSED_RESULT
bool BLI_ghash_haskey(GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
void(* GHashValFreeFP)(void *val)
void * BLI_ghash_lookup_default(GHash *gh, const void *key, void *val_default) ATTR_WARN_UNUSED_RESULT
GHashIterator * BLI_ghashIterator_new(GHash *gh) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
bool BLI_ghash_remove(GHash *gh, const void *key, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
void * BLI_ghash_popkey(GHash *gh, const void *key, GHashKeyFreeFP keyfreefp) ATTR_WARN_UNUSED_RESULT
void BLI_ghash_insert(GHash *gh, void *key, void *val)
void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
GHash * BLI_ghash_ptr_new(const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void * BLI_ghash_lookup(GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
#define LISTBASE_FOREACH(type, var, list)
void void void void void BLI_duplicatelist(struct ListBase *dst, const struct ListBase *src) ATTR_NONNULL(1
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void * BLI_findstring(const struct ListBase *listbase, const char *id, const int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_insertlinkbefore(struct ListBase *listbase, void *vnextlink, void *vnewlink) ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void rgba_float_to_uchar(unsigned char r_col[4], const float col_f[4])
MINLINE void linearrgb_to_srgb_uchar4(unsigned char srgb[4], const float linear[4])
size_t size_t char size_t BLI_str_escape(char *__restrict dst, const char *__restrict src, const size_t dst_maxncpy) ATTR_NONNULL()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
bool BLI_uniquename_cb(UniquenameCheckCallback unique_check, void *arg, const char *defname, char delim, char *name, size_t name_len)
bool BLI_uniquename(struct ListBase *list, void *vlink, const char *defname, char delim, int name_offset, size_t len)
#define STREQLEN(a, b, n)
#define BLO_read_data_address(reader, ptr_p)
void BLO_write_struct_by_name(BlendWriter *writer, const char *struct_name, const void *data_ptr)
#define BLO_write_id_struct(writer, struct_name, id_address, id)
#define BLO_write_struct(writer, struct_name, data_ptr)
void BLO_read_list(BlendDataReader *reader, struct ListBase *list)
bool BLO_read_lib_is_undo(BlendLibReader *reader)
void BLO_write_string(BlendWriter *writer, const char *data_ptr)
#define BLO_read_id_address(reader, lib, id_ptr_p)
#define BLO_expand(expander, id)
bool BLO_write_is_undo(BlendWriter *writer)
#define BLT_I18NCONTEXT_ID_NODETREE
#define CTX_IFACE_(context, msgid)
#define CLOG_ERROR(clg_ref,...)
void DEG_relations_tag_update(struct Main *bmain)
#define ID_IS_LINKED(_id)
Object groups, one object can be in many groups at once.
#define NODE_ACTIVE_TEXTURE
struct bNodeTree bNodeTree
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei width
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
Read Guarded memory(de)allocation.
void MOD_nodes_update_interface(Object *object, NodesModifierData *nmd)
void register_node_type_sh_bevel(void)
void register_node_type_sh_curve_rgb(void)
void register_node_type_sh_map_range(void)
void register_node_type_sh_combrgb(void)
void register_node_type_sh_normal_map(void)
void register_node_type_sh_uvalongstroke(void)
void register_node_type_sh_vector_rotate(void)
void register_node_type_sh_tex_coord(void)
void register_node_type_sh_output_world(void)
void register_node_type_sh_mix_shader(void)
void register_node_type_sh_shadertorgb(void)
void register_node_type_sh_bsdf_transparent(void)
void register_node_type_sh_group(void)
void register_node_type_sh_bsdf_refraction(void)
void register_node_type_sh_output_linestyle(void)
void register_node_type_sh_rgb(void)
void register_node_type_sh_clamp(void)
void register_node_type_sh_fresnel(void)
void register_node_type_sh_bsdf_hair(void)
void register_node_type_sh_uvmap(void)
void register_node_type_sh_bsdf_glossy(void)
void register_node_type_sh_blackbody(void)
void register_node_type_sh_background(void)
void register_node_type_sh_gamma(void)
void register_node_type_sh_emission(void)
void register_node_type_sh_script(void)
void register_node_type_sh_tangent(void)
void register_node_type_sh_subsurface_scattering(void)
void register_node_type_sh_object_info(void)
void register_node_type_sh_ambient_occlusion(void)
void register_node_type_sh_value(void)
void register_node_type_sh_tex_environment(void)
void register_node_type_sh_bsdf_glass(void)
void register_node_type_sh_curve_vec(void)
void register_node_type_sh_light_path(void)
void register_node_type_sh_vertex_color(void)
void register_node_type_sh_bsdf_toon(void)
void register_node_type_sh_tex_noise(void)
void register_node_type_sh_tex_musgrave(void)
void register_node_type_sh_sepxyz(void)
void register_node_type_sh_bump(void)
void register_node_type_sh_normal(void)
void register_node_type_sh_combxyz(void)
void register_node_type_sh_bsdf_hair_principled(void)
void register_node_type_sh_tex_voronoi(void)
void register_node_type_sh_output_material(void)
void register_node_type_sh_vector_displacement(void)
void register_node_type_sh_bsdf_translucent(void)
void register_node_type_sh_hair_info(void)
void register_node_type_sh_bsdf_diffuse(void)
void register_node_type_sh_tex_magic(void)
void register_node_type_sh_geometry(void)
void register_node_type_sh_mix_rgb(void)
void register_node_type_sh_wireframe(void)
void register_node_type_sh_math(void)
void register_node_type_sh_attribute(void)
void register_node_type_sh_tex_image(void)
void register_node_type_sh_tex_pointdensity(void)
void register_node_type_sh_hue_sat(void)
void register_node_type_sh_bsdf_principled(void)
void register_node_type_sh_displacement(void)
void register_node_type_sh_tex_brick(void)
void register_node_type_sh_bsdf_velvet(void)
void register_node_type_sh_combhsv(void)
void register_node_type_sh_light_falloff(void)
void register_node_type_sh_squeeze(void)
void register_node_type_sh_volume_info(void)
void register_node_type_sh_volume_absorption(void)
void register_node_type_sh_add_shader(void)
void register_node_type_sh_layer_weight(void)
void register_node_type_sh_camera(void)
void register_node_type_sh_particle_info(void)
void register_node_type_sh_tex_checker(void)
void register_node_type_sh_rgbtobw(void)
void register_node_type_sh_holdout(void)
void register_node_type_sh_wavelength(void)
void register_node_type_sh_seprgb(void)
void register_node_type_sh_mapping(void)
void register_node_type_sh_tex_wave(void)
void register_node_type_sh_volume_scatter(void)
void register_node_type_sh_valtorgb(void)
void register_node_tree_type_sh(void)
void register_node_type_sh_eevee_specular(void)
void register_node_type_sh_vect_math(void)
void register_node_type_sh_output_light(void)
void register_node_type_sh_invert(void)
void register_node_type_sh_vect_transform(void)
void register_node_type_sh_tex_white_noise(void)
void register_node_type_sh_tex_ies(void)
void register_node_type_sh_sephsv(void)
void register_node_type_sh_volume_principled(void)
void register_node_type_sh_tex_gradient(void)
void register_node_type_sh_brightcontrast(void)
void register_node_type_sh_bsdf_anisotropic(void)
void register_node_type_sh_tex_sky(void)
void register_node_type_sh_output_aov(void)
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White RGB Map Separate Set Z Dilate Combine Combine Color Channel CMP_NODE_SPLITVIEWER
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White RGB Map Separate Set Z Dilate Combine Combine Color Channel Split ID Combine Luminance Directional Alpha Distance Hue Movie Ellipse Bokeh View Corner Anti Mix RGB Hue Separate TEX_NODE_PROC TEX_NODE_PROC TEX_NODE_PROC TEX_NODE_PROC TEX_NODE_PROC Boolean Random Edge Subdivision Point Object Attribute Attribute Attribute Color Attribute Attribute Vector Point GEO_NODE_ATTRIBUTE_SAMPLE_TEXTURE
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White RGB Map Separate Set Z Dilate Combine Combine Color Channel Split ID Combine Luminance Directional Alpha Distance Hue Movie Ellipse Bokeh View Corner CMP_NODE_CRYPTOMATTE
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White CMP_NODE_CURVE_RGB
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White RGB Map Separate Set Z Dilate Combine Combine Color Channel Split ID Combine Luminance Directional Alpha Distance Hue Movie Ellipse Bokeh View Corner Anti Mix TEX_NODE_CURVE_RGB
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White CMP_NODE_VIEWER
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White RGB Map Separate Set Z Dilate Combine Combine Color Channel Split ID Combine Luminance Directional Alpha Distance CMP_NODE_HUECORRECT
Group RGB to Bright SH_NODE_CURVE_VEC
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White RGB Map CMP_NODE_TIME
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White RGB Map Separate Set Z Dilate Combine Combine Color Channel Split ID Combine Luminance Directional Alpha Distance Hue Movie Ellipse Bokeh View Corner Anti Mix RGB Hue Separate TEX_NODE_PROC TEX_NODE_PROC TEX_NODE_PROC TEX_NODE_PROC TEX_NODE_PROC Boolean Random FN_NODE_INPUT_STRING
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White RGB Map Separate Set Z Dilate Combine Combine Color Channel Split ID Combine Luminance Directional Alpha Distance Hue CMP_NODE_MOVIEDISTORTION
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume SH_NODE_TEX_IMAGE
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White RGB Map Separate Set CMP_NODE_IMAGE
void register_node_type_tex_bricks(void)
void register_node_type_tex_coord(void)
void register_node_type_tex_compose(void)
void register_node_type_tex_valtonor(void)
void register_node_type_tex_rotate(void)
void register_node_type_tex_viewer(void)
void register_node_type_tex_math(void)
void register_node_type_tex_group(void)
void register_node_type_tex_proc_distnoise(void)
void register_node_type_tex_output(void)
void register_node_type_tex_mix_rgb(void)
void register_node_type_tex_curve_rgb(void)
void register_node_type_tex_translate(void)
void register_node_type_tex_image(void)
void register_node_type_tex_proc_noise(void)
void register_node_type_tex_curve_time(void)
void register_node_type_tex_rgbtobw(void)
void register_node_type_tex_proc_marble(void)
void register_node_type_tex_proc_musgrave(void)
void register_node_type_tex_distance(void)
void register_node_type_tex_at(void)
void register_node_type_tex_valtorgb(void)
void register_node_type_tex_proc_voronoi(void)
void register_node_type_tex_proc_wood(void)
void register_node_type_tex_proc_clouds(void)
void register_node_type_tex_texture(void)
void register_node_type_tex_scale(void)
void register_node_type_tex_invert(void)
void register_node_type_tex_proc_magic(void)
void register_node_tree_type_tex(void)
void register_node_type_tex_proc_blend(void)
void register_node_type_tex_hue_sat(void)
void register_node_type_tex_decompose(void)
void register_node_type_tex_checker(void)
void register_node_type_tex_proc_stucci(void)
void RNA_def_struct_free_pointers(BlenderRNA *brna, StructRNA *srna)
void RNA_def_struct_duplicate_pointers(BlenderRNA *brna, StructRNA *srna)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
DEGForeachIDComponentCallback callback
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
size_t(* MEM_allocN_len)(const void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
int main(int argc, char **argv)
void node_type_gpu(struct bNodeType *ntype, NodeGPUExecFunction gpu_fn)
bNodeInstanceKey BKE_node_instance_key(bNodeInstanceKey parent_key, const bNodeTree *ntree, const bNode *node)
void BKE_node_clipboard_init(const struct bNodeTree *ntree)
static GHash * nodetreetypes_hash
static void ntree_interface_type_create(bNodeTree *ntree)
void ntreeTypeFreeLink(const bNodeTreeType *nt)
bool BKE_node_preview_used(const bNode *node)
static void socket_id_user_decrement(bNodeSocket *sock)
static void nodeUnMuteLink(bNodeLink *link)
bNodeSocket * nodeInsertSocket(bNodeTree *ntree, bNode *node, eNodeSocketInOut in_out, const char *idname, bNodeSocket *next_sock, const char *identifier, const char *name)
static bNodeInstanceKey node_hash_int_str(bNodeInstanceKey hash, const char *str)
static void library_foreach_node_socket(LibraryForeachIDData *data, bNodeSocket *sock)
void ntreeNodeFlagSet(const bNodeTree *ntree, const int flag, const bool enable)
bool nodeTypeUndefined(bNode *node)
int nodeSocketLinkLimit(const bNodeSocket *sock)
static void ntree_blend_read_lib(BlendLibReader *reader, ID *id)
StructRNA * ntreeInterfaceTypeGet(bNodeTree *ntree, bool create)
void nodeSetSelected(bNode *node, bool select)
bNodeSocket * nodeAddSocket(bNodeTree *ntree, bNode *node, eNodeSocketInOut in_out, const char *idname, const char *identifier, const char *name)
static void node_socket_copy(bNodeSocket *sock_dst, const bNodeSocket *sock_src, const int flag)
void ntreeBlendReadExpand(BlendExpander *expander, bNodeTree *ntree)
static void ntree_blend_read_data(BlendDataReader *reader, ID *id)
bNodeSocket * ntreeAddSocketInterface(bNodeTree *ntree, eNodeSocketInOut in_out, const char *idname, const char *name)
bool nodeAttachNodeCheck(const bNode *node, const bNode *parent)
bNode * nodeAddStaticNode(const struct bContext *C, bNodeTree *ntree, int type)
void node_type_size(struct bNodeType *ntype, int width, int minwidth, int maxwidth)
void nodeUpdate(bNodeTree *ntree, bNode *node)
static void node_add_sockets_from_type(bNodeTree *ntree, bNode *node, bNodeType *ntype)
bNodeTree * ntreeCopyTree(Main *bmain, const bNodeTree *ntree)
struct bNodeSocket * ntreeAddSocketInterfaceFromSocket(bNodeTree *ntree, bNode *from_node, bNodeSocket *from_sock)
void ntreeFreeEmbeddedTree(bNodeTree *ntree)
static GHash * nodesockettypes_hash
bNodeLink * nodeAddLink(bNodeTree *ntree, bNode *fromnode, bNodeSocket *fromsock, bNode *tonode, bNodeSocket *tosock)
static void node_init(const struct bContext *C, bNodeTree *ntree, bNode *node)
void ntreeSetOutput(bNodeTree *ntree)
bNodeInstanceHash * BKE_node_instance_hash_new(const char *info)
bNodeType * nodeTypeFind(const char *idname)
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)
static void expand_node_sockets(BlendExpander *expander, ListBase *sockets)
static void node_socket_free(bNodeTree *UNUSED(ntree), bNodeSocket *sock, bNode *UNUSED(node), const bool do_id_user)
const bNodeInstanceKey NODE_INSTANCE_KEY_BASE
static void ntree_blend_write(BlendWriter *writer, ID *id, const void *id_address)
const ListBase * BKE_node_clipboard_get_nodes(void)
static void node_set_typeinfo(const struct bContext *C, bNodeTree *ntree, bNode *node, bNodeType *typeinfo)
void node_type_update(struct bNodeType *ntype, void(*updatefunc)(struct bNodeTree *ntree, struct bNode *node))
bNodeTree * ntreeFromID(ID *id)
void BKE_nodetree_remove_layer_n(bNodeTree *ntree, Scene *scene, const int layer_index)
static void nodeMuteRerouteInputLinks(bNodeTree *ntree, bNode *node, const bool mute)
static void node_set_new_pointers(bNode *node_src, bNode *new_node)
void nodePositionPropagate(bNode *node)
void nodeUnregisterType(bNodeType *nt)
static void ntree_copy_data(Main *UNUSED(bmain), ID *id_dst, const ID *id_src, const int flag)
void BKE_node_clipboard_add_node(bNode *node)
void nodeSetActive(bNodeTree *ntree, bNode *node)
static void registerShaderNodes()
void ntreeBlendWrite(BlendWriter *writer, bNodeTree *ntree)
void ntreeBlendReadLib(struct BlendLibReader *reader, struct bNodeTree *ntree)
bool nodeIsChildOf(const bNode *parent, const bNode *child)
void BKE_node_instance_hash_insert(bNodeInstanceHash *hash, bNodeInstanceKey key, void *value)
static bNodeSocket * make_socket_interface(bNodeTree *ntree, eNodeSocketInOut in_out, const char *idname, const char *name)
static void ntree_blend_read_expand(BlendExpander *expander, ID *id)
static void ntree_set_typeinfo(bNodeTree *ntree, bNodeTreeType *typeinfo)
const ListBase * BKE_node_clipboard_get_links(void)
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 BKE_node_tree_iter_init(struct NodeTreeIterStore *ntreeiter, struct Main *bmain)
void ntreeUpdateAllUsers(Main *main, ID *id)
void ntreeUpdateTree(Main *bmain, bNodeTree *ntree)
bNodeTree * ntreeLocalize(bNodeTree *ntree)
void BKE_node_preview_remove_unused(bNodeTree *ntree)
void nodeChainIter(const bNodeTree *ntree, const bNode *node_start, bool(*callback)(bNode *, bNode *, void *, const bool), void *userdata, const bool reversed)
static bool node_poll_instance_default(bNode *node, bNodeTree *ntree, const char **disabled_hint)
static void expand_node_socket(BlendExpander *expander, bNodeSocket *sock)
static bool ntree_interface_unique_identifier_check(void *UNUSED(data), const char *identifier)
static bool node_instance_hash_key_cmp(const void *a, const void *b)
bool ntreeHasTree(const bNodeTree *ntree, const bNodeTree *lookup)
bool nodeFindNode(bNodeTree *ntree, bNodeSocket *sock, bNode **r_node, int *r_sockindex)
static void ntree_validate_links(bNodeTree *ntree)
bool ntreeHasType(const bNodeTree *ntree, int type)
int nodeSocketIsHidden(const bNodeSocket *sock)
int nodeCountSocketLinks(const bNodeTree *ntree, const bNodeSocket *sock)
void ntreeFreeCache(bNodeTree *ntree)
static bool unique_socket_template_identifier_check(void *arg, const char *name)
bool nodeUpdateID(bNodeTree *ntree, ID *id)
void nodeFromView(const bNode *node, float x, float y, float *rx, float *ry)
void nodeMuteLinkToggle(bNodeTree *ntree, bNodeLink *link)
struct bNodeSocket * ntreeInsertSocketInterfaceFromSocket(bNodeTree *ntree, bNodeSocket *next_sock, bNode *from_node, bNodeSocket *from_sock)
void ntreeTagUsedSockets(bNodeTree *ntree)
void BKE_node_preview_free(bNodePreview *preview)
static bNode * node_get_active_id_recursive(bNodeInstanceKey active_key, bNodeInstanceKey parent_key, bNodeTree *ntree, short idtype)
static int node_count_links(const bNodeTree *ntree, const bNodeSocket *socket)
void BKE_node_preview_clear(bNodePreview *preview)
GHashIterator * nodeSocketTypeGetIterator(void)
void node_type_init(struct bNodeType *ntype, void(*initfunc)(struct bNodeTree *ntree, struct bNode *node))
int BKE_node_instance_hash_remove(bNodeInstanceHash *hash, bNodeInstanceKey key, bNodeInstanceValueFP valfreefp)
void ntreeUpdateAllNew(Main *main)
static void registerFunctionNodes()
bool nodeSocketIsRegistered(bNodeSocket *sock)
static void node_socket_interface_free(bNodeTree *UNUSED(ntree), bNodeSocket *sock, const bool do_id_user)
bNode * BKE_node_copy_store_new_pointers(bNodeTree *ntree, bNode *node_src, const int flag)
static void direct_link_node_socket(BlendDataReader *reader, bNodeSocket *sock)
bNodeType NodeTypeUndefined
bNodeTreeType * ntreeTypeFind(const char *idname)
void BKE_node_system_exit(void)
#define NODE_DEFAULT_MAX_WIDTH
void node_type_size_preset(struct bNodeType *ntype, eNodeSizePreset size)
const char * nodeSocketLabel(const bNodeSocket *sock)
static void node_unlink_attached(bNodeTree *ntree, bNode *parent)
bNode * nodeFindNodebyName(bNodeTree *ntree, const char *name)
void BKE_node_preview_merge_tree(bNodeTree *to_ntree, bNodeTree *from_ntree, bool remove_old)
static void update_typeinfo(Main *bmain, const struct bContext *C, bNodeTreeType *treetype, bNodeType *nodetype, bNodeSocketType *socktype, bool unregister)
int BKE_node_clipboard_get_type(void)
GHashIterator * nodeTypeGetIterator(void)
static void node_preview_tag_used_recursive(bNodeInstanceHash *previews, bNodeTree *ntree, bNodeInstanceKey parent_key)
void * BKE_node_instance_hash_pop(bNodeInstanceHash *hash, bNodeInstanceKey key)
int BKE_node_instance_hash_haskey(bNodeInstanceHash *hash, bNodeInstanceKey key)
bNode * nodeGetActiveID(bNodeTree *ntree, short idtype)
bool ntreeIsRegistered(bNodeTree *ntree)
bNodeSocket * nodeInsertStaticSocket(bNodeTree *ntree, bNode *node, eNodeSocketInOut in_out, int type, int subtype, bNodeSocket *next_sock, const char *identifier, const char *name)
static bool node_poll_default(bNodeType *UNUSED(ntype), bNodeTree *UNUSED(ntree), const char **UNUSED(disabled_hint))
static bool node_undefined_poll(bNodeType *UNUSED(ntype), bNodeTree *UNUSED(nodetree), const char **UNUSED(r_disabled_hint))
void nodeRegisterType(bNodeType *nt)
bNode * nodeGetActive(bNodeTree *ntree)
static GHash * nodetypes_hash
bNodeTree * ntreeCopyTree_ex_new_pointers(const bNodeTree *ntree, Main *bmain, const bool do_id_user)
bNodeTree * ntreeAddTree(Main *bmain, const char *name, const char *idname)
static void node_free_node(bNodeTree *ntree, bNode *node)
bNodeSocketType * nodeSocketTypeFind(const char *idname)
void ntreeTypeAdd(bNodeTreeType *nt)
void nodeClearActive(bNodeTree *ntree)
void ntreeFreeTree(bNodeTree *ntree)
static void registerTextureNodes()
static void node_foreach_id(ID *id, LibraryForeachIDData *data)
bool BKE_node_instance_hash_tag_key(bNodeInstanceHash *hash, bNodeInstanceKey key)
bNodeSocket * ntreeInsertSocketInterface(bNodeTree *ntree, eNodeSocketInOut in_out, const char *idname, bNodeSocket *next_sock, const char *name)
void ntreeFreeLocalNode(bNodeTree *ntree, bNode *node)
void BKE_node_instance_hash_clear(bNodeInstanceHash *hash, bNodeInstanceValueFP valfreefp)
static bNodeClipboard node_clipboard
void node_type_group_update(struct bNodeType *ntype, void(*group_update_func)(struct bNodeTree *ntree, struct bNode *node))
static bool unique_identifier_check(void *arg, const char *identifier)
static void ntree_interface_identifier(bNodeTree *ntree, const char *base, char *identifier, int maxlen, char *name, char *description)
const char * nodeStaticSocketType(int type, int subtype)
void BKE_node_preview_clear_tree(bNodeTree *ntree)
bNodeSocket * ntreeFindSocketInterface(bNodeTree *ntree, eNodeSocketInOut in_out, const char *identifier)
static unsigned int node_instance_hash_key(const void *key)
bNodeLink * nodeFindLink(bNodeTree *ntree, const bNodeSocket *from, const bNodeSocket *to)
void nodeInternalRelink(bNodeTree *ntree, bNode *node)
void node_type_base_custom(bNodeType *ntype, const char *idname, const char *name, short nclass, short flag)
void BKE_node_system_init(void)
bool BKE_node_tree_iter_step(struct NodeTreeIterStore *ntreeiter, bNodeTree **r_nodetree, struct ID **r_id)
static bNodeSocket * make_socket(bNodeTree *ntree, bNode *UNUSED(node), int in_out, ListBase *lb, const char *idname, const char *identifier, const char *name)
void BKE_node_preview_free_tree(bNodeTree *ntree)
static int node_get_deplist_recurs(bNodeTree *ntree, bNode *node, bNode ***nsort)
void BKE_node_instance_hash_tag(bNodeInstanceHash *UNUSED(hash), void *value)
void node_type_label(struct bNodeType *ntype, void(*labelfunc)(struct bNodeTree *ntree, struct bNode *node, char *label, int maxlen))
const char * nodeStaticSocketInterfaceType(int type, int subtype)
static void ntree_interface_identifier_base(bNodeTree *ntree, char *base)
bNodeSocket * nodeAddStaticSocket(bNodeTree *ntree, bNode *node, eNodeSocketInOut in_out, int type, int subtype, const char *identifier, const char *name)
static void free_localized_node_groups(bNodeTree *ntree)
static void node_preview_sync(bNodePreview *to, bNodePreview *from)
void nodeParentsIter(bNode *node, bool(*callback)(bNode *, void *), void *userdata)
void BKE_node_clipboard_add_link(bNodeLink *link)
static void registerGeometryNodes()
void nodeLabel(bNodeTree *ntree, bNode *node, char *label, int maxlen)
static void socket_id_user_increment(bNodeSocket *sock)
static ID * node_owner_get(Main *bmain, ID *id)
int BKE_node_instance_hash_size(bNodeInstanceHash *hash)
void nodeRemLink(bNodeTree *ntree, bNodeLink *link)
void nodeClearActiveID(bNodeTree *ntree, short idtype)
void nodeRemoveSocket(bNodeTree *ntree, bNode *node, bNodeSocket *sock)
void nodeRemSocketLinks(bNodeTree *ntree, bNodeSocket *sock)
bool nodeLinkIsHidden(const bNodeLink *link)
void nodeUniqueName(bNodeTree *ntree, bNode *node)
bool nodeSetActiveID(bNodeTree *ntree, short idtype, ID *id)
void ntreeSetTypes(const struct bContext *C, bNodeTree *ntree)
void nodePositionRelative(bNode *from_node, bNode *to_node, bNodeSocket *from_sock, bNodeSocket *to_sock)
static void nodeMuteLink(bNodeLink *link)
void BKE_node_instance_hash_remove_untagged(bNodeInstanceHash *hash, bNodeInstanceValueFP valfreefp)
static void node_free_socket_type(void *socktype_v)
void ntreeLocalMerge(Main *bmain, bNodeTree *localtree, bNodeTree *ntree)
void nodeToView(const bNode *node, float x, float y, float *rx, float *ry)
void nodeRemoveNode(Main *bmain, bNodeTree *ntree, bNode *node, bool do_id_user)
static void ntree_free_type(void *treetype_v)
static void register_undefined_types()
GHashIterator * ntreeTypeGetIterator(void)
static void write_node_socket_default_value(BlendWriter *writer, bNodeSocket *sock)
static bool nodeMuteFromSocketLinks(const bNodeTree *ntree, const bNodeSocket *sock)
bNodeTree ** BKE_ntree_ptr_from_id(ID *id)
static void node_preview_init_tree_recursive(bNodeInstanceHash *previews, bNodeTree *ntree, bNodeInstanceKey parent_key, int xsize, int ysize, bool create_previews)
void nodeModifySocketType(bNodeTree *ntree, bNode *UNUSED(node), bNodeSocket *sock, int type, int subtype)
bNode * BKE_node_copy_ex(bNodeTree *ntree, const bNode *node_src, const int flag, const bool unique_name)
void ntreeRemoveSocketInterface(bNodeTree *ntree, bNodeSocket *sock)
bool ntreeNodeExists(const bNodeTree *ntree, const bNode *testnode)
void BKE_node_preview_init_tree(bNodeTree *ntree, int xsize, int ysize, bool create_previews)
static void node_socket_set_typeinfo(bNodeTree *ntree, bNodeSocket *sock, bNodeSocketType *typeinfo)
static void nodeMuteRerouteOutputLinks(struct bNodeTree *ntree, struct bNode *node, const bool mute)
bool ntreeOutputExists(const bNode *node, const bNodeSocket *testsock)
bNode * nodeFindRootParent(bNode *node)
static void lib_link_node_socket(BlendLibReader *reader, Library *lib, bNodeSocket *sock)
static void ntree_update_node_level(bNodeTree *ntree)
void nodeChainIterBackwards(const bNodeTree *ntree, const bNode *node_start, bool(*callback)(bNode *, bNode *, void *), void *userdata, int recursion_lvl)
const bNodeInstanceKey NODE_INSTANCE_KEY_NONE
static void node_type_base_defaults(bNodeType *ntype)
static void ntree_update_link_pointers(bNodeTree *ntree)
void nodeUnlinkNode(bNodeTree *ntree, bNode *node)
static void iter_backwards_ex(const bNodeTree *ntree, const bNode *node_start, bool(*callback)(bNode *, bNode *, void *), void *userdata, char recursion_mask)
bNode * ntreeFindType(const bNodeTree *ntree, int type)
void nodeRemoveAllSockets(bNodeTree *ntree, bNode *node)
bNode * nodeAddNode(const struct bContext *C, bNodeTree *ntree, const char *idname)
void BKE_node_instance_hash_clear_tags(bNodeInstanceHash *hash)
bool BKE_node_clipboard_validate(void)
static void write_node_socket_interface(BlendWriter *writer, bNodeSocket *sock)
void ntreeBlendReadData(BlendDataReader *reader, bNodeTree *ntree)
void BKE_node_clipboard_clear(void)
void ntreeInterfaceTypeFree(bNodeTree *ntree)
void node_type_exec(struct bNodeType *ntype, NodeInitExecFunction init_exec_fn, NodeFreeExecFunction free_exec_fn, NodeExecFunction exec_fn)
void nodeUnregisterSocketType(bNodeSocketType *st)
static bNodeTreeType NodeTreeTypeUndefined
void ntreeFreeLocalTree(bNodeTree *ntree)
void nodeDetachNode(struct bNode *node)
void ntreeGetDependencyList(struct bNodeTree *ntree, struct bNode ***r_deplist, int *r_deplist_len)
struct bNodeSocket * nodeFindSocket(const bNode *node, eNodeSocketInOut in_out, const char *identifier)
bNodePreview * BKE_node_preview_copy(bNodePreview *preview)
void * BKE_node_instance_hash_lookup(bNodeInstanceHash *hash, bNodeInstanceKey key)
void node_type_base(bNodeType *ntype, int type, const char *name, short nclass, short flag)
static void node_foreach_cache(ID *id, IDTypeForeachCacheFunctionCallback function_callback, void *user_data)
bNodeTree * ntreeCopyTree_ex(const bNodeTree *ntree, Main *bmain, const bool do_id_user)
void node_type_internal_links(bNodeType *ntype, void(*update_internal_links)(bNodeTree *, bNode *))
void BKE_node_instance_hash_free(bNodeInstanceHash *hash, bNodeInstanceValueFP valfreefp)
void ntreeInterfaceTypeUpdate(bNodeTree *ntree)
static void registerCompositNodes()
static void ntree_init_data(ID *id)
void BKE_node_clipboard_free(void)
void BKE_node_preview_set_pixel(bNodePreview *preview, const float col[4], int x, int y, bool do_manage)
void nodeAttachNode(bNode *node, bNode *parent)
static void ntree_free_data(ID *id)
static void lib_link_node_sockets(BlendLibReader *reader, Library *lib, ListBase *sockets)
static void free_dynamic_typeinfo(bNodeType *ntype)
void ntreeLocalSync(bNodeTree *localtree, bNodeTree *ntree)
static void write_node_socket(BlendWriter *writer, bNodeSocket *sock)
void nodeRegisterSocketType(bNodeSocketType *st)
bNodeSocketType NodeSocketTypeUndefined
void nodeUpdateInternalLinks(bNodeTree *ntree, bNode *node)
void BKE_node_preview_sync_tree(bNodeTree *to_ntree, bNodeTree *from_ntree)
static void node_free_type(void *nodetype_v)
bNodePreview * BKE_node_preview_verify(bNodeInstanceHash *previews, bNodeInstanceKey key, int xsize, int ysize, bool create)
void nodeSetSocketAvailability(bNodeSocket *sock, bool is_available)
void register_node_type_frame(void)
void register_node_type_group_input(void)
void register_node_type_reroute(void)
void register_node_type_group_output(void)
void register_node_type_cmp_alphaover(void)
void register_node_type_cmp_antialiasing(void)
void register_node_type_cmp_bilateralblur(void)
void register_node_type_cmp_blur(void)
void register_node_type_cmp_bokehblur(void)
void register_node_type_cmp_bokehimage(void)
void register_node_type_cmp_boxmask(void)
void register_node_type_cmp_brightcontrast(void)
void register_node_type_cmp_channel_matte(void)
void register_node_type_cmp_chroma_matte(void)
void register_node_type_cmp_color_matte(void)
void register_node_type_cmp_color_spill(void)
void register_node_type_cmp_colorbalance(void)
void register_node_type_cmp_colorcorrection(void)
void register_node_type_cmp_group(void)
void register_node_type_cmp_composite(void)
static bNodeSocketTemplate outputs[]
void register_node_type_cmp_cornerpin(void)
static bNodeSocketTemplate inputs[]
void register_node_type_cmp_crop(void)
void register_node_type_cmp_cryptomatte_legacy(void)
void register_node_type_cmp_cryptomatte(void)
void register_node_type_cmp_curve_rgb(void)
void register_node_type_cmp_curve_time(void)
void register_node_type_cmp_curve_vec(void)
void register_node_type_cmp_defocus(void)
void register_node_type_cmp_denoise(void)
void register_node_type_cmp_despeckle(void)
void register_node_type_cmp_diff_matte(void)
void register_node_type_cmp_dilateerode(void)
void register_node_type_cmp_dblur(void)
void register_node_type_cmp_displace(void)
void register_node_type_cmp_distance_matte(void)
void register_node_type_cmp_doubleedgemask(void)
void register_node_type_cmp_ellipsemask(void)
void register_node_type_cmp_exposure(void)
void register_node_type_cmp_filter(void)
void register_node_type_cmp_flip(void)
void register_node_type_cmp_gamma(void)
void register_node_type_cmp_glare(void)
void register_node_type_cmp_hue_sat(void)
void register_node_type_cmp_huecorrect(void)
void register_node_type_cmp_idmask(void)
void register_node_type_cmp_rlayers(void)
void register_node_type_cmp_image(void)
void register_node_type_cmp_inpaint(void)
void register_node_type_cmp_invert(void)
void register_node_type_cmp_keying(void)
void register_node_type_cmp_keyingscreen(void)
void register_node_type_cmp_lensdist(void)
void register_node_type_cmp_view_levels(void)
void register_node_type_cmp_luma_matte(void)
void register_node_type_cmp_map_range(void)
void register_node_type_cmp_mapuv(void)
void register_node_type_cmp_map_value(void)
void register_node_type_cmp_mask(void)
void register_node_type_cmp_math(void)
void register_node_type_cmp_mix_rgb(void)
void register_node_type_cmp_movieclip(void)
void register_node_type_cmp_moviedistortion(void)
void register_node_type_cmp_normal(void)
void register_node_type_cmp_normalize(void)
void register_node_type_cmp_output_file(void)
void register_node_type_cmp_pixelate(void)
void register_node_type_cmp_premulkey(void)
void register_node_type_cmp_rgb(void)
void register_node_type_cmp_rotate(void)
void register_node_type_cmp_scale(void)
void register_node_type_cmp_combhsva(void)
void register_node_type_cmp_sephsva(void)
void register_node_type_cmp_combrgba(void)
void register_node_type_cmp_seprgba(void)
void register_node_type_cmp_sepycca(void)
void register_node_type_cmp_combycca(void)
void register_node_type_cmp_sepyuva(void)
void register_node_type_cmp_combyuva(void)
void register_node_type_cmp_setalpha(void)
void register_node_type_cmp_splitviewer(void)
void register_node_type_cmp_stabilize2d(void)
void register_node_type_cmp_sunbeams(void)
void register_node_type_cmp_switch(void)
void register_node_type_cmp_switch_view(void)
void register_node_type_cmp_texture(void)
void register_node_type_cmp_tonemap(void)
void register_node_type_cmp_trackpos(void)
void register_node_type_cmp_translate(void)
void register_node_tree_type_cmp(void)
void register_node_type_cmp_rgbtobw(void)
void register_node_type_cmp_valtorgb(void)
void register_node_type_cmp_value(void)
void register_node_type_cmp_vecblur(void)
void register_node_type_cmp_viewer(void)
void register_node_type_cmp_zcombine(void)
void register_node_type_fn_boolean_math()
void register_node_type_fn_float_compare()
void register_node_type_fn_random_float()
void register_node_type_geo_align_rotation_to_vector()
void register_node_type_geo_attribute_clamp()
void register_node_type_geo_attribute_color_ramp()
void register_node_type_geo_attribute_combine_xyz()
void register_node_type_geo_attribute_compare()
void register_node_type_geo_attribute_convert()
void register_node_type_geo_attribute_fill()
void register_node_type_geo_attribute_map_range()
void register_node_type_geo_attribute_math()
void register_node_type_geo_attribute_mix()
void register_node_type_geo_attribute_proximity()
void register_node_type_geo_attribute_randomize()
void register_node_type_geo_attribute_remove()
void register_node_type_geo_sample_texture()
void register_node_type_geo_attribute_separate_xyz()
void register_node_type_geo_attribute_vector_math()
void register_node_type_geo_boolean()
void register_node_type_geo_bounding_box()
void register_node_type_geo_collection_info()
void register_node_type_geo_group(void)
void register_node_type_geo_edge_split()
void register_node_type_geo_is_viewport()
void register_node_type_geo_join_geometry()
void register_node_type_geo_mesh_primitive_circle()
void register_node_type_geo_mesh_primitive_cone()
void register_node_type_geo_mesh_primitive_cube()
void register_node_type_geo_mesh_primitive_cylinder()
void register_node_type_geo_mesh_primitive_grid()
void register_node_type_geo_mesh_primitive_ico_sphere()
void register_node_type_geo_mesh_primitive_line()
void register_node_type_geo_mesh_primitive_uv_sphere()
void register_node_type_geo_object_info()
void register_node_type_geo_point_distribute()
void register_node_type_geo_point_instance()
void register_node_type_geo_point_rotate()
void register_node_type_geo_point_scale()
void register_node_type_geo_point_separate()
void register_node_type_geo_point_translate()
void register_node_type_geo_points_to_volume()
void register_node_type_geo_subdivide()
void register_node_type_geo_subdivision_surface()
void register_node_type_geo_triangulate()
void register_node_type_geo_volume_to_mesh()
void register_node_tree_type_geo(void)
void node_socket_init_default_value(bNodeSocket *sock)
void node_verify_socket_templates(bNodeTree *ntree, bNode *node)
void register_standard_node_socket_types(void)
struct bNodeSocket * node_add_socket_from_template(struct bNodeTree *ntree, struct bNode *node, struct bNodeSocketTemplate *stemp, eNodeSocketInOut in_out)
static void unique_name(bNode *node)
const char * RNA_struct_identifier(const StructRNA *type)
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type)
StructRNA * RNA_struct_find(const char *identifier)
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
void RNA_identifier_sanitize(char *identifier, int property)
void RNA_def_struct_identifier(BlenderRNA *brna, StructRNA *srna, const char *identifier)
StructRNA * RNA_def_struct_ptr(BlenderRNA *brna, const char *identifier, StructRNA *srnafrom)
void RNA_struct_free(BlenderRNA *brna, StructRNA *srna)
StructRNA RNA_PropertyGroup
struct bNodeTree * nodetree
unsigned int id_session_uuid
struct bNodeTree * nodetree
struct bNodeTree * nodetree
NodeCryptomatte_Runtime runtime
struct Simulation * simulation
struct FreestyleLineStyle * linestyle
struct bNodeTree * node_group
struct bNodeTree * nodetree
struct bNodeTree * nodetree
bNodeSocketTemplate * list
bNodeSocketTemplate * ntemp
struct bNodeTree * nodetree
struct bNodeTree * nodetree
ListBase nodes_extra_info
int multi_input_socket_index
Compact definition of a node socket.
void(* interface_register_properties)(struct bNodeTree *ntree, struct bNodeSocket *stemp, struct StructRNA *data_srna)
bool use_link_limits_of_type
void(* free_self)(struct bNodeSocketType *stype)
void(* interface_from_socket)(struct bNodeTree *ntree, struct bNodeSocket *stemp, struct bNode *node, struct bNodeSocket *sock)
struct Collection * value
struct bNodeSocket * next
struct bNodeSocketType * typeinfo
void(* free_node_cache)(struct bNodeTree *ntree, struct bNode *node)
void(* update)(struct bNodeTree *ntree)
void(* local_merge)(struct Main *bmain, struct bNodeTree *localtree, struct bNodeTree *ntree)
bool(* validate_link)(struct bNodeTree *ntree, struct bNodeLink *link)
void(* free_cache)(struct bNodeTree *ntree)
void(* localize)(struct bNodeTree *localtree, struct bNodeTree *ntree)
void(* local_sync)(struct bNodeTree *localtree, struct bNodeTree *ntree)
void(* node_add_init)(struct bNodeTree *ntree, struct bNode *bnode)
void(* progress)(void *, float progress)
struct NodeTreeUIStorage * ui_storage
struct bNodeInstanceHash * previews
struct bNodeTreeType * typeinfo
struct StructRNA * interface_type
bNodeInstanceKey active_viewer_key
struct bNodeTreeExec * execdata
void(* copyfunc)(struct bNodeTree *dest_ntree, struct bNode *dest_node, const struct bNode *src_node)
void(* group_update_func)(struct bNodeTree *ntree, struct bNode *node)
bool(* poll)(struct bNodeType *ntype, struct bNodeTree *nodetree, const char **r_disabled_hint)
void(* update_internal_links)(struct bNodeTree *, struct bNode *node)
NodeInitExecFunction init_exec_fn
void(* updatefunc)(struct bNodeTree *ntree, struct bNode *node)
bNodeSocketTemplate * outputs
void(* initfunc_api)(const struct bContext *C, struct PointerRNA *ptr)
void(* free_self)(struct bNodeType *ntype)
void(* freefunc)(struct bNode *node)
NodeGPUExecFunction gpu_fn
void(* labelfunc)(struct bNodeTree *ntree, struct bNode *node, char *label, int maxlen)
bNodeSocketTemplate * inputs
bool(* poll_instance)(struct bNode *node, struct bNodeTree *nodetree, const char **r_disabled_hint)
void(* initfunc)(struct bNodeTree *ntree, struct bNode *node)
void(* copyfunc_api)(struct PointerRNA *ptr, const struct bNode *src_node)
NodeFreeExecFunction free_exec_fn
struct bNodeType * typeinfo
__forceinline const avxb select(const avxb &m, const avxb &t, const avxb &f)