52struct bNodeInstanceHash;
69class GatherAddNodeSearchParams;
76namespace inverse_eval {
80namespace realtime_compositor {
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__); \
641 StringRef identifier);
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,
1508 Map<const bNodeSocket *, bNodeSocket *> &new_socket_map);
1553 const bNode *to_node,
1572 const bNode *node_start,
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);
1719void node_type_base(bNodeType *ntype,
int type,
const char *name,
short nclass);
1722 bNodeSocketTemplate *inputs,
1723 bNodeSocketTemplate *outputs);
1725void node_type_size(bNodeType *ntype,
int width,
int minwidth,
int maxwidth);
1764class bNodeZoneType {
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
struct GHashIterator GHashIterator
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.
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
DEGForeachIDComponentCallback callback
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)
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)
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)