52struct bNodeInstanceHash;
69class GatherAddNodeSearchParams;
134 void (*)(blender::nodes::GatherAddNodeSearchParams &
params);
169 const char *data_path);
306 const char **r_disabled_hint);
404#define NODE_CLASS_INPUT 0
405#define NODE_CLASS_OUTPUT 1
406#define NODE_CLASS_OP_COLOR 3
407#define NODE_CLASS_OP_VECTOR 4
408#define NODE_CLASS_OP_FILTER 5
409#define NODE_CLASS_GROUP 6
410#define NODE_CLASS_CONVERTER 8
411#define NODE_CLASS_MATTE 9
412#define NODE_CLASS_DISTORT 10
413#define NODE_CLASS_PATTERN 12
414#define NODE_CLASS_TEXTURE 13
415#define NODE_CLASS_SCRIPT 32
416#define NODE_CLASS_INTERFACE 33
417#define NODE_CLASS_SHADER 40
418#define NODE_CLASS_GEOMETRY 41
419#define NODE_CLASS_ATTRIBUTE 42
420#define NODE_CLASS_LAYOUT 100
499#define NODE_TREE_TYPES_BEGIN(ntype) \
501 GHashIterator *__node_tree_type_iter__ = blender::bke::node_tree_type_get_iterator(); \
502 for (; !BLI_ghashIterator_done(__node_tree_type_iter__); \
503 BLI_ghashIterator_step(__node_tree_type_iter__)) \
505 blender::bke::bNodeTreeType *ntype = (blender::bke::bNodeTreeType *) \
506 BLI_ghashIterator_getValue(__node_tree_type_iter__);
508#define NODE_TREE_TYPES_END \
510 BLI_ghashIterator_free(__node_tree_type_iter__); \
597#define NODE_TYPES_BEGIN(ntype) \
599 GHashIterator *__node_type_iter__ = blender::bke::node_type_get_iterator(); \
600 for (; !BLI_ghashIterator_done(__node_type_iter__); \
601 BLI_ghashIterator_step(__node_type_iter__)) { \
602 blender::bke::bNodeType *ntype = (blender::bke::bNodeType *)BLI_ghashIterator_getValue( \
605#define NODE_TYPES_END \
607 BLI_ghashIterator_free(__node_type_iter__); \
623#define NODE_SOCKET_TYPES_BEGIN(stype) \
625 GHashIterator *__node_socket_type_iter__ = blender::bke::node_socket_type_get_iterator(); \
626 for (; !BLI_ghashIterator_done(__node_socket_type_iter__); \
627 BLI_ghashIterator_step(__node_socket_type_iter__)) \
629 blender::bke::bNodeSocketType *stype = (blender::bke::bNodeSocketType *) \
630 BLI_ghashIterator_getValue(__node_socket_type_iter__);
632#define NODE_SOCKET_TYPES_END \
634 BLI_ghashIterator_free(__node_socket_type_iter__); \
646 const char *identifier,
653 const char *identifier,
776 const char **r_disabled_hint);
779 bNodeType *ntype,
const char *idname,
const char *name,
const char *enum_name,
short nclass);
786 const char *storagename,
787 void (*freefunc)(
bNode *node),
790 const bNode *src_node));
798#define NODE_UNDEFINED -2
799#define NODE_CUSTOM -1
804#define NODE_REROUTE 6
805#define NODE_GROUP_INPUT 7
806#define NODE_GROUP_OUTPUT 8
807#define NODE_CUSTOM_GROUP 9
861#define FOREACH_NODETREE_BEGIN(bmain, _nodetree, _id) \
863 blender::bke::NodeTreeIterStore _nstore; \
864 bNodeTree *_nodetree; \
867 blender::bke::node_tree_iterator_init(&_nstore, bmain); \
868 while (blender::bke::node_tree_iterator_step(&_nstore, &_nodetree, &_id) == true) { \
871#define FOREACH_NODETREE_END \
892#define SH_NODE_RGB 101
893#define SH_NODE_VALUE 102
894#define SH_NODE_MIX_RGB_LEGACY 103
895#define SH_NODE_VALTORGB 104
896#define SH_NODE_RGBTOBW 105
897#define SH_NODE_SHADERTORGB 106
899#define SH_NODE_NORMAL 107
901#define SH_NODE_MAPPING 109
902#define SH_NODE_CURVE_VEC 110
903#define SH_NODE_CURVE_RGB 111
904#define SH_NODE_CAMERA 114
905#define SH_NODE_MATH 115
906#define SH_NODE_VECTOR_MATH 116
907#define SH_NODE_SQUEEZE 117
909#define SH_NODE_INVERT 119
910#define SH_NODE_SEPRGB_LEGACY 120
911#define SH_NODE_COMBRGB_LEGACY 121
912#define SH_NODE_HUE_SAT 122
914#define SH_NODE_OUTPUT_MATERIAL 124
915#define SH_NODE_OUTPUT_WORLD 125
916#define SH_NODE_OUTPUT_LIGHT 126
917#define SH_NODE_FRESNEL 127
918#define SH_NODE_MIX_SHADER 128
919#define SH_NODE_ATTRIBUTE 129
920#define SH_NODE_BACKGROUND 130
921#define SH_NODE_BSDF_GLOSSY 131
922#define SH_NODE_BSDF_DIFFUSE 132
923#define SH_NODE_BSDF_GLOSSY_LEGACY 133
924#define SH_NODE_BSDF_GLASS 134
925#define SH_NODE_BSDF_TRANSLUCENT 137
926#define SH_NODE_BSDF_TRANSPARENT 138
927#define SH_NODE_BSDF_SHEEN 139
928#define SH_NODE_EMISSION 140
929#define SH_NODE_NEW_GEOMETRY 141
930#define SH_NODE_LIGHT_PATH 142
931#define SH_NODE_TEX_IMAGE 143
932#define SH_NODE_TEX_SKY 145
933#define SH_NODE_TEX_GRADIENT 146
934#define SH_NODE_TEX_VORONOI 147
935#define SH_NODE_TEX_MAGIC 148
936#define SH_NODE_TEX_WAVE 149
937#define SH_NODE_TEX_NOISE 150
938#define SH_NODE_TEX_MUSGRAVE_DEPRECATED 152
939#define SH_NODE_TEX_COORD 155
940#define SH_NODE_ADD_SHADER 156
941#define SH_NODE_TEX_ENVIRONMENT 157
943#define SH_NODE_HOLDOUT 159
944#define SH_NODE_LAYER_WEIGHT 160
945#define SH_NODE_VOLUME_ABSORPTION 161
946#define SH_NODE_VOLUME_SCATTER 162
947#define SH_NODE_GAMMA 163
948#define SH_NODE_TEX_CHECKER 164
949#define SH_NODE_BRIGHTCONTRAST 165
950#define SH_NODE_LIGHT_FALLOFF 166
951#define SH_NODE_OBJECT_INFO 167
952#define SH_NODE_PARTICLE_INFO 168
953#define SH_NODE_TEX_BRICK 169
954#define SH_NODE_BUMP 170
955#define SH_NODE_SCRIPT 171
956#define SH_NODE_AMBIENT_OCCLUSION 172
957#define SH_NODE_BSDF_REFRACTION 173
958#define SH_NODE_TANGENT 174
959#define SH_NODE_NORMAL_MAP 175
960#define SH_NODE_HAIR_INFO 176
961#define SH_NODE_SUBSURFACE_SCATTERING 177
962#define SH_NODE_WIREFRAME 178
963#define SH_NODE_BSDF_TOON 179
964#define SH_NODE_WAVELENGTH 180
965#define SH_NODE_BLACKBODY 181
966#define SH_NODE_VECT_TRANSFORM 182
967#define SH_NODE_SEPHSV_LEGACY 183
968#define SH_NODE_COMBHSV_LEGACY 184
969#define SH_NODE_BSDF_HAIR 185
971#define SH_NODE_UVMAP 187
972#define SH_NODE_SEPXYZ 188
973#define SH_NODE_COMBXYZ 189
974#define SH_NODE_OUTPUT_LINESTYLE 190
975#define SH_NODE_UVALONGSTROKE 191
976#define SH_NODE_TEX_POINTDENSITY 192
977#define SH_NODE_BSDF_PRINCIPLED 193
978#define SH_NODE_TEX_IES 194
979#define SH_NODE_EEVEE_SPECULAR 195
980#define SH_NODE_BEVEL 197
981#define SH_NODE_DISPLACEMENT 198
982#define SH_NODE_VECTOR_DISPLACEMENT 199
983#define SH_NODE_VOLUME_PRINCIPLED 200
985#define SH_NODE_BSDF_HAIR_PRINCIPLED 701
986#define SH_NODE_MAP_RANGE 702
987#define SH_NODE_CLAMP 703
988#define SH_NODE_TEX_WHITE_NOISE 704
989#define SH_NODE_VOLUME_INFO 705
990#define SH_NODE_VERTEX_COLOR 706
991#define SH_NODE_OUTPUT_AOV 707
992#define SH_NODE_VECTOR_ROTATE 708
993#define SH_NODE_CURVE_FLOAT 709
994#define SH_NODE_POINT_INFO 710
995#define SH_NODE_COMBINE_COLOR 711
996#define SH_NODE_SEPARATE_COLOR 712
997#define SH_NODE_MIX 713
998#define SH_NODE_BSDF_RAY_PORTAL 714
999#define SH_NODE_TEX_GABOR 715
1000#define SH_NODE_BSDF_METALLIC 716
1009#define RRES_OUT_IMAGE 0
1010#define RRES_OUT_ALPHA 1
1013#define CMP_NODE_VIEWER 201
1014#define CMP_NODE_RGB 202
1015#define CMP_NODE_VALUE 203
1016#define CMP_NODE_MIX_RGB 204
1017#define CMP_NODE_VALTORGB 205
1018#define CMP_NODE_RGBTOBW 206
1019#define CMP_NODE_NORMAL 207
1020#define CMP_NODE_CURVE_VEC 208
1021#define CMP_NODE_CURVE_RGB 209
1022#define CMP_NODE_ALPHAOVER 210
1023#define CMP_NODE_BLUR 211
1024#define CMP_NODE_FILTER 212
1025#define CMP_NODE_MAP_VALUE 213
1026#define CMP_NODE_TIME 214
1027#define CMP_NODE_VECBLUR 215
1028#define CMP_NODE_SEPRGBA_LEGACY 216
1029#define CMP_NODE_SEPHSVA_LEGACY 217
1030#define CMP_NODE_SETALPHA 218
1031#define CMP_NODE_HUE_SAT 219
1032#define CMP_NODE_IMAGE 220
1033#define CMP_NODE_R_LAYERS 221
1034#define CMP_NODE_COMPOSITE 222
1035#define CMP_NODE_OUTPUT_FILE 223
1036#define CMP_NODE_TEXTURE 224
1037#define CMP_NODE_TRANSLATE 225
1038#define CMP_NODE_ZCOMBINE 226
1039#define CMP_NODE_COMBRGBA_LEGACY 227
1040#define CMP_NODE_DILATEERODE 228
1041#define CMP_NODE_ROTATE 229
1042#define CMP_NODE_SCALE 230
1043#define CMP_NODE_SEPYCCA_LEGACY 231
1044#define CMP_NODE_COMBYCCA_LEGACY 232
1045#define CMP_NODE_SEPYUVA_LEGACY 233
1046#define CMP_NODE_COMBYUVA_LEGACY 234
1047#define CMP_NODE_DIFF_MATTE 235
1048#define CMP_NODE_COLOR_SPILL 236
1049#define CMP_NODE_CHROMA_MATTE 237
1050#define CMP_NODE_CHANNEL_MATTE 238
1051#define CMP_NODE_FLIP 239
1053#define CMP_NODE_SPLITVIEWER__DEPRECATED 240
1055#define CMP_NODE_MAP_UV 242
1056#define CMP_NODE_ID_MASK 243
1057#define CMP_NODE_DEFOCUS 244
1058#define CMP_NODE_DISPLACE 245
1059#define CMP_NODE_COMBHSVA_LEGACY 246
1060#define CMP_NODE_MATH 247
1061#define CMP_NODE_LUMA_MATTE 248
1062#define CMP_NODE_BRIGHTCONTRAST 249
1063#define CMP_NODE_GAMMA 250
1064#define CMP_NODE_INVERT 251
1065#define CMP_NODE_NORMALIZE 252
1066#define CMP_NODE_CROP 253
1067#define CMP_NODE_DBLUR 254
1068#define CMP_NODE_BILATERALBLUR 255
1069#define CMP_NODE_PREMULKEY 256
1070#define CMP_NODE_DIST_MATTE 257
1071#define CMP_NODE_VIEW_LEVELS 258
1072#define CMP_NODE_COLOR_MATTE 259
1073#define CMP_NODE_COLORBALANCE 260
1074#define CMP_NODE_HUECORRECT 261
1075#define CMP_NODE_MOVIECLIP 262
1076#define CMP_NODE_STABILIZE2D 263
1077#define CMP_NODE_TRANSFORM 264
1078#define CMP_NODE_MOVIEDISTORTION 265
1079#define CMP_NODE_DOUBLEEDGEMASK 266
1080#define CMP_NODE_OUTPUT_MULTI_FILE__DEPRECATED \
1082#define CMP_NODE_MASK 268
1083#define CMP_NODE_KEYINGSCREEN 269
1084#define CMP_NODE_KEYING 270
1085#define CMP_NODE_TRACKPOS 271
1086#define CMP_NODE_INPAINT 272
1087#define CMP_NODE_DESPECKLE 273
1088#define CMP_NODE_ANTIALIASING 274
1089#define CMP_NODE_KUWAHARA 275
1090#define CMP_NODE_SPLIT 276
1092#define CMP_NODE_GLARE 301
1093#define CMP_NODE_TONEMAP 302
1094#define CMP_NODE_LENSDIST 303
1095#define CMP_NODE_SUNBEAMS 304
1097#define CMP_NODE_COLORCORRECTION 312
1098#define CMP_NODE_MASK_BOX 313
1099#define CMP_NODE_MASK_ELLIPSE 314
1100#define CMP_NODE_BOKEHIMAGE 315
1101#define CMP_NODE_BOKEHBLUR 316
1102#define CMP_NODE_SWITCH 317
1103#define CMP_NODE_PIXELATE 318
1105#define CMP_NODE_MAP_RANGE 319
1106#define CMP_NODE_PLANETRACKDEFORM 320
1107#define CMP_NODE_CORNERPIN 321
1108#define CMP_NODE_SWITCH_VIEW 322
1109#define CMP_NODE_CRYPTOMATTE_LEGACY 323
1110#define CMP_NODE_DENOISE 324
1111#define CMP_NODE_EXPOSURE 325
1112#define CMP_NODE_CRYPTOMATTE 326
1113#define CMP_NODE_POSTERIZE 327
1114#define CMP_NODE_CONVERT_COLOR_SPACE 328
1115#define CMP_NODE_SCENE_TIME 329
1116#define CMP_NODE_SEPARATE_XYZ 330
1117#define CMP_NODE_COMBINE_XYZ 331
1118#define CMP_NODE_COMBINE_COLOR 332
1119#define CMP_NODE_SEPARATE_COLOR 333
1122#define CMP_CHAN_RGB 1
1126#define CMP_DEFAULT_SMAA_THRESHOLD 1.0f
1127#define CMP_DEFAULT_SMAA_CONTRAST_LIMIT 0.2f
1128#define CMP_DEFAULT_SMAA_CORNER_ROUNDING 0.25f
1136#define TEX_NODE_OUTPUT 401
1137#define TEX_NODE_CHECKER 402
1138#define TEX_NODE_TEXTURE 403
1139#define TEX_NODE_BRICKS 404
1140#define TEX_NODE_MATH 405
1141#define TEX_NODE_MIX_RGB 406
1142#define TEX_NODE_RGBTOBW 407
1143#define TEX_NODE_VALTORGB 408
1144#define TEX_NODE_IMAGE 409
1145#define TEX_NODE_CURVE_RGB 410
1146#define TEX_NODE_INVERT 411
1147#define TEX_NODE_HUE_SAT 412
1148#define TEX_NODE_CURVE_TIME 413
1149#define TEX_NODE_ROTATE 414
1150#define TEX_NODE_VIEWER 415
1151#define TEX_NODE_TRANSLATE 416
1152#define TEX_NODE_COORD 417
1153#define TEX_NODE_DISTANCE 418
1154#define TEX_NODE_COMPOSE_LEGACY 419
1155#define TEX_NODE_DECOMPOSE_LEGACY 420
1156#define TEX_NODE_VALTONOR 421
1157#define TEX_NODE_SCALE 422
1158#define TEX_NODE_AT 423
1159#define TEX_NODE_COMBINE_COLOR 424
1160#define TEX_NODE_SEPARATE_COLOR 425
1163#define TEX_NODE_PROC 500
1164#define TEX_NODE_PROC_MAX 600
1172#define GEO_NODE_TRIANGULATE 1000
1173#define GEO_NODE_TRANSFORM_GEOMETRY 1002
1174#define GEO_NODE_MESH_BOOLEAN 1003
1175#define GEO_NODE_OBJECT_INFO 1007
1176#define GEO_NODE_JOIN_GEOMETRY 1010
1177#define GEO_NODE_COLLECTION_INFO 1023
1178#define GEO_NODE_IS_VIEWPORT 1024
1179#define GEO_NODE_SUBDIVIDE_MESH 1029
1180#define GEO_NODE_MESH_PRIMITIVE_CUBE 1032
1181#define GEO_NODE_MESH_PRIMITIVE_CIRCLE 1033
1182#define GEO_NODE_MESH_PRIMITIVE_UV_SPHERE 1034
1183#define GEO_NODE_MESH_PRIMITIVE_CYLINDER 1035
1184#define GEO_NODE_MESH_PRIMITIVE_ICO_SPHERE 1036
1185#define GEO_NODE_MESH_PRIMITIVE_CONE 1037
1186#define GEO_NODE_MESH_PRIMITIVE_LINE 1038
1187#define GEO_NODE_MESH_PRIMITIVE_GRID 1039
1188#define GEO_NODE_BOUNDING_BOX 1042
1189#define GEO_NODE_SWITCH 1043
1190#define GEO_NODE_CURVE_TO_MESH 1045
1191#define GEO_NODE_RESAMPLE_CURVE 1047
1192#define GEO_NODE_INPUT_MATERIAL 1050
1193#define GEO_NODE_REPLACE_MATERIAL 1051
1194#define GEO_NODE_CURVE_LENGTH 1054
1195#define GEO_NODE_CONVEX_HULL 1056
1196#define GEO_NODE_SEPARATE_COMPONENTS 1059
1197#define GEO_NODE_CURVE_PRIMITIVE_STAR 1062
1198#define GEO_NODE_CURVE_PRIMITIVE_SPIRAL 1063
1199#define GEO_NODE_CURVE_PRIMITIVE_QUADRATIC_BEZIER 1064
1200#define GEO_NODE_CURVE_PRIMITIVE_BEZIER_SEGMENT 1065
1201#define GEO_NODE_CURVE_PRIMITIVE_CIRCLE 1066
1202#define GEO_NODE_VIEWER 1067
1203#define GEO_NODE_CURVE_PRIMITIVE_LINE 1068
1204#define GEO_NODE_CURVE_PRIMITIVE_QUADRILATERAL 1070
1205#define GEO_NODE_TRIM_CURVE 1071
1206#define GEO_NODE_FILL_CURVE 1075
1207#define GEO_NODE_INPUT_POSITION 1076
1208#define GEO_NODE_SET_POSITION 1077
1209#define GEO_NODE_INPUT_INDEX 1078
1210#define GEO_NODE_INPUT_NORMAL 1079
1211#define GEO_NODE_CAPTURE_ATTRIBUTE 1080
1212#define GEO_NODE_MATERIAL_SELECTION 1081
1213#define GEO_NODE_SET_MATERIAL 1082
1214#define GEO_NODE_REALIZE_INSTANCES 1083
1215#define GEO_NODE_ATTRIBUTE_STATISTIC 1084
1216#define GEO_NODE_SAMPLE_CURVE 1085
1217#define GEO_NODE_INPUT_TANGENT 1086
1218#define GEO_NODE_STRING_JOIN 1087
1219#define GEO_NODE_CURVE_SPLINE_PARAMETER 1088
1220#define GEO_NODE_FILLET_CURVE 1089
1221#define GEO_NODE_DISTRIBUTE_POINTS_ON_FACES 1090
1222#define GEO_NODE_STRING_TO_CURVES 1091
1223#define GEO_NODE_INSTANCE_ON_POINTS 1092
1224#define GEO_NODE_MESH_TO_POINTS 1093
1225#define GEO_NODE_POINTS_TO_VERTICES 1094
1226#define GEO_NODE_REVERSE_CURVE 1095
1227#define GEO_NODE_PROXIMITY 1096
1228#define GEO_NODE_SUBDIVIDE_CURVE 1097
1229#define GEO_NODE_INPUT_SPLINE_LENGTH 1098
1230#define GEO_NODE_CURVE_SPLINE_TYPE 1099
1231#define GEO_NODE_CURVE_SET_HANDLE_TYPE 1100
1232#define GEO_NODE_POINTS_TO_VOLUME 1101
1233#define GEO_NODE_CURVE_HANDLE_TYPE_SELECTION 1102
1234#define GEO_NODE_DELETE_GEOMETRY 1103
1235#define GEO_NODE_SEPARATE_GEOMETRY 1104
1236#define GEO_NODE_INPUT_RADIUS 1105
1237#define GEO_NODE_INPUT_CURVE_TILT 1106
1238#define GEO_NODE_INPUT_CURVE_HANDLES 1107
1239#define GEO_NODE_INPUT_FACE_SMOOTH 1108
1240#define GEO_NODE_INPUT_SPLINE_RESOLUTION 1109
1241#define GEO_NODE_INPUT_SPLINE_CYCLIC 1110
1242#define GEO_NODE_SET_CURVE_RADIUS 1111
1243#define GEO_NODE_SET_CURVE_TILT 1112
1244#define GEO_NODE_SET_CURVE_HANDLES 1113
1245#define GEO_NODE_SET_SHADE_SMOOTH 1114
1246#define GEO_NODE_SET_SPLINE_RESOLUTION 1115
1247#define GEO_NODE_SET_SPLINE_CYCLIC 1116
1248#define GEO_NODE_SET_POINT_RADIUS 1117
1249#define GEO_NODE_INPUT_MATERIAL_INDEX 1118
1250#define GEO_NODE_SET_MATERIAL_INDEX 1119
1251#define GEO_NODE_TRANSLATE_INSTANCES 1120
1252#define GEO_NODE_SCALE_INSTANCES 1121
1253#define GEO_NODE_ROTATE_INSTANCES 1122
1254#define GEO_NODE_SPLIT_EDGES 1123
1255#define GEO_NODE_MESH_TO_CURVE 1124
1256#define GEO_NODE_TRANSFER_ATTRIBUTE_DEPRECATED 1125
1257#define GEO_NODE_SUBDIVISION_SURFACE 1126
1258#define GEO_NODE_CURVE_ENDPOINT_SELECTION 1127
1259#define GEO_NODE_RAYCAST 1128
1260#define GEO_NODE_CURVE_TO_POINTS 1130
1261#define GEO_NODE_INSTANCES_TO_POINTS 1131
1262#define GEO_NODE_IMAGE_TEXTURE 1132
1263#define GEO_NODE_VOLUME_TO_MESH 1133
1264#define GEO_NODE_INPUT_ID 1134
1265#define GEO_NODE_SET_ID 1135
1266#define GEO_NODE_ATTRIBUTE_DOMAIN_SIZE 1136
1267#define GEO_NODE_DUAL_MESH 1137
1268#define GEO_NODE_INPUT_MESH_EDGE_VERTICES 1138
1269#define GEO_NODE_INPUT_MESH_FACE_AREA 1139
1270#define GEO_NODE_INPUT_MESH_FACE_NEIGHBORS 1140
1271#define GEO_NODE_INPUT_MESH_VERTEX_NEIGHBORS 1141
1272#define GEO_NODE_GEOMETRY_TO_INSTANCE 1142
1273#define GEO_NODE_INPUT_MESH_EDGE_NEIGHBORS 1143
1274#define GEO_NODE_INPUT_MESH_ISLAND 1144
1275#define GEO_NODE_INPUT_SCENE_TIME 1145
1276#define GEO_NODE_ACCUMULATE_FIELD 1146
1277#define GEO_NODE_INPUT_MESH_EDGE_ANGLE 1147
1278#define GEO_NODE_EVALUATE_AT_INDEX 1148
1279#define GEO_NODE_CURVE_PRIMITIVE_ARC 1149
1280#define GEO_NODE_FLIP_FACES 1150
1281#define GEO_NODE_SCALE_ELEMENTS 1151
1282#define GEO_NODE_EXTRUDE_MESH 1152
1283#define GEO_NODE_MERGE_BY_DISTANCE 1153
1284#define GEO_NODE_DUPLICATE_ELEMENTS 1154
1285#define GEO_NODE_INPUT_MESH_FACE_IS_PLANAR 1155
1286#define GEO_NODE_STORE_NAMED_ATTRIBUTE 1156
1287#define GEO_NODE_INPUT_NAMED_ATTRIBUTE 1157
1288#define GEO_NODE_REMOVE_ATTRIBUTE 1158
1289#define GEO_NODE_INPUT_INSTANCE_ROTATION 1159
1290#define GEO_NODE_INPUT_INSTANCE_SCALE 1160
1291#define GEO_NODE_VOLUME_CUBE 1161
1292#define GEO_NODE_POINTS 1162
1293#define GEO_NODE_EVALUATE_ON_DOMAIN 1163
1294#define GEO_NODE_MESH_TO_VOLUME 1164
1295#define GEO_NODE_UV_UNWRAP 1165
1296#define GEO_NODE_UV_PACK_ISLANDS 1166
1297#define GEO_NODE_DEFORM_CURVES_ON_SURFACE 1167
1298#define GEO_NODE_INPUT_SHORTEST_EDGE_PATHS 1168
1299#define GEO_NODE_EDGE_PATHS_TO_CURVES 1169
1300#define GEO_NODE_EDGE_PATHS_TO_SELECTION 1170
1301#define GEO_NODE_MESH_FACE_GROUP_BOUNDARIES 1171
1302#define GEO_NODE_DISTRIBUTE_POINTS_IN_VOLUME 1172
1303#define GEO_NODE_SELF_OBJECT 1173
1304#define GEO_NODE_SAMPLE_INDEX 1174
1305#define GEO_NODE_SAMPLE_NEAREST 1175
1306#define GEO_NODE_SAMPLE_NEAREST_SURFACE 1176
1307#define GEO_NODE_OFFSET_POINT_IN_CURVE 1177
1308#define GEO_NODE_CURVE_TOPOLOGY_CURVE_OF_POINT 1178
1309#define GEO_NODE_CURVE_TOPOLOGY_POINTS_OF_CURVE 1179
1310#define GEO_NODE_MESH_TOPOLOGY_OFFSET_CORNER_IN_FACE 1180
1311#define GEO_NODE_MESH_TOPOLOGY_CORNERS_OF_FACE 1181
1312#define GEO_NODE_MESH_TOPOLOGY_CORNERS_OF_VERTEX 1182
1313#define GEO_NODE_MESH_TOPOLOGY_EDGES_OF_CORNER 1183
1314#define GEO_NODE_MESH_TOPOLOGY_EDGES_OF_VERTEX 1184
1315#define GEO_NODE_MESH_TOPOLOGY_FACE_OF_CORNER 1185
1316#define GEO_NODE_MESH_TOPOLOGY_VERTEX_OF_CORNER 1186
1317#define GEO_NODE_SAMPLE_UV_SURFACE 1187
1318#define GEO_NODE_SET_CURVE_NORMAL 1188
1319#define GEO_NODE_IMAGE_INFO 1189
1320#define GEO_NODE_BLUR_ATTRIBUTE 1190
1321#define GEO_NODE_IMAGE 1191
1322#define GEO_NODE_INTERPOLATE_CURVES 1192
1323#define GEO_NODE_EDGES_TO_FACE_GROUPS 1193
1329#define GEO_NODE_INDEX_OF_NEAREST 1199
1331#define GEO_NODE_SIMULATION_INPUT 2100
1332#define GEO_NODE_SIMULATION_OUTPUT 2101
1335#define GEO_NODE_MESH_TOPOLOGY_CORNERS_OF_EDGE 2104
1338#define GEO_NODE_REPEAT_INPUT 2107
1339#define GEO_NODE_REPEAT_OUTPUT 2108
1340#define GEO_NODE_TOOL_SELECTION 2109
1341#define GEO_NODE_TOOL_SET_SELECTION 2110
1342#define GEO_NODE_TOOL_3D_CURSOR 2111
1343#define GEO_NODE_TOOL_FACE_SET 2112
1344#define GEO_NODE_TOOL_SET_FACE_SET 2113
1345#define GEO_NODE_POINTS_TO_CURVES 2114
1346#define GEO_NODE_INPUT_EDGE_SMOOTH 2115
1347#define GEO_NODE_SPLIT_TO_INSTANCES 2116
1348#define GEO_NODE_INPUT_NAMED_LAYER_SELECTION 2117
1349#define GEO_NODE_INDEX_SWITCH 2118
1350#define GEO_NODE_INPUT_ACTIVE_CAMERA 2119
1351#define GEO_NODE_BAKE 2120
1352#define GEO_NODE_GET_NAMED_GRID 2121
1353#define GEO_NODE_STORE_NAMED_GRID 2122
1354#define GEO_NODE_SORT_ELEMENTS 2123
1355#define GEO_NODE_MENU_SWITCH 2124
1356#define GEO_NODE_SAMPLE_GRID 2125
1357#define GEO_NODE_MESH_TO_DENSITY_GRID 2126
1358#define GEO_NODE_MESH_TO_SDF_GRID 2127
1359#define GEO_NODE_POINTS_TO_SDF_GRID 2128
1360#define GEO_NODE_GRID_TO_MESH 2129
1361#define GEO_NODE_DISTRIBUTE_POINTS_IN_GRID 2130
1362#define GEO_NODE_SDF_GRID_BOOLEAN 2131
1363#define GEO_NODE_TOOL_VIEWPORT_TRANSFORM 2132
1364#define GEO_NODE_TOOL_MOUSE_POSITION 2133
1365#define GEO_NODE_SAMPLE_GRID_INDEX 2134
1366#define GEO_NODE_TOOL_ACTIVE_ELEMENT 2135
1367#define GEO_NODE_SET_INSTANCE_TRANSFORM 2136
1368#define GEO_NODE_INPUT_INSTANCE_TRANSFORM 2137
1369#define GEO_NODE_IMPORT_STL 2138
1370#define GEO_NODE_IMPORT_OBJ 2139
1371#define GEO_NODE_SET_GEOMETRY_NAME 2140
1372#define GEO_NODE_GIZMO_LINEAR 2141
1373#define GEO_NODE_GIZMO_DIAL 2142
1374#define GEO_NODE_GIZMO_TRANSFORM 2143
1375#define GEO_NODE_CURVES_TO_GREASE_PENCIL 2144
1376#define GEO_NODE_GREASE_PENCIL_TO_CURVES 2145
1377#define GEO_NODE_IMPORT_PLY 2146
1378#define GEO_NODE_WARNING 2147
1379#define GEO_NODE_FOREACH_GEOMETRY_ELEMENT_INPUT 2148
1380#define GEO_NODE_FOREACH_GEOMETRY_ELEMENT_OUTPUT 2149
1381#define GEO_NODE_MERGE_LAYERS 2150
1389#define FN_NODE_BOOLEAN_MATH 1200
1390#define FN_NODE_COMPARE 1202
1391#define FN_NODE_LEGACY_RANDOM_FLOAT 1206
1392#define FN_NODE_INPUT_VECTOR 1207
1393#define FN_NODE_INPUT_STRING 1208
1394#define FN_NODE_FLOAT_TO_INT 1209
1395#define FN_NODE_VALUE_TO_STRING 1210
1396#define FN_NODE_STRING_LENGTH 1211
1397#define FN_NODE_SLICE_STRING 1212
1398#define FN_NODE_INPUT_SPECIAL_CHARACTERS 1213
1399#define FN_NODE_RANDOM_VALUE 1214
1400#define FN_NODE_ROTATE_EULER 1215
1401#define FN_NODE_ALIGN_EULER_TO_VECTOR 1216
1402#define FN_NODE_INPUT_COLOR 1217
1403#define FN_NODE_REPLACE_STRING 1218
1404#define FN_NODE_INPUT_BOOL 1219
1405#define FN_NODE_INPUT_INT 1220
1406#define FN_NODE_SEPARATE_COLOR 1221
1407#define FN_NODE_COMBINE_COLOR 1222
1408#define FN_NODE_AXIS_ANGLE_TO_ROTATION 1223
1409#define FN_NODE_EULER_TO_ROTATION 1224
1410#define FN_NODE_QUATERNION_TO_ROTATION 1225
1411#define FN_NODE_ROTATION_TO_AXIS_ANGLE 1226
1412#define FN_NODE_ROTATION_TO_EULER 1227
1413#define FN_NODE_ROTATION_TO_QUATERNION 1228
1414#define FN_NODE_ROTATE_VECTOR 1229
1415#define FN_NODE_ROTATE_ROTATION 1230
1416#define FN_NODE_INVERT_ROTATION 1231
1417#define FN_NODE_TRANSFORM_POINT 1232
1418#define FN_NODE_TRANSFORM_DIRECTION 1233
1419#define FN_NODE_MATRIX_MULTIPLY 1234
1420#define FN_NODE_COMBINE_TRANSFORM 1235
1421#define FN_NODE_SEPARATE_TRANSFORM 1236
1422#define FN_NODE_INVERT_MATRIX 1237
1423#define FN_NODE_TRANSPOSE_MATRIX 1238
1424#define FN_NODE_PROJECT_POINT 1239
1425#define FN_NODE_ALIGN_ROTATION_TO_VECTOR 1240
1426#define FN_NODE_COMBINE_MATRIX 1241
1427#define FN_NODE_SEPARATE_MATRIX 1242
1428#define FN_NODE_INPUT_ROTATION 1243
1429#define FN_NODE_AXES_TO_ROTATION 1244
1430#define FN_NODE_HASH_VALUE 1245
1431#define FN_NODE_INTEGER_MATH 1246
1432#define FN_NODE_MATRIX_DETERMINANT 1247
1442 const char *idname);
1505 const bNode &node_src,
1553 const bNode *to_node,
1572 const bNode *node_start,
1573 bool (*callback)(
bNode *,
bNode *,
void *,
const bool),
1592 const bNode *node_start,
1678#define NODE_INSTANCE_HASH_ITER(iter_, hash_) \
1679 for (blender::bke::node_instance_hash_iterator_init(&iter_, hash_); \
1680 blender::bke::node_instance_hash_iterator_done(&iter_) == false; \
1681 blender::bke::node_instance_hash_iterator_step(&iter_))
1687 bNodeInstanceHash *previews,
bNodeInstanceKey key,
int xsize,
int ysize,
bool create);
1778 return const_cast<int &
>(
1799#define NODE_STORAGE_FUNCS(StorageT) \
1800 [[maybe_unused]] static StorageT &node_storage(bNode &node) \
1802 return *static_cast<StorageT *>(node.storage); \
1804 [[maybe_unused]] static const StorageT &node_storage(const bNode &node) \
1806 return *static_cast<const StorageT *>(node.storage); \
constexpr int GROUP_NODE_MIN_WIDTH
constexpr int GROUP_NODE_DEFAULT_WIDTH
constexpr int GROUP_NODE_MAX_WIDTH
constexpr int NODE_DEFAULT_MAX_WIDTH
BLI_INLINE void * BLI_ghashIterator_getKey(GHashIterator *ghi) ATTR_WARN_UNUSED_RESULT
void BLI_ghashIterator_step(GHashIterator *ghi)
void BLI_ghashIterator_free(GHashIterator *ghi)
BLI_INLINE void * BLI_ghashIterator_getValue(GHashIterator *ghi) ATTR_WARN_UNUSED_RESULT
GHashIterator * BLI_ghashIterator_new(GHash *gh) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void BLI_ghashIterator_init(GHashIterator *ghi, GHash *gh)
BLI_INLINE bool BLI_ghashIterator_done(const GHashIterator *ghi) ATTR_WARN_UNUSED_RESULT
These structs are the foundation for all linked lists in the library system.
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Map
int main(int argc, char *argv[])
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
const bNode * get_corresponding_input(const bNodeTree &tree, const bNode &output_bnode) const
virtual const int & get_corresponding_output_id(const bNode &input_bnode) const =0
virtual ~bNodeZoneType()=default
const bNode * get_corresponding_output(const bNodeTree &tree, const bNode &input_bnode) const
std::string output_idname
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
ccl_device_inline float4 select(const int4 mask, const float4 a, const float4 b)
bNode * node_get_active_texture(bNodeTree *ntree)
int node_instance_hash_haskey(bNodeInstanceHash *hash, bNodeInstanceKey key)
void node_tree_set_output(bNodeTree *ntree)
void(*)(const void *socket_value, void *r_value) SocketGetGeometryNodesCPPValueFunction
bNodeSocket * node_find_enabled_input_socket(bNode &node, StringRef name)
void node_instance_hash_tag(bNodeInstanceHash *hash, void *value)
bool node_is_parent_and_child(const bNode *parent, const bNode *child)
bNodePreview * node_preview_copy(bNodePreview *preview)
int node_instance_hash_size(bNodeInstanceHash *hash)
bNodeTree * node_tree_copy_tree_ex(const bNodeTree *ntree, Main *bmain, bool do_id_user)
void node_socket_declarations_update(bNode *node)
void node_instance_hash_insert(bNodeInstanceHash *hash, bNodeInstanceKey key, void *value)
void(*)(blender::nodes::GatherAddNodeSearchParams ¶ms) NodeGatherAddOperationsFunction
const bNodeZoneType * zone_type_by_node_type(const int node_type)
void node_modify_socket_type_static(bNodeTree *ntree, bNode *node, bNodeSocket *sock, int type, int subtype)
bNodeSocketType NodeSocketTypeUndefined
std::optional< eNodeSocketDatatype > geo_nodes_base_cpp_type_to_socket_type(const CPPType &type)
void(*)(const void *socket_value, void *r_value) SocketGetCPPValueFunction
float2 node_to_view(const bNode *node, float2 loc)
void node_tree_remove_layer_n(bNodeTree *ntree, Scene *scene, int layer_index)
void node_attach_node(bNodeTree *ntree, bNode *node, bNode *parent)
void node_unlink_node(bNodeTree *ntree, bNode *node)
bool node_supports_active_flag(const bNode *node, int sub_active)
Does the given node supports the sub active flag.
void node_register_alias(bNodeType *nt, const char *alias)
void node_tree_blend_read_data(BlendDataReader *reader, ID *owner_id, bNodeTree *ntree)
bool node_type_is_undefined(const bNode *node)
void node_set_active(bNodeTree *ntree, bNode *node)
void node_detach_node(bNodeTree *ntree, bNode *node)
blender::realtime_compositor::ShaderNode *(*)(blender::nodes::DNode node) NodeGetCompositorShaderNodeFunction
const char * node_type_find_alias(const char *idname)
bool node_declaration_ensure_on_outdated_node(bNodeTree *ntree, bNode *node)
void node_tree_free_local_tree(bNodeTree *ntree)
bool node_socket_is_registered(const bNodeSocket *sock)
bool node_link_is_hidden(const bNodeLink *link)
int node_instance_hash_remove(bNodeInstanceHash *hash, bNodeInstanceKey key, bNodeInstanceValueFP valfreefp)
void * node_instance_hash_lookup(bNodeInstanceHash *hash, bNodeInstanceKey key)
const char * node_socket_sub_type_label(int subtype)
void *(*)(bNodeExecContext *context, bNode *node, bNodeInstanceKey key) NodeInitExecFunction
BLI_INLINE bNodeInstanceHashIterator * node_instance_hash_iterator_new(bNodeInstanceHash *hash)
void node_remove_socket_links(bNodeTree *ntree, bNodeSocket *sock)
void node_unregister_socket_type(bNodeSocketType *stype)
std::optional< VolumeGridType > socket_type_to_grid_type(eNodeSocketDatatype type)
BLI_INLINE bool node_instance_hash_iterator_done(bNodeInstanceHashIterator *iter)
bNodeTree * node_tree_copy_tree(Main *bmain, const bNodeTree *ntree)
bNodeTree * node_tree_add_in_lib(Main *bmain, Library *owner_library, const char *name, const char *idname)
bool node_tree_iterator_step(NodeTreeIterStore *ntreeiter, bNodeTree **r_nodetree, ID **r_id)
bNodeTree * node_tree_localize(bNodeTree *ntree, ID *new_owner_id)
void node_tree_blend_write(BlendWriter *writer, bNodeTree *ntree)
bNode * node_add_static_node(const bContext *C, bNodeTree *ntree, int type)
void node_remove_node(Main *bmain, bNodeTree *ntree, bNode *node, bool do_id_user)
void node_update_asset_metadata(bNodeTree &node_tree)
bool node_preview_used(const bNode *node)
void node_preview_free(bNodePreview *preview)
bool node_is_connected_to_output(const bNodeTree *ntree, const bNode *node)
void(*)(blender::nodes::GeoNodeExecParams params) NodeGeometryExecFunction
bool node_group_poll(const bNodeTree *nodetree, const bNodeTree *grouptree, const char **r_disabled_hint)
void node_internal_relink(bNodeTree *ntree, bNode *node)
GHashIterator * node_type_get_iterator()
void node_position_relative(bNode *from_node, const bNode *to_node, const bNodeSocket *from_sock, const bNodeSocket *to_sock)
bNode * node_get_active_paint_canvas(bNodeTree *ntree)
bNode * node_copy_with_mapping(bNodeTree *dst_tree, const bNode &node_src, int flag, bool use_unique, Map< const bNodeSocket *, bNodeSocket * > &new_socket_map)
void node_tree_set_type(const bContext *C, bNodeTree *ntree)
BLI_INLINE void node_instance_hash_iterator_step(bNodeInstanceHashIterator *iter)
Span< int > all_zone_output_node_types()
void(*)(blender::nodes::NodeExtraInfoParams ¶ms) NodeExtraInfoFunction
void node_link_set_mute(bNodeTree *ntree, bNodeLink *link, const bool muted)
bNode * node_copy(bNodeTree *dst_tree, const bNode &src_node, int flag, bool use_unique)
void node_tree_update_all_new(Main *main)
bNodeLink * node_add_link(bNodeTree *ntree, bNode *fromnode, bNodeSocket *fromsock, bNode *tonode, bNodeSocket *tosock)
void node_type_size_preset(bNodeType *ntype, eNodeSizePreset size)
void nodeLabel(const bNodeTree *ntree, const bNode *node, char *label, int maxlen)
bNodeSocket * node_add_static_socket(bNodeTree *ntree, bNode *node, eNodeSocketInOut in_out, int type, int subtype, const char *identifier, const char *name)
bool node_find_node_try(bNodeTree *ntree, bNodeSocket *sock, bNode **r_node, int *r_sockindex)
bNode * node_find_root_parent(bNode *node)
void node_tree_node_flag_set(const bNodeTree *ntree, int flag, bool enable)
blender::realtime_compositor::NodeOperation *(*)(blender::realtime_compositor::Context &context, blender::nodes::DNode node) NodeGetCompositorOperationFunction
void node_instance_hash_remove_untagged(bNodeInstanceHash *hash, bNodeInstanceValueFP valfreefp)
void node_chain_iterator_backwards(const bNodeTree *ntree, const bNode *node_start, bool(*callback)(bNode *, bNode *, void *), void *userdata, int recursion_lvl)
void node_chain_iterator(const bNodeTree *ntree, const bNode *node_start, bool(*callback)(bNode *, bNode *, void *, const bool), void *userdata, bool reversed)
int(*)( GPUMaterial *mat, bNode *node, bNodeExecData *execdata, GPUNodeStack *in, GPUNodeStack *out) NodeGPUExecFunction
void node_tree_type_free_link(const bNodeTreeType *nt)
void node_tree_local_merge(Main *bmain, bNodeTree *localtree, bNodeTree *ntree)
bNodeTree * node_tree_add_tree(Main *bmain, const char *name, const char *idname)
BLI_INLINE void * node_instance_hash_iterator_get_value(bNodeInstanceHashIterator *iter)
bool node_instance_hash_tag_key(bNodeInstanceHash *hash, bNodeInstanceKey key)
bNode * node_get_active(bNodeTree *ntree)
bool node_is_static_socket_type(const bNodeSocketType *stype)
GHashIterator bNodeInstanceHashIterator
void(*)(blender::nodes::NodeDeclarationBuilder &builder) NodeDeclareFunction
void node_tree_iterator_init(NodeTreeIterStore *ntreeiter, Main *bmain)
const char * nodeSocketShortLabel(const bNodeSocket *sock)
void node_instance_hash_clear_tags(bNodeInstanceHash *hash)
std::optional< eNodeSocketDatatype > grid_type_to_socket_type(VolumeGridType type)
bNodeType * node_type_find(const char *idname)
void node_node_foreach_id(bNode *node, LibraryForeachIDData *data)
bNodeTreeType NodeTreeTypeUndefined
void(*)(void *calldata, int nclass, const char *name) bNodeClassCallback
BLI_INLINE void node_instance_hash_iterator_init(bNodeInstanceHashIterator *iter, bNodeInstanceHash *hash)
bNode * node_add_node(const bContext *C, bNodeTree *ntree, const char *idname)
bNodeTree ** node_tree_ptr_from_id(ID *id)
void node_parents_iterator(bNode *node, bool(*callback)(bNode *, void *), void *userdata)
bool node_link_is_selected(const bNodeLink *link)
bNodeSocketType * node_socket_type_find(const char *idname)
void node_rebuild_id_vector(bNodeTree *node_tree)
void node_position_propagate(bNode *node)
const char * node_socket_type_label(const bNodeSocketType *stype)
void(*)(void *data, bNode *node, bNodeSocket *out) NodeMaterialXFunction
void node_tree_type_add(bNodeTreeType *nt)
const bNodeInstanceKey NODE_INSTANCE_KEY_BASE
std::optional< eNodeSocketDatatype > custom_data_type_to_socket_type(eCustomDataType type)
bNodeTree * node_tree_add_tree_embedded(Main *bmain, ID *owner_id, const char *name, const char *idname)
void node_preview_remove_unused(bNodeTree *ntree)
void node_instance_hash_clear(bNodeInstanceHash *hash, bNodeInstanceValueFP valfreefp)
bool node_is_dangling_reroute(const bNodeTree *ntree, const bNode *node)
bNodeType NodeTypeUndefined
void node_type_socket_templates(bNodeType *ntype, bNodeSocketTemplate *inputs, bNodeSocketTemplate *outputs)
bNodeInstanceKey node_instance_key(bNodeInstanceKey parent_key, const bNodeTree *ntree, const bNode *node)
void node_remove_socket(bNodeTree *ntree, bNode *node, bNodeSocket *sock)
void node_find_node(bNodeTree *ntree, bNodeSocket *sock, bNode **r_node, int *r_sockindex)
void node_register_socket_type(bNodeSocketType *stype)
void node_remove_link(bNodeTree *ntree, bNodeLink *link)
const char * node_static_socket_type(int type, int subtype)
void node_preview_merge_tree(bNodeTree *to_ntree, bNodeTree *from_ntree, bool remove_old)
void node_tree_free_tree(bNodeTree *ntree)
void node_set_socket_availability(bNodeTree *ntree, bNodeSocket *sock, bool is_available)
void node_type_size(bNodeType *ntype, int width, int minwidth, int maxwidth)
GHashIterator * node_tree_type_get_iterator()
bNodeSocket * node_find_enabled_output_socket(bNode &node, StringRef name)
bNodeSocket * node_add_socket(bNodeTree *ntree, bNode *node, eNodeSocketInOut in_out, const char *idname, const char *identifier, const char *name)
const CPPType * socket_type_to_geo_nodes_base_cpp_type(eNodeSocketDatatype type)
Span< const bNodeZoneType * > all_zone_types()
void(*)(blender::nodes::GatherLinkSearchOpParams ¶ms) NodeGatherSocketLinkOperationsFunction
void node_type_storage(bNodeType *ntype, const char *storagename, void(*freefunc)(bNode *node), void(*copyfunc)(bNodeTree *dest_ntree, bNode *dest_node, const bNode *src_node))
void node_tree_free_local_node(bNodeTree *ntree, bNode *node)
BLI_INLINE bNodeInstanceKey node_instance_hash_iterator_get_key(bNodeInstanceHashIterator *iter)
bool node_set_selected(bNode *node, bool select)
void node_preview_init_tree(bNodeTree *ntree, int xsize, int ysize)
Span< int > all_zone_node_types()
void node_internal_links(bNode *node, bNodeLink **r_links, int *r_len)
void node_clear_active(bNodeTree *ntree)
void register_node_zone_type(const bNodeZoneType &zone_type)
bNodeSocket * node_find_enabled_socket(bNode &node, eNodeSocketInOut in_out, StringRef name)
void(*)(const bNodeTree &tree, const bNode &node, blender::nodes::NodeDeclarationBuilder &builder) NodeDeclareDynamicFunction
const char * node_static_socket_label(int type, int subtype)
Span< int > all_zone_input_node_types()
BLI_INLINE void node_instance_hash_iterator_free(bNodeInstanceHashIterator *iter)
void node_unregister_type(bNodeType *ntype)
void node_tag_update_id(bNode *node)
void node_register_type(bNodeType *ntype)
void(*)(blender::nodes::value_elem::ElemEvalParams ¶ms) NodeElemEvalFunction
void * node_instance_hash_pop(bNodeInstanceHash *hash, bNodeInstanceKey key)
bool node_tree_contains_tree(const bNodeTree *tree_to_search_in, const bNodeTree *tree_to_search_for)
int node_socket_link_limit(const bNodeSocket *sock)
void(*)(blender::nodes::inverse_eval::InverseEvalParams ¶ms) NodeInverseEvalFunction
void node_instance_hash_free(bNodeInstanceHash *hash, bNodeInstanceValueFP valfreefp)
void(*)(blender::nodes::NodeMultiFunctionBuilder &builder) NodeMultiFunctionBuildFunction
const char * nodeSocketLabel(const bNodeSocket *sock)
void(*)( void *data, int thread, bNode *, bNodeExecData *execdata, bNodeStack **in, bNodeStack **out) NodeExecFunction
bNodePreview * node_preview_verify(bNodeInstanceHash *previews, bNodeInstanceKey key, int xsize, int ysize, bool create)
void(*)(void *value) bNodeInstanceValueFP
GHashIterator * node_socket_type_get_iterator()
bool node_declaration_ensure(bNodeTree *ntree, bNode *node)
bNodeTreeType * node_tree_type_find(const char *idname)
void node_unique_id(bNodeTree *ntree, bNode *node)
void node_type_base(bNodeType *ntype, int type, const char *name, short nclass)
int node_count_socket_links(const bNodeTree *ntree, const bNodeSocket *sock)
void(*)(void *nodedata) NodeFreeExecFunction
void node_free_node(bNodeTree *tree, bNode *node)
void node_type_base_custom(bNodeType *ntype, const char *idname, const char *name, const char *enum_name, short nclass)
const bNodeInstanceKey NODE_INSTANCE_KEY_NONE
void(*)(blender::nodes::value_elem::InverseElemEvalParams ¶ms) NodeInverseElemEvalFunction
bNodeInstanceHash * node_instance_hash_new(const char *info)
void node_remove_socket_ex(bNodeTree *ntree, bNode *node, bNodeSocket *sock, bool do_id_user)
const char * node_static_socket_interface_type_new(int type, int subtype)
void node_socket_move_default_value(Main &bmain, bNodeTree &tree, bNodeSocket &src, bNodeSocket &dst)
bNodeTree * node_tree_from_id(ID *id)
void node_tree_update_all_users(Main *main, ID *id)
float2 node_from_view(const bNode *node, float2 view_loc)
bNodeSocket * node_find_socket(bNode *node, eNodeSocketInOut in_out, StringRef identifier)
void node_dimensions_get(const bNode *node, float *r_width, float *r_height)
bNode * node_find_node_by_name(bNodeTree *ntree, const char *name)
void node_tree_free_embedded_tree(bNodeTree *ntree)
bool node_tree_is_registered(const bNodeTree *ntree)
std::optional< eCustomDataType > socket_type_to_custom_data_type(eNodeSocketDatatype type)
void node_modify_socket_type(bNodeTree *ntree, bNode *node, bNodeSocket *sock, const char *idname)
void node_unique_name(bNodeTree *ntree, bNode *node)
static blender::bke::bNodeSocketTemplate outputs[]
static blender::bke::bNodeSocketTemplate inputs[]
FreestyleLineStyle * linestyle
Compact definition of a node socket.
ExtensionRNA ext_interface
const blender::CPPType * geometry_nodes_cpp_type
SocketGetCPPValueFunction get_base_cpp_value
void(* interface_init_socket)(ID *id, const bNodeTreeInterfaceSocket *interface_socket, bNode *node, bNodeSocket *socket, const char *data_path)
void(* draw_color)(bContext *C, PointerRNA *ptr, PointerRNA *node_ptr, float *r_color)
void(* free_self)(bNodeSocketType *stype)
void(* draw_color_simple)(const bNodeSocketType *socket_type, float *r_color)
bool use_link_limits_of_type
void(* interface_draw)(ID *id, bNodeTreeInterfaceSocket *socket, bContext *C, uiLayout *layout)
void(* draw)(bContext *C, uiLayout *layout, PointerRNA *ptr, PointerRNA *node_ptr, const char *text)
const void * geometry_nodes_default_cpp_value
SocketGetGeometryNodesCPPValueFunction get_geometry_nodes_cpp_value
const blender::CPPType * base_cpp_type
void(* interface_from_socket)(ID *id, bNodeTreeInterfaceSocket *interface_socket, const bNode *node, const bNodeSocket *socket)
void(* update)(bNodeTree *ntree)
void(* foreach_nodeclass)(void *calldata, bNodeClassCallback func)
void(* node_add_init)(bNodeTree *ntree, bNode *bnode)
bool(* poll)(const bContext *C, bNodeTreeType *ntreetype)
void(* get_from_context)(const bContext *C, bNodeTreeType *ntreetype, bNodeTree **r_ntree, ID **r_id, ID **r_from)
void(* localize)(bNodeTree *localtree, bNodeTree *ntree)
void(* local_merge)(Main *bmain, bNodeTree *localtree, bNodeTree *ntree)
bool(* validate_link)(eNodeSocketDatatype from, eNodeSocketDatatype to)
bool(* valid_socket_type)(bNodeTreeType *ntreetype, bNodeSocketType *socket_type)
NodeInverseElemEvalFunction eval_inverse_elem
blender::nodes::NodeDeclaration * static_declaration
void(* freefunc_api)(PointerRNA *ptr)
void(* copyfunc)(bNodeTree *dest_ntree, bNode *dest_node, const bNode *src_node)
NodeMaterialXFunction materialx_fn
NodeFreeExecFunction free_exec_fn
NodeInverseEvalFunction eval_inverse
const char * realtime_compositor_unsupported_message
NodeGetCompositorOperationFunction get_compositor_operation
int(* ui_class)(const bNode *node)
bool(* add_ui_poll)(const bContext *C)
void(* freefunc)(bNode *node)
void(* initfunc)(bNodeTree *ntree, bNode *node)
bool(* poll_instance)(const bNode *node, const bNodeTree *nodetree, const char **r_disabled_hint)
bNodeSocketTemplate * inputs
void(* labelfunc)(const bNodeTree *ntree, const bNode *node, char *label, int label_maxncpy)
NodeGPUExecFunction gpu_fn
NodeElemEvalFunction eval_elem
void(* draw_backdrop)(SpaceNode *snode, ImBuf *backdrop, bNode *node, int x, int y)
void(* draw_buttons_ex)(uiLayout *, bContext *C, PointerRNA *ptr)
std::string(* ui_description_fn)(const bNode &node)
NodeMultiFunctionBuildFunction build_multi_function
NodeExtraInfoFunction get_extra_info
NodeGeometryExecFunction geometry_node_execute
const char * deprecation_notice
bNodeSocketTemplate * outputs
const char * enum_name_legacy
void(* draw_buttons)(uiLayout *, bContext *C, PointerRNA *ptr)
bool(* poll)(const bNodeType *ntype, const bNodeTree *nodetree, const char **r_disabled_hint)
NodeGatherSocketLinkOperationsFunction gather_link_search_ops
bool(* insert_link)(bNodeTree *ntree, bNode *node, bNodeLink *link)
void(* copyfunc_api)(PointerRNA *ptr, const bNode *src_node)
NodeDeclareFunction declare
void(* register_operators)()
void(* free_self)(bNodeType *ntype)
NodeInitExecFunction init_exec_fn
void(* group_update_func)(bNodeTree *ntree, bNode *node)
void(* updatefunc)(bNodeTree *ntree, bNode *node)
NodeGetCompositorShaderNodeFunction get_compositor_shader_node
void(* initfunc_api)(const bContext *C, PointerRNA *ptr)